Change portfolio schema on server to use slugs

This commit is contained in:
Ramon Wenger 2022-01-29 20:02:58 +01:00
parent 481e601878
commit 6edbadda2e
2 changed files with 12 additions and 12 deletions

View File

@ -14,7 +14,7 @@ class AddProjectArgument(ProjectInput):
class UpdateProjectArgument(ProjectInput):
id = graphene.ID(required=True)
slug = graphene.String(required=True)
final = graphene.Boolean()
@ -24,9 +24,9 @@ class ProjectEntryInput(InputObjectType):
class AddProjectEntryArgument(ProjectEntryInput):
project = graphene.ID(required=True)
project = graphene.String(required=True)
class UpdateProjectEntryArgument(ProjectEntryInput):
id = graphene.ID(required=True)
slug = graphene.String(required=True)

View File

@ -62,7 +62,7 @@ class UpdateProject(MutateProject):
cls.user_is_owner(data, info.context.user)
data['student'] = info.context.user.id
entity = get_object(Project, data['id'])
entity = Project.objects.get(slug=data['slug'])
serializer = ProjectSerializer(entity, data=data)
if serializer.is_valid():
serializer.save()
@ -76,7 +76,7 @@ class UpdateProject(MutateProject):
@classmethod
def user_is_owner(cls, data, user):
project = get_object(Project, data['id'])
project = Project.objects.get(slug=data['slug'])
if not project or not project.student == user:
raise PermissionDenied('not allowed')
@ -90,7 +90,7 @@ class MutateProjectEntry(relay.ClientIDMutation):
data = kwargs.get('project_entry')
if data.get('project') is not None:
project = get_object(Project, data.get('project'))
project = Project.objects.get(slug=data['project'])
data['project'] = project.id
if check_owner(info.context.user, project):
return cls(project_entry=None, errors=['not allowed'])
@ -121,15 +121,15 @@ class UpdateProjectEntry(MutateProjectEntry):
class DeleteProject(relay.ClientIDMutation):
class Input:
id = graphene.ID(required=True)
slug = graphene.String(required=True)
success = graphene.Boolean()
errors = graphene.List(graphene.String)
@classmethod
def mutate_and_get_payload(cls, root, info, **kwargs):
id = kwargs.get('id')
project = get_object(Project, id)
slug = kwargs.get('slug')
project = Project.objects.get(slug=slug)
user = info.context.user
if project.student != user:
@ -159,7 +159,7 @@ class DeleteProjectEntry(relay.ClientIDMutation):
class UpdateProjectSharedState(relay.ClientIDMutation):
class Input:
id = graphene.ID()
slug = graphene.String()
shared = graphene.Boolean()
success = graphene.Boolean()
@ -169,11 +169,11 @@ class UpdateProjectSharedState(relay.ClientIDMutation):
@classmethod
def mutate_and_get_payload(cls, root, info, **args):
try:
id = args.get('id')
slug = args.get('slug')
shared = args.get('shared')
user = info.context.user
project = get_object(Project, id)
project = Project.objects.get(slug=slug)
if project.student != user:
raise PermissionError()
project.final = shared