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