Add bookmarks to instruments on server side

This commit is contained in:
Ramon Wenger 2020-01-08 14:59:18 +01:00
parent 8765de9603
commit c8a09badad
4 changed files with 58 additions and 5 deletions

View File

@ -4,10 +4,14 @@ from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from api.utils import get_object
from notes.models import InstrumentBookmark
from notes.schema import InstrumentBookmarkNode
from .models import BasicKnowledge
class BasicKnowledgeNode(DjangoObjectType):
class InstrumentNode(DjangoObjectType):
bookmarks = graphene.List(InstrumentBookmarkNode)
class Meta:
model = BasicKnowledge
filter_fields = ['slug', 'type']
@ -16,10 +20,16 @@ class BasicKnowledgeNode(DjangoObjectType):
'slug', 'title', 'type', 'contents',
]
def resolve_bookmarks(self, info, **kwargs):
return InstrumentBookmark.objects.filter(
user=info.context.user,
instrument=self
)
class BasicKnowledgeQuery(object):
instrument = graphene.Field(BasicKnowledgeNode, slug=graphene.String(), id=graphene.ID())
instruments = DjangoFilterConnectionField(BasicKnowledgeNode)
instrument = graphene.Field(InstrumentNode, slug=graphene.String(), id=graphene.ID())
instruments = DjangoFilterConnectionField(InstrumentNode)
def resolve_instrument(self, info, **kwargs):
slug = kwargs.get('slug')

View File

@ -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,
},
),
]

View File

@ -28,3 +28,7 @@ class ModuleBookmark(Bookmark):
class ChapterBookmark(Bookmark):
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)

View File

@ -2,7 +2,7 @@ import graphene
from graphene import relay
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):
@ -17,7 +17,6 @@ class NoteNode(DjangoObjectType):
class ContentBlockBookmarkNode(DjangoObjectType):
# note = graphene.
uuid = graphene.UUID()
note = graphene.Field(NoteNode)
@ -41,3 +40,13 @@ class ChapterBookmarkNode(DjangoObjectType):
model = ChapterBookmark
filter_fields = []
interfaces = (relay.Node,)
class InstrumentBookmarkNode(DjangoObjectType):
uuid = graphene.UUID()
note = graphene.Field(NoteNode)
class Meta:
model = InstrumentBookmark
filter_fields = []
interfaces = (relay.Node,)