40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import graphene
|
|
from graphene import relay
|
|
|
|
from api.utils import get_errors, get_object
|
|
from books.models import Module
|
|
|
|
|
|
class UpdateSolutionVisibility(relay.ClientIDMutation):
|
|
class Input:
|
|
id = graphene.ID()
|
|
enabled = graphene.Boolean()
|
|
|
|
success = graphene.Boolean()
|
|
errors = graphene.List(graphene.String)
|
|
|
|
@classmethod
|
|
def mutate_and_get_payload(cls, root, info, **args):
|
|
try:
|
|
id = args.get('id')
|
|
enabled = args.get('enabled')
|
|
user = info.context.user
|
|
if 'users.can_manage_school_class_content' not in user.get_role_permissions():
|
|
raise PermissionError()
|
|
|
|
module = get_object(Module, id)
|
|
if enabled:
|
|
module.solutions_enabled_by.add(user)
|
|
else:
|
|
module.solutions_enabled_by.remove(user)
|
|
module.save()
|
|
|
|
return cls(success=True)
|
|
|
|
except PermissionError:
|
|
errors = ["You don't have the permission to do that."]
|
|
except Exception as e:
|
|
errors = ['Error: {}'.format(e)]
|
|
|
|
return cls(success=False, errors=errors)
|