mirror of
https://github.com/evgen-app/evg-app-back.git
synced 2025-02-16 17:00:33 +03:00
111 lines
3.8 KiB
Python
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() |