graphql-python / graphql-python/graphene

Self parameter is None in mutate method

Ouverte
#810 27 commentaires 20 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
8.2k
Forks
818
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I don't know, maybe it's not a bug and problem caused by rx, but i have this mutation

```python
class ExtendedMutation(graphene.Mutation):

ok = graphene.Boolean()
code = graphene.Int()
message = graphene.String()

def mutate(self, *_, **__):
return ExtendedMutation()

class UserLogin(ExtendedMutation):
class Arguments:
access_token = graphene.String()

access_token = graphene.String()

@login_required
def mutate(self, info, access_token):
response = client.login(access_token)
access_token = response.get('data', dict()).get('access_token', None)

return UserLogin(
access_token=access_token,
ok=response.get('ok'),
code=response.get('code'),
message=response.get('message')
)
```

and wrote such decorator
```python

def login_required(mutation):
@wraps(mutation)
def inner(obj, info, **kwargs):
access_token = request.headers.get('access_token', None)

print('obj: {}, info; {}, kwargs: {} '.format(obj, info, kwargs))
if not access_token:
return obj(
ok=False, code=401, message='You must login first'
)
return mutation(obj, info, **kwargs)
return inner
```

I wait for **UserLogin** object in **self** argument of **mutation** method, but it's equal None. Info is equal ResolveObject. When i wraps **mutate** method with `@classmethod` decorator, i got UserLogin login class, `info` is None and appears third position required argument which is actually is `info`.

Any ideas?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.