Commit 507a79aa authored by Gladys Forte's avatar Gladys Forte

clean code re route

parent 1a9e2524
......@@ -32,6 +32,7 @@ from app.entities import enums
from django.forms.models import model_to_dict
import json
from django.shortcuts import get_object_or_404
from django.db.models import Min
APPROVER_MESSAGE = settings.APPROVER_MESSAGE
......@@ -296,7 +297,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
pk=instance.id)
new_instance = model_to_dict(form_header)
# save history in form header
crhistory_save(
batchno,
......@@ -308,46 +309,73 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
new_instance
)
approver_data = []
# get all approvers of form
approvers = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code)
for approver in approvers:
# get old data
old_instance = models.ChangeRequestFormApprovers.objects.filter(
code=approver.code).values()
approver_add = {
'id': approver.id,
'action': None,
'remarks': None,
'date_sent': None,
'action_date': None
}
old_instance = list(old_instance)
approver_data.append(approver_add)
# reset details
models.ChangeRequestFormApprovers.objects.filter(
code=approver.code).update(action=None,
remarks=None,
date_sent=None,
action_date=None)
change_request.form_add_edit_delete(
approver_data,
models.ChangeRequestFormApprovers,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
serializers.ChangeRequestFormApproversSerializer,
partial,
self,
form_code,
batchno,
enums.CREnum.REROUTE.value
)
# get new data
new_instance = models.ChangeRequestFormApprovers.objects.filter(
code=approver.code).values()
min_level = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code
).aggregate(Min('level'))
min_level = min_level.get('level__min')
# get details of next approver/s
next_approver = models.ChangeRequestFormApprovers.objects.filter(
level=str(min_level),
form_code=form_code
)
# LOOP on next approver for sending email
for n_approver in next_approver:
# NOTIF MSG FOR NEXT APPROVER
notification_msg = APPROVER_MESSAGE.split(';')[0]
new_instance = list(new_instance)
if n_approver.delegation.lower() == 'vendor/implementor':
notification_msg = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
next_approver_email(
n_approver.user.code, form_code, n_approver.delegation.lower(),
notification_msg
)
# save history in form approver
crhistory_save(
batchno,
enums.CREnum.REROUTE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
new_instance
# update next approver details
models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=str(min_level))
).update(
date_sent=datetime.now()
)
# return Response(serializer.data)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
message = status_message_response(
200, 'success',
'Change request form successfully re routed',
serializer.data
)
return Response(message, status=status.HTTP_200_OK)
@action(
methods=['PATCH'], detail=True,
......@@ -744,7 +772,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code,
batchno,
enums.CREnum.SUBMIT.value
)
)
change_request.form_add_edit_delete(
form_data['frm_stakes'],
......
......@@ -447,4 +447,6 @@ def crhistory_log_bulk_delete(queryset, entity, tbl, form_code,
tbl.objects.filter(id=test['id']).delete()
return True
except IntegrityError as exc:
raise APIException(detail=exc)
\ No newline at end of file
raise APIException(detail=exc)
......@@ -290,8 +290,8 @@ def form_add_edit_delete(form_request_body,
serializer = serializer_data(frm_instance,
data=i,
partial=True)
partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance)
......
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