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