From 62460d58aba1ad2bd8d530f1f7f540dfd75d25ac Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Sat, 12 Oct 2019 08:51:28 +0200 Subject: [PATCH] Add node for notes --- .../content-blocks/ContentComponent.vue | 6 ++-- .../gql/fragments/contentBlockParts.gql | 8 ++++- .../migrations/0015_contentblock_bookmarks.py | 21 -------------- server/books/schema/queries.py | 7 +++-- server/notes/migrations/0001_initial.py | 29 ------------------- .../migrations/0002_auto_20191009_0919.py | 26 ----------------- server/notes/models.py | 2 +- server/notes/schema.py | 11 ++++++- 8 files changed, 25 insertions(+), 85 deletions(-) delete mode 100644 server/books/migrations/0015_contentblock_bookmarks.py delete mode 100644 server/notes/migrations/0001_initial.py delete mode 100644 server/notes/migrations/0002_auto_20191009_0919.py diff --git a/client/src/components/content-blocks/ContentComponent.vue b/client/src/components/content-blocks/ContentComponent.vue index 0977d3e6..c1a9555a 100644 --- a/client/src/components/content-blocks/ContentComponent.vue +++ b/client/src/components/content-blocks/ContentComponent.vue @@ -57,7 +57,7 @@ computed: { bookmarked() { - return this.bookmarks.indexOf(this.component.id) > -1; + return !!this.bookmarks.find(bookmark => bookmark.uuid === this.component.id); } }, @@ -68,12 +68,12 @@ contentBlock: this.parent }); }, - bookmarkContent(id, bookmarked) { + bookmarkContent(uuid, bookmarked) { this.$apollo.mutate({ mutation: UPDATE_CONTENT_BOOKMARK, variables: { input: { - id, + uuid, contentBlock: this.parent, bookmarked } diff --git a/client/src/graphql/gql/fragments/contentBlockParts.gql b/client/src/graphql/gql/fragments/contentBlockParts.gql index e5fff945..31b8489a 100644 --- a/client/src/graphql/gql/fragments/contentBlockParts.gql +++ b/client/src/graphql/gql/fragments/contentBlockParts.gql @@ -6,7 +6,13 @@ fragment ContentBlockParts on ContentBlockNode { contents userCreated mine - bookmarks + bookmarks { + uuid + note { + id + text + } + } hiddenFor { edges { node { diff --git a/server/books/migrations/0015_contentblock_bookmarks.py b/server/books/migrations/0015_contentblock_bookmarks.py deleted file mode 100644 index 6e3a1b18..00000000 --- a/server/books/migrations/0015_contentblock_bookmarks.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 2.0.6 on 2019-10-07 14:53 - -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('notes', '0001_initial'), - ('books', '0014_auto_20190912_1228'), - ] - - operations = [ - migrations.AddField( - model_name='contentblock', - name='bookmarks', - field=models.ManyToManyField(related_name='bookmarked_content_blocks', through='notes.ContentBlockBookmark', to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/server/books/schema/queries.py b/server/books/schema/queries.py index a8e73ee7..3ac6288b 100644 --- a/server/books/schema/queries.py +++ b/server/books/schema/queries.py @@ -6,6 +6,7 @@ from graphene_django.filter import DjangoFilterConnectionField from api.utils import get_object from books.utils import are_solutions_enabled_for from notes.models import ContentBlockBookmark +from notes.schema import ContentBlockBookmarkNode from rooms.models import ModuleRoomSlug from ..models import Book, Topic, Module, Chapter, ContentBlock @@ -25,7 +26,7 @@ def process_module_room_slug_block(content): class ContentBlockNode(DjangoObjectType): mine = graphene.Boolean() - bookmarks = graphene.List(graphene.String) + bookmarks = graphene.List(ContentBlockBookmarkNode) class Meta: model = ContentBlock @@ -57,10 +58,10 @@ class ContentBlockNode(DjangoObjectType): return self.contents def resolve_bookmarks(self, info, **kwargs): - return [bookmark.id for bookmark in ContentBlockBookmark.objects.filter( + return ContentBlockBookmark.objects.filter( user=info.context.user, content_block=self - )] + ) class ChapterNode(DjangoObjectType): diff --git a/server/notes/migrations/0001_initial.py b/server/notes/migrations/0001_initial.py deleted file mode 100644 index 61fdfc1f..00000000 --- a/server/notes/migrations/0001_initial.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.0.6 on 2019-10-07 14:53 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('books', '0014_auto_20190912_1228'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='ContentBlockBookmark', - fields=[ - ('id', models.UUIDField(primary_key=True, serialize=False)), - ('content_block', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.ContentBlock')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/server/notes/migrations/0002_auto_20191009_0919.py b/server/notes/migrations/0002_auto_20191009_0919.py deleted file mode 100644 index 50384cc4..00000000 --- a/server/notes/migrations/0002_auto_20191009_0919.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 2.0.6 on 2019-10-09 09:19 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('notes', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Note', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('text', models.TextField()), - ], - ), - migrations.AddField( - model_name='contentblockbookmark', - name='note', - field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='notes.Note'), - ), - ] diff --git a/server/notes/models.py b/server/notes/models.py index 87b1e4ab..0404c54d 100644 --- a/server/notes/models.py +++ b/server/notes/models.py @@ -10,7 +10,7 @@ class Note(models.Model): class Bookmark(models.Model): - id = models.UUIDField(primary_key=True) + uuid = models.UUIDField(unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE) note = models.OneToOneField(Note, null=True, on_delete=models.SET_NULL) diff --git a/server/notes/schema.py b/server/notes/schema.py index 241cf771..7c008951 100644 --- a/server/notes/schema.py +++ b/server/notes/schema.py @@ -2,7 +2,7 @@ import graphene from graphene import relay from graphene_django import DjangoObjectType -from notes.models import Note +from notes.models import Note, ContentBlockBookmark class NoteNode(DjangoObjectType): @@ -14,3 +14,12 @@ class NoteNode(DjangoObjectType): def resolve_pk(self, *args, **kwargs): return self.id + + +class ContentBlockBookmarkNode(DjangoObjectType): + # note = graphene. + uuid = graphene.UUID() + note = graphene.Field(NoteNode) + + class Meta: + model = ContentBlockBookmark