error handling up to client

This commit is contained in:
Pierre-antoine Comby 2020-03-26 23:05:37 +01:00
parent f7a66920e0
commit c50e17c555
2 changed files with 16 additions and 3 deletions

View File

@ -2,10 +2,14 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
from django.db.models import Q from django.db.models import Q
from django.core.exceptions import ValidationError
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.filters import OrderingFilter, SearchFilter
from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSet
from rest_framework import viewsets 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, \ from .serializers import NotePolymorphicSerializer, AliasSerializer, TemplateCategorySerializer, \
TransactionTemplateSerializer, TransactionPolymorphicSerializer TransactionTemplateSerializer, TransactionPolymorphicSerializer
@ -60,6 +64,15 @@ class AliasViewSet(viewsets.ModelViewSet):
setattr(serializer_class.Meta, 'read_only_fields', ('note',)) setattr(serializer_class.Meta, 'read_only_fields', ('note',))
return serializer_class 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): def get_queryset(self):
""" """
Parse query and apply filters. Parse query and apply filters.

View File

@ -249,5 +249,5 @@ class Alias(models.Model):
def delete(self, using=None, keep_parents=False): def delete(self, using=None, keep_parents=False):
if self.name == str(self.note): if self.name == str(self.note):
raise ValidationError(_("You can't delete your main alias."), raise ValidationError(_("You can't delete your main alias."),
code="cant_delete_main_alias") code="main_alias")
return super().delete(using, keep_parents) return super().delete(using, keep_parents)