[pyar] Errores customizados con django graphene

Amilcar Benitez amilcarben en gmail.com
Mar Jul 2 17:15:35 -03 2019


El lun., 1 de jul. de 2019 a la(s) 21:39, Diego Leonardo Puente (
diegoduncan21 en gmail.com) escribió:

> Buenas, opino igual que Daniel, hay dos tipos de errores, los fatales o de
> sistema y los que son de validación.
> Para los errores fatales se usa:
>
> raise GraphQLError("Mensaje")
> En cambio para validaciones uso un Type custom `ErrorType` y lo devuelvo adentro de data, uso un form de django en una mutación y valido si lo que me mandan es valido, si form.is_valid() es False, armo una lista del tipo ErrorType iterando los errores del form `form.errors.items()`. Un comportamiento similar a este se aplica cuando usas DjangoFormMutation con django-graphene.
>
> Una mutacion se veria algo asi:
>
> class AddItemMutation(graphene.Mutation):
> item = graphene.Field(ItemType)
> status = graphene.String()
> errors = graphene.List(ErrorType)
>
> class Arguments:
> category_id = graphene.ID(required=True)
> price = graphene.Float()
> name = graphene.String()
>
> @permission_required('item.add_item')
> def mutate(self, info, **kwargs):
> form = AddItemForm(kwargs)
> if form.is_valid():
> item = Item.objects.create(**kwargs)
> return AddItemMutation(status=STATUS_CREATED,
> item=item,
> errors=None)
> errors = [ErrorType(argument=name, message=message[0]) for name, message
> in form.errors.items()]
> return AddItemMutation(status=STATUS_VALIDATION_FAILED, income=None,
> errors=errors)
>
>
> y el ErrorType asi:
>
>
> class ErrorType(graphene.ObjectType):
> message = graphene.String()
> argument = graphene.String()
>
Gracias Diego. Voy a ir por ese lado con lo de los errores,
Saludos


-- 
Amilcar Benitez
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20190702/a8b9adf8/attachment-0001.html>


Más información sobre la lista de distribución pyar