Add node for notes
This commit is contained in:
parent
67cfc4b572
commit
62460d58ab
|
|
@ -57,7 +57,7 @@
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
bookmarked() {
|
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
|
contentBlock: this.parent
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
bookmarkContent(id, bookmarked) {
|
bookmarkContent(uuid, bookmarked) {
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: UPDATE_CONTENT_BOOKMARK,
|
mutation: UPDATE_CONTENT_BOOKMARK,
|
||||||
variables: {
|
variables: {
|
||||||
input: {
|
input: {
|
||||||
id,
|
uuid,
|
||||||
contentBlock: this.parent,
|
contentBlock: this.parent,
|
||||||
bookmarked
|
bookmarked
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,13 @@ fragment ContentBlockParts on ContentBlockNode {
|
||||||
contents
|
contents
|
||||||
userCreated
|
userCreated
|
||||||
mine
|
mine
|
||||||
bookmarks
|
bookmarks {
|
||||||
|
uuid
|
||||||
|
note {
|
||||||
|
id
|
||||||
|
text
|
||||||
|
}
|
||||||
|
}
|
||||||
hiddenFor {
|
hiddenFor {
|
||||||
edges {
|
edges {
|
||||||
node {
|
node {
|
||||||
|
|
|
||||||
|
|
@ -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),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -6,6 +6,7 @@ from graphene_django.filter import DjangoFilterConnectionField
|
||||||
from api.utils import get_object
|
from api.utils import get_object
|
||||||
from books.utils import are_solutions_enabled_for
|
from books.utils import are_solutions_enabled_for
|
||||||
from notes.models import ContentBlockBookmark
|
from notes.models import ContentBlockBookmark
|
||||||
|
from notes.schema import ContentBlockBookmarkNode
|
||||||
from rooms.models import ModuleRoomSlug
|
from rooms.models import ModuleRoomSlug
|
||||||
from ..models import Book, Topic, Module, Chapter, ContentBlock
|
from ..models import Book, Topic, Module, Chapter, ContentBlock
|
||||||
|
|
||||||
|
|
@ -25,7 +26,7 @@ def process_module_room_slug_block(content):
|
||||||
|
|
||||||
class ContentBlockNode(DjangoObjectType):
|
class ContentBlockNode(DjangoObjectType):
|
||||||
mine = graphene.Boolean()
|
mine = graphene.Boolean()
|
||||||
bookmarks = graphene.List(graphene.String)
|
bookmarks = graphene.List(ContentBlockBookmarkNode)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ContentBlock
|
model = ContentBlock
|
||||||
|
|
@ -57,10 +58,10 @@ class ContentBlockNode(DjangoObjectType):
|
||||||
return self.contents
|
return self.contents
|
||||||
|
|
||||||
def resolve_bookmarks(self, info, **kwargs):
|
def resolve_bookmarks(self, info, **kwargs):
|
||||||
return [bookmark.id for bookmark in ContentBlockBookmark.objects.filter(
|
return ContentBlockBookmark.objects.filter(
|
||||||
user=info.context.user,
|
user=info.context.user,
|
||||||
content_block=self
|
content_block=self
|
||||||
)]
|
)
|
||||||
|
|
||||||
|
|
||||||
class ChapterNode(DjangoObjectType):
|
class ChapterNode(DjangoObjectType):
|
||||||
|
|
|
||||||
|
|
@ -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,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -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'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -10,7 +10,7 @@ class Note(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Bookmark(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)
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
note = models.OneToOneField(Note, null=True, on_delete=models.SET_NULL)
|
note = models.OneToOneField(Note, null=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
from notes.models import Note, ContentBlockBookmark
|
||||||
|
|
||||||
|
|
||||||
class NoteNode(DjangoObjectType):
|
class NoteNode(DjangoObjectType):
|
||||||
|
|
@ -14,3 +14,12 @@ class NoteNode(DjangoObjectType):
|
||||||
|
|
||||||
def resolve_pk(self, *args, **kwargs):
|
def resolve_pk(self, *args, **kwargs):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
|
class ContentBlockBookmarkNode(DjangoObjectType):
|
||||||
|
# note = graphene.
|
||||||
|
uuid = graphene.UUID()
|
||||||
|
note = graphene.Field(NoteNode)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ContentBlockBookmark
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue