Add bookmarks to instruments on server side
This commit is contained in:
parent
8765de9603
commit
c8a09badad
|
|
@ -4,10 +4,14 @@ from graphene_django import DjangoObjectType
|
||||||
from graphene_django.filter import DjangoFilterConnectionField
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
|
|
||||||
from api.utils import get_object
|
from api.utils import get_object
|
||||||
|
from notes.models import InstrumentBookmark
|
||||||
|
from notes.schema import InstrumentBookmarkNode
|
||||||
from .models import BasicKnowledge
|
from .models import BasicKnowledge
|
||||||
|
|
||||||
|
|
||||||
class BasicKnowledgeNode(DjangoObjectType):
|
class InstrumentNode(DjangoObjectType):
|
||||||
|
bookmarks = graphene.List(InstrumentBookmarkNode)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = BasicKnowledge
|
model = BasicKnowledge
|
||||||
filter_fields = ['slug', 'type']
|
filter_fields = ['slug', 'type']
|
||||||
|
|
@ -16,10 +20,16 @@ class BasicKnowledgeNode(DjangoObjectType):
|
||||||
'slug', 'title', 'type', 'contents',
|
'slug', 'title', 'type', 'contents',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def resolve_bookmarks(self, info, **kwargs):
|
||||||
|
return InstrumentBookmark.objects.filter(
|
||||||
|
user=info.context.user,
|
||||||
|
instrument=self
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class BasicKnowledgeQuery(object):
|
class BasicKnowledgeQuery(object):
|
||||||
instrument = graphene.Field(BasicKnowledgeNode, slug=graphene.String(), id=graphene.ID())
|
instrument = graphene.Field(InstrumentNode, slug=graphene.String(), id=graphene.ID())
|
||||||
instruments = DjangoFilterConnectionField(BasicKnowledgeNode)
|
instruments = DjangoFilterConnectionField(InstrumentNode)
|
||||||
|
|
||||||
def resolve_instrument(self, info, **kwargs):
|
def resolve_instrument(self, info, **kwargs):
|
||||||
slug = kwargs.get('slug')
|
slug = kwargs.get('slug')
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Generated by Django 2.0.6 on 2020-01-08 12:54
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('basicknowledge', '0004_auto_20191128_1601'),
|
||||||
|
('notes', '0002_chapterbookmark_modulebookmark'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='InstrumentBookmark',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('uuid', models.UUIDField(unique=True)),
|
||||||
|
('instrument', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='basicknowledge.BasicKnowledge')),
|
||||||
|
('note', models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='notes.Note')),
|
||||||
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -28,3 +28,7 @@ class ModuleBookmark(Bookmark):
|
||||||
|
|
||||||
class ChapterBookmark(Bookmark):
|
class ChapterBookmark(Bookmark):
|
||||||
chapter = models.ForeignKey('books.Chapter', on_delete=models.CASCADE)
|
chapter = models.ForeignKey('books.Chapter', on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
class InstrumentBookmark(Bookmark):
|
||||||
|
uuid = models.UUIDField(unique=True)
|
||||||
|
instrument = models.ForeignKey('basicknowledge.BasicKnowledge', on_delete=models.CASCADE)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import graphene
|
||||||
from graphene import relay
|
from graphene import relay
|
||||||
from graphene_django import DjangoObjectType
|
from graphene_django import DjangoObjectType
|
||||||
|
|
||||||
from notes.models import Note, ContentBlockBookmark, ModuleBookmark, ChapterBookmark
|
from notes.models import Note, ContentBlockBookmark, ModuleBookmark, ChapterBookmark, InstrumentBookmark
|
||||||
|
|
||||||
|
|
||||||
class NoteNode(DjangoObjectType):
|
class NoteNode(DjangoObjectType):
|
||||||
|
|
@ -17,7 +17,6 @@ class NoteNode(DjangoObjectType):
|
||||||
|
|
||||||
|
|
||||||
class ContentBlockBookmarkNode(DjangoObjectType):
|
class ContentBlockBookmarkNode(DjangoObjectType):
|
||||||
# note = graphene.
|
|
||||||
uuid = graphene.UUID()
|
uuid = graphene.UUID()
|
||||||
note = graphene.Field(NoteNode)
|
note = graphene.Field(NoteNode)
|
||||||
|
|
||||||
|
|
@ -41,3 +40,13 @@ class ChapterBookmarkNode(DjangoObjectType):
|
||||||
model = ChapterBookmark
|
model = ChapterBookmark
|
||||||
filter_fields = []
|
filter_fields = []
|
||||||
interfaces = (relay.Node,)
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
|
|
||||||
|
class InstrumentBookmarkNode(DjangoObjectType):
|
||||||
|
uuid = graphene.UUID()
|
||||||
|
note = graphene.Field(NoteNode)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = InstrumentBookmark
|
||||||
|
filter_fields = []
|
||||||
|
interfaces = (relay.Node,)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue