Commit 243729f3 authored by Gladys Forte's avatar Gladys Forte

update model

parent 2d922195
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from drf_writable_nested import WritableNestedModelSerializer
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateHeader
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'template_no']
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
......@@ -45,4 +37,27 @@ class ChangeRequestTemplateDetailsSerializer(
class Meta:
model = models.ChangeRequestTemplateDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
\ No newline at end of file
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplatesSerializer(
WritableNestedModelSerializer
):
tmp_approvers = ChangeRequestTemplateApproversSerializer(many=True)
tmp_stakes = ChangeRequestTemplateStakeHoldersSerializer(many=True)
tmp_attachments = ChangeRequestTemplateAttachmentsSerializer(many=True)
tmp_details = ChangeRequestTemplateDetailsSerializer(many=True)
class Meta:
model = models.ChangeRequestTemplateHeader
# fields = '__all__'
fields = ('template_no', 'requested_to_template_name',
'requested_to_objective', 'requested_to_target_date',
'requested_to_priority', 'description', 'created',
'requested_to_template_id', 'requested_to_company',
'requested_to_department', 'requested_to_user',
'created_by_user', 'created_by_department', 'tmp_approvers',
'tmp_stakes', 'tmp_attachments', 'tmp_details')
read_only_fields = ['created', 'deleted_at', 'template_no']
\ No newline at end of file
......@@ -22,7 +22,13 @@ from rest_framework.exceptions import ValidationError
from django.db import transaction, IntegrityError, connection
from app.applicationlayer.utils import QuerySetHelper
from app.businesslayer.changerequest import change_request
from app.applicationlayer.cms.utils_cr import number_generator
from app.applicationlayer.cms.utils_cr import number_generator, crhistory_save
from django.shortcuts import get_object_or_404
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import UpdateModelMixin
from django.forms.models import model_to_dict
from app.entities import enums
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
......@@ -31,17 +37,16 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
lookup_field = 'template_no'
serializer_class = serializers.ChangeRequestTemplatesSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplatesViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(
deleted_at=None,
template_no=str(self.kwargs.get('template_no'))
).first()
......@@ -60,24 +65,62 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def partial_update(self, request, *args, **kwargs):
try:
kwargs['partial'] = True
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
template_no=template_no
).order_by('-deleted_at')
instance.update(deleted_at=None)
message = "Archived Change Request restored"
return Response(message, status=status.HTTP_200_OK)
@transaction.atomic
def update(self, request, *args, **kwargs):
except Exception as e:
message = {
500, 'failed',
'Request was not able to process' + str(e), []
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
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
print(new_instance)
crhistory_save(
enums.LogEnum.DELETED.value,
enums.CREntitiesEnum.CR_TMP_HEADER.value,
's',
old_instance,
new_instance
)
return Response(serializer.data)
# template_no = self.kwargs['template_no']
# template = get_object_or_404(models.ChangeRequestTemplateHeader, template_no=template_no)
# print(template_no)
# serializer = serializers.ChangeRequestTemplatesSerializer(template, data=request.data, partial=True)
# if serializer.is_valid():
# question = serializer.save()
# return Response(serializers.ChangeRequestTemplatesSerializer(question).data)
# return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# instance = models.ChangeRequestTemplateHeader.objects.filter(
# template_no=template_no)
# instance.update()
# serializer = serializers.ChangeRequestTemplatesSerializer(
# data=template_header)
# if serializer.is_valid(raise_exception=True):
# serializer.update()
# message = "Archived Change Request restored"
# return Response(message, status=status.HTTP_200_OK)
# return super(ChangeRequestTemplatesViewset, self).list(request)
# except Exception as e:
# message = {
# 500, 'failed',
# 'Request was not able to process' + str(e), []
# }
# return Response(message,
# status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet):
......
......@@ -436,3 +436,14 @@ def cancel_overdue(request):
email_content=email_content_cancel
)
return True
def crhistory_save(action, entity, form_code, fromValue, toValue):
models.ChangeRequestHistory.objects.create(
action=action,
entity=entity,
form_code=form_code,
fromValue=fromValue,
toValue=toValue
)
return True
\ No newline at end of file
......@@ -845,7 +845,10 @@ class ChangeRequestHistory(AuditClass):
(tag.value, tag.value) for tag in enums.CREntitiesEnum],
default=enums.CREntitiesEnum.CR_FRM_HEADER.value,
max_length=50)
form_code = models.IntegerField()
form_code = models.CharField(
max_length=255,
blank=True,
null=True)
fromValue = models.TextField(blank=True, null=True)
toValue = models.TextField(blank=True, null=True)
......
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