Add permissions to objectivegroup mutations
This commit is contained in:
parent
43f942ea2d
commit
aeded87227
|
|
@ -1,6 +1,7 @@
|
||||||
import graphene
|
import graphene
|
||||||
from graphene import relay, InputObjectType
|
from graphene import relay, InputObjectType
|
||||||
from graphql_relay import from_global_id
|
from graphql_relay import from_global_id
|
||||||
|
from rest_framework.exceptions import PermissionDenied
|
||||||
|
|
||||||
from api.utils import get_object
|
from api.utils import get_object
|
||||||
from books.models import Module
|
from books.models import Module
|
||||||
|
|
@ -67,13 +68,18 @@ class AddObjectiveGroup(relay.ClientIDMutation):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def mutate_and_get_payload(cls, root, info, **kwargs):
|
def mutate_and_get_payload(cls, root, info, **kwargs):
|
||||||
|
|
||||||
|
owner = info.context.user
|
||||||
|
if not owner.has_perm('users.can_manage_school_class_content'):
|
||||||
|
raise PermissionDenied('Missing permissions')
|
||||||
|
|
||||||
objective_group_data = kwargs.get('objective_group')
|
objective_group_data = kwargs.get('objective_group')
|
||||||
title = objective_group_data.get('title')
|
title = objective_group_data.get('title')
|
||||||
if title != 'society':
|
if title != 'society':
|
||||||
title = 'language_communication'
|
title = 'language_communication'
|
||||||
module_id = objective_group_data.get('module')
|
module_id = objective_group_data.get('module')
|
||||||
module = get_object(Module, module_id)
|
module = get_object(Module, module_id)
|
||||||
owner = info.context.user
|
|
||||||
new_objective_group = ObjectiveGroup.objects.create(title=title, module=module, owner=owner)
|
new_objective_group = ObjectiveGroup.objects.create(title=title, module=module, owner=owner)
|
||||||
objectives = objective_group_data.get('objectives')
|
objectives = objective_group_data.get('objectives')
|
||||||
for objective in objectives:
|
for objective in objectives:
|
||||||
|
|
@ -89,9 +95,15 @@ class UpdateObjectiveGroup(relay.ClientIDMutation):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def mutate_and_get_payload(cls, root, info, **kwargs):
|
def mutate_and_get_payload(cls, root, info, **kwargs):
|
||||||
|
|
||||||
|
user = info.context.user
|
||||||
|
if not user.has_perm('users.can_manage_school_class_content'):
|
||||||
|
raise PermissionDenied('Missing permissions')
|
||||||
|
|
||||||
objective_group_data = kwargs.get('objective_group')
|
objective_group_data = kwargs.get('objective_group')
|
||||||
id = objective_group_data.get('id')
|
id = objective_group_data.get('id')
|
||||||
objective_group = get_object(ObjectiveGroup, id)
|
objective_group = get_object(ObjectiveGroup, id)
|
||||||
|
|
||||||
objectives = objective_group_data.get('objectives')
|
objectives = objective_group_data.get('objectives')
|
||||||
existing_objective_ids = list(objective_group.objectives.values_list('id', flat=True))
|
existing_objective_ids = list(objective_group.objectives.values_list('id', flat=True))
|
||||||
for objective in objectives:
|
for objective in objectives:
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
# Create your tests here.
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
from django.test import TestCase, RequestFactory
|
from django.test import TestCase, RequestFactory
|
||||||
from graphene.test import Client
|
from graphene.test import Client
|
||||||
from graphql_relay import to_global_id
|
|
||||||
|
|
||||||
from api.schema import schema
|
from api.schema import schema
|
||||||
from core.factories import UserFactory
|
from core.factories import UserFactory
|
||||||
from rooms.factories import RoomFactory, RoomEntryFactory
|
from rooms.factories import RoomFactory, RoomEntryFactory
|
||||||
from rooms.models import Room
|
|
||||||
from users.factories import SchoolClassFactory
|
from users.factories import SchoolClassFactory
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue