From c50e17c55519507d8bf4ffa1c70e7d0a511b84aa Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Thu, 26 Mar 2020 23:05:37 +0100 Subject: [PATCH] error handling up to client --- apps/note/api/views.py | 17 +++++++++++++++-- apps/note/models/notes.py | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/note/api/views.py b/apps/note/api/views.py index 3a29b522..40fc4f4e 100644 --- a/apps/note/api/views.py +++ b/apps/note/api/views.py @@ -2,10 +2,14 @@ # SPDX-License-Identifier: GPL-3.0-or-later from django.db.models import Q +from django.core.exceptions import ValidationError from django_filters.rest_framework import DjangoFilterBackend from rest_framework.filters import OrderingFilter, SearchFilter -from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet from rest_framework import viewsets +from rest_framework.response import Response +from rest_framework import status + +from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet from .serializers import NotePolymorphicSerializer, AliasSerializer, TemplateCategorySerializer, \ TransactionTemplateSerializer, TransactionPolymorphicSerializer @@ -59,7 +63,16 @@ class AliasViewSet(viewsets.ModelViewSet): #alias owner cannot be change once establish setattr(serializer_class.Meta, 'read_only_fields', ('note',)) return serializer_class - + + def destroy(self, request, *args, **kwargs): + instance = self.get_object() + try: + self.perform_destroy(instance) + except ValidationError as e: + print(e) + return Response({e.code:e.message},status.HTTP_400_BAD_REQUEST) + return Response(status=status.HTTP_204_NO_CONTENT) + def get_queryset(self): """ Parse query and apply filters. diff --git a/apps/note/models/notes.py b/apps/note/models/notes.py index 2fa63906..43faabfe 100644 --- a/apps/note/models/notes.py +++ b/apps/note/models/notes.py @@ -249,5 +249,5 @@ class Alias(models.Model): def delete(self, using=None, keep_parents=False): if self.name == str(self.note): raise ValidationError(_("You can't delete your main alias."), - code="cant_delete_main_alias") + code="main_alias") return super().delete(using, keep_parents)