evg-app-back/organisations/mutation.py
2021-01-10 15:51:59 +03:00

111 lines
3.8 KiB
Python

import graphene
from .gqlTypes import OrganisationType, RoleType, GroupType
from .models import Organisation, Role, Group, Teacher, Child
from users.schema import UserType
class CreateGroup(graphene.Mutation):
class Arguments:
org_name = graphene.String()
groupName = graphene.String()
group = graphene.Field(GroupType)
def mutate(self, info, org_name, groupName, **kwargs):
return CreateGroup(group=Group.objects.create(name=groupName, org=Organisation.objects.get(name=org_name)))
class CreateOrg(graphene.Mutation):
class Arguments:
name = graphene.String()
Org = graphene.Field(OrganisationType)
def mutate(self, info, name, **kwargs):
return CreateOrg(Org=Organisation.objects.create(name=name))
class RegUserOrg(graphene.Mutation):
class Arguments:
token = graphene.String()
orgName = graphene.String()
isTeacher = graphene.Boolean()
name = graphene.String(required=False)
surname = graphene.String(required=False)
midname = graphene.String(required=False)
ok = graphene.Boolean()
def mutate(self, info, token, orgName, isTeacher, **kwargs):
org = Organisation.objects.get(name=orgName)
if isTeacher:
t = Teacher.objects.create(profile=info.context.user.profile, org=org)
else:
t = Child.objects.create(profile=info.context.user.profile, org=org)
return RegUserOrg(ok=True)
class AddGroupToOrg(graphene.Mutation):
class Arguments:
orgName = graphene.String()
groupName = graphene.String()
group = graphene.Field(GroupType)
def mutate(self, info, orgName, groupName):
group = Group.objects.create(name=groupName, org=Organisation.objects.get(name=orgName))
return AddGroupToOrg(group=group)
class RegUserGroup(graphene.Mutation):
class Arguments:
token = graphene.String()
orgName = graphene.String()
groupName = graphene.String()
is_teacher = graphene.Boolean()
user = graphene.Field(UserType)
def mutate(self, info, token, orgName, groupName, is_teacher, **kwargs):
group = Organisation.objects.get(name=orgName).group_set.all().filter(name=groupName)[0]
if is_teacher:
info.context.user.profile.teacher_set.all().filter(org__name=orgName)[0].groups.add(group)
else:
info.context.user.profile.child_set.all().filter(org__name=orgName)[0].groups.add(group)
return RegUserGroup(info.context.user)
class DeleteGroup(graphene.Mutation):
class Arguments:
orgName = graphene.String()
groupName = graphene.String()
ok = graphene.Boolean()
def mutate(self, info, orgName, groupName, **kwargs):
Organisation.objects.find(name=orgName).objects.groups.all().filter(name=groupName)[0].delete()
class DeleteUserFromGroup(graphene.Mutation):
class Arguments:
orgName = graphene.String()
groupName = graphene.String()
token = graphene.String()
is_teacher = graphene.Boolean()
user = graphene.Field(UserType)
def mutate(self, info, orgName, groupName, token, is_teacher, **kwargs):
if is_teacher:
group = info.context.user.profile.teacher_set.all().filter(org__name=orgName)[0].groups.all().filter(name=groupName)[0]
org = info.context.user.profile.teacher_set.all().filter(org__name=orgName)[0]
print(group, org)
org.groups.remove(group)
return DeleteuserFromGroup(info.context.user)
else:
group = info.context.user.profile.child_set.all().filter(org__name=orgName)[0].groups.all().filter(name=groupName)[0]
org = info.context.user.profile.child_set.all().filter(org__name=orgName)[0]
print(group, org)
org.groups.remove(group)
class Mutation(graphene.ObjectType):
create_org = CreateOrg.Field()
reg_user_org = RegUserOrg.Field()
create_group = CreateGroup.Field()
reg_user_to_group = RegUserGroup.Field()
add_group_to_org = AddGroupToOrg.Field()
delete_group = DeleteGroup.Field()
delete_user_from_group = DeleteUserFromGroup.Field()