[pyar] Errores customizados con django graphene

Diego Leonardo Puente diegoduncan21 en gmail.com
Lun Jul 1 21:39:29 -03 2019


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()



El lun., 1 jul. 2019 a las 19:47, Amilcar Benitez (<amilcarben en gmail.com>)
escribió:

>
> [...]pero si querés chequear de tu lado (backend) y eximir al front de eso
>> tendrías que hacer el parámetro opcional
>> y al evaluar que no cumple las especificaciones y lanzar un error
>> personalizado.
>>
>
> Buenísimo, gracias por la respuesta Daniel. Me dejaste mucho más claro las
> responsabilidades del backend y fronted.
> ¿Sugerís alguna lectura para los que estamos saliendo desde django con
> templates a la interacción con aplicaciones cliente totalmente
> independientes?
>
> --
> Amilcar Benitez
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20190701/c171a666/attachment-0001.html>


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