From c50e17c55519507d8bf4ffa1c70e7d0a511b84aa Mon Sep 17 00:00:00 2001
From: Pierre-antoine Comby <comby@crans.org>
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)
-- 
GitLab