Change portfolio schema on server to use slugs
This commit is contained in:
parent
481e601878
commit
6edbadda2e
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue