django-graphql-apollo-react-demo
django-graphql-apollo-react-demo copied to clipboard
Mutation in graphene 2.0
The current mutation seems to not be working with graphene 2.0
@staticmethod
def mutate(root, args, context, info):
if not context.user.is_authenticated():
return CreateMessageMutation(status=403)
message = args.get('message', '').strip()
# Here we would usually use Django forms to validate the input
if not message:
return CreateMessageMutation(
status=400,
formErrors=json.dumps(
{'message': ['Please enter a message.']}))
obj = models.Message.objects.create(
user=context.user, message=message
)
return CreateMessageMutation(status=200, message=obj)
Since the version 2.0 now only receives as arguments for mutate(root, info, **args) where can we get now the context info so that context.user.is_authenticated() could work?
You can get the context from info.
context = info.context
if not context.user.is_authenticated:
A working mutation is:
def mutate(self, info, **kwargs):
if not info.context.user.is_authenticated:
return CreateMessage(status=403)
message = kwargs.get('message', '').strip()
# Here we would usually use Django forms to validate the input
if not message:
return CreateMessage(
status=400,
formErrors=json.dumps(
{'message': ['Please enter a message.']}))
obj = models.Message.objects.create(
user=info.context.user, message=message
)
return CreateMessage(status=200, message=obj)
You have to change the tests then too...