graphql-python / graphql-python/graphene

Self parameter is None in mutate method

Abierto
#810 27 comentarios 20 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
8.2k
Forks
818
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.