From d372905d7b30917917142136bbcfac4ca76d8ac0 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Thu, 1 Nov 2018 10:57:45 +0100 Subject: [PATCH] Restrict objective groups for students --- server/books/schema/queries.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/server/books/schema/queries.py b/server/books/schema/queries.py index f5981551..20c23934 100644 --- a/server/books/schema/queries.py +++ b/server/books/schema/queries.py @@ -56,11 +56,6 @@ class ChapterNode(DjangoObjectType): return publisher_content_blocks.union(user_created_content_blocks) - # if user.has_perm('users.can_manage_school_class_content'): - # return ContentBlock.get_by_parent(self) - # else: - # return ContentBlock.get_by_parent(self) - class ModuleNode(DjangoObjectType): pk = graphene.Int() @@ -88,6 +83,22 @@ class ModuleNode(DjangoObjectType): def resolve_chapters(self, info, **kwargs): return Chapter.get_by_parent(self) + def resolve_objective_groups(self, info, **kwargs): + user = info.context.user + school_classes = user.school_classes.values_list('pk') + + if user.has_perm('users.can_manage_school_class_content'): # teacher + publisher_objective_groups = self.objective_groups.filter(owner=None) + user_created_objective_groups = self.objective_groups.filter(owner=user) + else: # student + publisher_objective_groups = self.objective_groups.filter(owner=None).exclude( + hidden_for__in=school_classes) + + user_created_objective_groups = self.objective_groups.filter(owner__isnull=False, + visible_for__in=school_classes) + + return publisher_objective_groups.union(user_created_objective_groups) + class TopicNode(DjangoObjectType): pk = graphene.Int()