diff --git a/server/api/schema.py b/server/api/schema.py index acebb7e1..274a43b5 100644 --- a/server/api/schema.py +++ b/server/api/schema.py @@ -8,7 +8,7 @@ from api import graphene_wagtail # Keep this import exactly here, it's necessar from assignments.schema.mutations import AssignmentMutations from assignments.schema.queries import AssignmentsQuery from books.schema.mutations.main import BookMutations -from filteredbook.schema import BookQuery +from books.schema.queries import BookQuery from objectives.mutations import ObjectiveMutations from objectives.schema import ObjectivesQuery from rooms.mutations import RoomMutations diff --git a/server/books/schema/queries.py b/server/books/schema/queries.py index b2a1b385..4426746a 100644 --- a/server/books/schema/queries.py +++ b/server/books/schema/queries.py @@ -3,6 +3,7 @@ from graphene import relay from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField +from api.utils import get_object from ..models import Book, Topic, Module, Chapter, ContentBlock @@ -130,3 +131,55 @@ class BookNode(DjangoObjectType): def resolve_topics(self, *args, **kwargs): return Topic.get_by_parent(self) + + +class FilteredChapterNode(DjangoObjectType): + content_blocks = DjangoFilterConnectionField(ContentBlockNode) + + class Meta: + model = Chapter + only_fields = [ + 'slug', 'title', + ] + filter_fields = [ + 'slug', 'title', + ] + interfaces = (relay.Node,) + + def resolve_content_blocks(self, *args, **kwargs): + return ContentBlock.get_by_parent(self) + + +class BookQuery(object): + book = relay.Node.Field(BookNode) + topic = relay.Node.Field(TopicNode) + module = graphene.Field(ModuleNode, slug=graphene.String()) + chapter = relay.Node.Field(FilteredChapterNode) + content_block = relay.Node.Field(ContentBlockNode) + + books = DjangoFilterConnectionField(BookNode) + topics = DjangoFilterConnectionField(TopicNode) + modules = DjangoFilterConnectionField(ModuleNode) + chapters = DjangoFilterConnectionField(FilteredChapterNode) + + def resolve_books(self, *args, **kwargs): + return Book.objects.filter(**kwargs).live() + + def resolve_topics(self, *args, **kwargs): + return Topic.objects.filter(**kwargs).live() + + def resolve_modules(self, *args, **kwargs): + return Module.objects.filter(**kwargs).live() + + def resolve_chapters(self, *args, **kwargs): + return Chapter.objects.filter(**kwargs).live() + + def resolve_module(self, info, **kwargs): + slug = kwargs.get('slug') + id = kwargs.get('id') + + if id is not None: + return get_object(Module, id) + if slug is not None: + return Module.objects.get(slug=slug) + return None diff --git a/server/core/settings.py b/server/core/settings.py index 7fc425dd..a69414c6 100644 --- a/server/core/settings.py +++ b/server/core/settings.py @@ -49,7 +49,6 @@ INSTALLED_APPS = [ 'books', 'objectives', 'rooms', - 'filteredbook', 'assignments', 'wagtail.contrib.forms', diff --git a/server/filteredbook/__init__.py b/server/filteredbook/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/filteredbook/apps.py b/server/filteredbook/apps.py deleted file mode 100644 index 83a31e1f..00000000 --- a/server/filteredbook/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class FilteredbookConfig(AppConfig): - name = 'filteredbook' diff --git a/server/filteredbook/models.py b/server/filteredbook/models.py deleted file mode 100644 index 139597f9..00000000 --- a/server/filteredbook/models.py +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/server/filteredbook/schema.py b/server/filteredbook/schema.py deleted file mode 100644 index 54f1be12..00000000 --- a/server/filteredbook/schema.py +++ /dev/null @@ -1,60 +0,0 @@ -import graphene -from graphene import relay -from graphene_django import DjangoObjectType -from graphene_django.filter import DjangoFilterConnectionField - -from api.utils import get_object -from books.models import Book, Topic, Module, Chapter, ContentBlock -from books.schema.queries import BookNode, TopicNode, ModuleNode, ContentBlockNode - - -class FilteredChapterNode(DjangoObjectType): - content_blocks = DjangoFilterConnectionField(ContentBlockNode) - - class Meta: - model = Chapter - only_fields = [ - 'slug', 'title', - ] - filter_fields = [ - 'slug', 'title', - ] - interfaces = (relay.Node,) - - def resolve_content_blocks(self, *args, **kwargs): - return ContentBlock.get_by_parent(self) - - -class BookQuery(object): - book = relay.Node.Field(BookNode) - topic = relay.Node.Field(TopicNode) - module = graphene.Field(ModuleNode, slug=graphene.String()) - chapter = relay.Node.Field(FilteredChapterNode) - content_block = relay.Node.Field(ContentBlockNode) - - books = DjangoFilterConnectionField(BookNode) - topics = DjangoFilterConnectionField(TopicNode) - modules = DjangoFilterConnectionField(ModuleNode) - chapters = DjangoFilterConnectionField(FilteredChapterNode) - - def resolve_books(self, *args, **kwargs): - return Book.objects.filter(**kwargs).live() - - def resolve_topics(self, *args, **kwargs): - return Topic.objects.filter(**kwargs).live() - - def resolve_modules(self, *args, **kwargs): - return Module.objects.filter(**kwargs).live() - - def resolve_chapters(self, *args, **kwargs): - return Chapter.objects.filter(**kwargs).live() - - def resolve_module(self, info, **kwargs): - slug = kwargs.get('slug') - id = kwargs.get('id') - - if id is not None: - return get_object(Module, id) - if slug is not None: - return Module.objects.get(slug=slug) - return None