Commit b15873ec authored by John Red Medrano's avatar John Red Medrano

{dev bugfix} added validation on update of user and application

parent 590ea23e
...@@ -175,6 +175,7 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -175,6 +175,7 @@ class UserViewSet(viewsets.ModelViewSet):
return Response(message, return Response(message,
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
@rms.AccountValidation
@rms.user_create @rms.user_create
@transaction.atomic @transaction.atomic
def update(self, request, *args, **kwargs): def update(self, request, *args, **kwargs):
......
...@@ -13,6 +13,7 @@ from app.applicationlayer.utils import ( ...@@ -13,6 +13,7 @@ from app.applicationlayer.utils import (
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.application import serializer from app.applicationlayer.management.application import serializer
from app.applicationlayer.management.application.table_filters import ApplicationFilterSet from app.applicationlayer.management.application.table_filters import ApplicationFilterSet
from django.db import IntegrityError
class ApplicationViewSet(viewsets.ModelViewSet): class ApplicationViewSet(viewsets.ModelViewSet):
...@@ -82,25 +83,32 @@ class ApplicationViewSet(viewsets.ModelViewSet): ...@@ -82,25 +83,32 @@ class ApplicationViewSet(viewsets.ModelViewSet):
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
@decorators.rms.ApplicationValidation
@decorators.rms.application_crate @decorators.rms.application_crate
@transaction.atomic @transaction.atomic
def update(self, request, *args, **kwargs): def update(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.APPLICATION.value,
old_instance['id'],
old_instance,
new_instance
)
partial = kwargs.pop('partial', False) return Response(serializer.data)
instance = self.get_object() except IntegrityError as e:
serializer = self.get_serializer(instance, data=request.data, partial=partial) return Response(
serializer.is_valid(raise_exception=True) {"message": "Cannot delete or update this reocrd it has foreign key constraint to other tables"},
status=status.HTTP_400_BAD_REQUEST
old_instance = model_to_dict(instance) )
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.APPLICATION.value,
old_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment