From 1549cde15128acb0712928a8671aba7bed54ece4 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 18 Dec 2019 13:11:32 +0100 Subject: [PATCH] Update MyActivity query to include more activities --- server/api/schema.py | 4 +-- server/assignments/schema/queries.py | 8 ------ server/books/schema/queries.py | 37 +++++++++++++++++++++++++++- server/notes/schema.py | 4 +++ server/surveys/schema.py | 1 + server/users/schema.py | 10 ++++++-- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/server/api/schema.py b/server/api/schema.py index 5e5f0d12..f265e893 100644 --- a/server/api/schema.py +++ b/server/api/schema.py @@ -6,7 +6,7 @@ from graphene_django.debug import DjangoDebug # noinspection PyUnresolvedReferences from api import graphene_wagtail # Keep this import exactly here, it's necessary for StreamField conversion from assignments.schema.mutations import AssignmentMutations -from assignments.schema.queries import AssignmentsQuery, StudentSubmissionQuery, MyActivityQuery +from assignments.schema.queries import AssignmentsQuery, StudentSubmissionQuery from basicknowledge.queries import BasicKnowledgeQuery from books.schema.mutations.main import BookMutations from books.schema.queries import BookQuery @@ -26,7 +26,7 @@ from registration.mutations_public import RegistrationMutations class Query(UsersQuery, AllUsersQuery, ModuleRoomsQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery, - StudentSubmissionQuery, BasicKnowledgeQuery, PortfolioQuery, MyActivityQuery, SurveysQuery, + StudentSubmissionQuery, BasicKnowledgeQuery, PortfolioQuery, SurveysQuery, graphene.ObjectType): node = relay.Node.Field() diff --git a/server/assignments/schema/queries.py b/server/assignments/schema/queries.py index 7f9ac9da..ae25ddf2 100644 --- a/server/assignments/schema/queries.py +++ b/server/assignments/schema/queries.py @@ -12,11 +12,3 @@ class AssignmentsQuery(object): class StudentSubmissionQuery(object): student_submission = relay.Node.Field(StudentSubmissionNode) - - -class MyActivityQuery(object): - my_activity = DjangoFilterConnectionField(StudentSubmissionNode) - - def resolve_my_activity(self, info, **kwargs): - user = info.context.user - return StudentSubmission.objects.filter(student=user) diff --git a/server/books/schema/queries.py b/server/books/schema/queries.py index cf241d3e..53d0e55f 100644 --- a/server/books/schema/queries.py +++ b/server/books/schema/queries.py @@ -4,10 +4,14 @@ from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField from api.utils import get_object +from assignments.models import StudentSubmission +from assignments.schema.types import StudentSubmissionNode from books.utils import are_solutions_enabled_for from notes.models import ContentBlockBookmark, ChapterBookmark, ModuleBookmark from notes.schema import ContentBlockBookmarkNode, ChapterBookmarkNode, ModuleBookmarkNode from rooms.models import ModuleRoomSlug +from surveys.models import Answer +from surveys.schema import AnswerNode from ..models import Book, Topic, Module, Chapter, ContentBlock @@ -103,6 +107,7 @@ class ChapterNode(DjangoObjectType): chapter=self ).first() + class ModuleNode(DjangoObjectType): pk = graphene.Int() chapters = DjangoFilterConnectionField(ChapterNode) @@ -110,6 +115,10 @@ class ModuleNode(DjangoObjectType): hero_image = graphene.String() solutions_enabled = graphene.Boolean() bookmark = graphene.Field(ModuleBookmarkNode) + my_submissions = DjangoFilterConnectionField(StudentSubmissionNode) + my_answers = DjangoFilterConnectionField(AnswerNode) + my_content_bookmarks = DjangoFilterConnectionField(ContentBlockBookmarkNode) + my_chapter_bookmarks = DjangoFilterConnectionField(ChapterBookmarkNode) class Meta: model = Module @@ -145,6 +154,32 @@ class ModuleNode(DjangoObjectType): module=self ).first() + def resolve_my_submissions(self, info, **kwargs): + user = info.context.user + return StudentSubmission.objects.filter(student=user, assignment__module=self) + # we want: + # StudentSubmission + + def resolve_my_answers(self, info, **kwargs): + user = info.context.user + return Answer.objects.filter(owner=user, survey__module=self) + # Survey + + def resolve_my_content_bookmarks(self, info, **kwargs): + user = info.context.user + content_blocks = ContentBlock.objects.live().descendant_of(self) + return ContentBlockBookmark.objects.filter(content_block__in=content_blocks, user=user) + # Bookmark Text + # Bookmark Image etc + # Bookmark Other + # Note + # + + def resolve_my_chapter_bookmarks(self, info, **kwargs): + user = info.context.user + chapters = Chapter.objects.live().descendant_of(self) + return ChapterBookmark.objects.filter(chapter__in=chapters, user=user) + class TopicNode(DjangoObjectType): pk = graphene.Int() @@ -196,7 +231,7 @@ class FilteredChapterNode(DjangoObjectType): class Meta: model = Chapter only_fields = [ - 'slug', 'title', + 'slug', 'title', 'description', ] filter_fields = [ 'slug', 'title', diff --git a/server/notes/schema.py b/server/notes/schema.py index 08119227..818d44e7 100644 --- a/server/notes/schema.py +++ b/server/notes/schema.py @@ -23,6 +23,8 @@ class ContentBlockBookmarkNode(DjangoObjectType): class Meta: model = ContentBlockBookmark + filter_fields = [] + interfaces = (relay.Node,) class ModuleBookmarkNode(DjangoObjectType): @@ -37,3 +39,5 @@ class ChapterBookmarkNode(DjangoObjectType): class Meta: model = ChapterBookmark + filter_fields = [] + interfaces = (relay.Node,) diff --git a/server/surveys/schema.py b/server/surveys/schema.py index 701e76cd..9e5cdc37 100644 --- a/server/surveys/schema.py +++ b/server/surveys/schema.py @@ -14,6 +14,7 @@ class AnswerNode(DjangoObjectType): class Meta: model = Answer interfaces = (relay.Node,) + filter_fields = [] def resolve_pk(self, *args, **kwargs): return self.id diff --git a/server/users/schema.py b/server/users/schema.py index 2511b7c3..11192d55 100644 --- a/server/users/schema.py +++ b/server/users/schema.py @@ -3,6 +3,10 @@ from graphene import relay from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField +from assignments.models import StudentSubmission +from assignments.schema.types import StudentSubmissionNode +from books.models import Module +from books.schema.queries import ModuleNode from users.models import User, SchoolClass @@ -43,6 +47,7 @@ class UserNode(DjangoObjectType): class UsersQuery(object): me = graphene.Field(UserNode) all_users = DjangoFilterConnectionField(UserNode) + my_activity = DjangoFilterConnectionField(ModuleNode) def resolve_me(self, info, **kwargs): return info.context.user @@ -53,6 +58,9 @@ class UsersQuery(object): else: return User.objects.all() + def resolve_my_activity(self, info, **kwargs): + return Module.objects.all() + class AllUsersQuery(object): me = graphene.Field(UserNode) @@ -63,5 +71,3 @@ class AllUsersQuery(object): return User.objects.none() else: return User.objects.all() - -