Commit 7f118c84 authored by Gladys Forte's avatar Gladys Forte

save and submit initial

parent fad9fb3e
......@@ -73,8 +73,6 @@ class ChangeRequestFormHeaderSerializer(
):
frm_approvers = ChangeRequestFormApproversSerializer(
many=True, read_only=True)
# frm_stakes = ChangeRequestFormStakeHoldersSerializer(
# many=True, required=False)
frm_stakes = ChangeRequestFormStakeHoldersSerializer(
many=True, read_only=True)
frm_attachments = ChangeRequestFormAttachmentsSerializer(
......@@ -82,88 +80,6 @@ class ChangeRequestFormHeaderSerializer(
frm_details = ChangeRequestFormDetailsSerializer(
many=True, read_only=True)
# def update(self, instance, validated_data):
# Update the book instance
# instance.requested_to_template_name = validated_data['requested_to_template_name']
# instance.requested_to_objective = validated_data['requested_to_objective']
# instance.requested_to_target_date = validated_data['requested_to_target_date']
# instance.requested_to_priority = validated_data['requested_to_priority']
# instance.description = validated_data['description']
# instance.status = validated_data['status']
# instance.company_desc = validated_data['company_desc']
# instance.department_desc = validated_data['department_desc']
# instance.requested_desc = validated_data['requested_desc']
# instance.requested_to_template_id = validated_data['requested_to_template_id']
# instance.requested_to_company = validated_data['requested_to_company']
# instance.requested_to_department = validated_data['requested_to_department']
# instance.requested_to_user = validated_data['requested_to_user']
# instance.requested_by_user = validated_data['requested_by_user']
# instance.requested_by_department = validated_data['requested_by_department']
# instance.template_no = validated_data['template_no']
# instance.save()
# Delete any pages not included in the request
# approvers_ids = [item.id for item in validated_data['frm_approvers']]
# for i in validated_data['frm_approvers']:
# print(i)
# print(approvers_ids)
# for page in instance.frm_approvers:
# if page.id not in approvers_ids:
# page.delete()
# # Create or update page instances that are in the request
# for item in validated_data['pages']:
# page = Page(id=item['page_id'], text=item['text'], book=instance)
# page.save()
# return instance
# def update(self, instance, validated_data):
# frm_approvers = validated_data.pop('frm_approvers')
# instance.requested_to_template_name = validated_data.get("requested_to_template_name", instance.requested_to_template_name)
# instance.requested_to_objective = validated_data.get("requested_to_objective", instance.requested_to_objective)
# instance.requested_to_target_date = validated_data.get("requested_to_target_date", instance.requested_to_target_date)
# instance.requested_to_priority = validated_data.get("requested_to_priority", instance.requested_to_priority)
# instance.description = validated_data.get("description", instance.description)
# instance.status = validated_data.get("status", instance.status)
# instance.company_desc = validated_data.get("company_desc", instance.company_desc)
# instance.department_desc = validated_data.get("department_desc", instance.department_desc)
# instance.requested_desc = validated_data.get("requested_desc", instance.requested_desc)
# instance.requested_to_template_id = validated_data.get("requested_to_template_id", instance.requested_to_template_id)
# instance.requested_to_company = validated_data.get("requested_to_company", instance.requested_to_company)
# instance.requested_to_department = validated_data.get("requested_to_department", instance.requested_to_department)
# instance.requested_to_user = validated_data.get("requested_to_user", instance.requested_to_user)
# instance.requested_by_user = validated_data.get("requested_by_user", instance.requested_by_user)
# instance.requested_by_department = validated_data.get("requested_by_department", instance.requested_by_department)
# instance.template_no = validated_data.get("template_no", instance.template_no)
# instance.save()
# print(instance.form_code)
# keep_choices = []
# for choice in frm_approvers:
# if "id" in choice.keys():
# if models.ChangeRequestFormApprovers.objects.filter(id=choice["id"]).exists():
# c = models.ChangeRequestFormApprovers.objects.get(id=choice["id"])
# c.text = choice.get('text', c.text)
# c.save()
# keep_choices.append(c.id)
# else:
# continue
# else:
# c = models.ChangeRequestFormApprovers.objects.create(**choice)
# keep_choices.append(c.id)
# for choice in instance.frm_approvers:
# if choice.id not in keep_choices:
# choice.delete()
# return instance
def to_representation(self, instance):
ret = super().to_representation(instance)
try:
......
......@@ -297,7 +297,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form header
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.REROUTE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_HEADER.value,
form_code,
old_instance,
......@@ -328,7 +330,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.REROUTE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
......@@ -382,7 +386,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form header
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.RESUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_HEADER.value,
form_code,
old_instance,
......@@ -413,7 +419,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.RESUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
......@@ -434,8 +442,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# get request data
id = request.data['id']
current_user = request.data['user']
# current_user = self.request.user
# current_user = request.data['user']
current_user = self.request.user.code
form_code = request.data['form_code']
delegation = request.data['delegation']
action = request.data['action']
......@@ -464,6 +472,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
crenum = action.upper()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
"ACTION",
crenum,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
......@@ -583,6 +593,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
status=status.HTTP_200_OK
)
@action(
methods=['PATCH'], detail=True,
url_path='save', url_name='save'
......@@ -594,6 +605,12 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# get pk
frm_id = models.ChangeRequestFormHeader.objects.get(form_code=form_code)
# get old data
old_instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).values()
old_instance = list(old_instance)
# get data CR Form Header
form_header = get_object_or_404(
......@@ -605,6 +622,24 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
if serializer.is_valid():
serializer.save()
# get new data
new_instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).values()
new_instance = list(new_instance)
# save history in form header
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_HEADER.value,
form_code,
old_instance,
new_instance
)
# ---------------------------------------------------------------------
# get approvers data
approver_id = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code)
......@@ -624,43 +659,439 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# Delete any approvers not included in the request
for e in existing_approver_ids:
if e not in updated_approver_ids:
# get old data
old_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormApprovers.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
None
)
# Create or update approver data that are in the request
for frm_approver in frm_approvers:
print(frm_approver)
if "id" in frm_approver:
print(frm_approver['id'])
# get old data
old_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).update(level=frm_approver['level'],
delegation=frm_approver['delegation'],
created=datetime.now(),
remarks=None,
action=None,
action_date=None,
date_sent=None,
user=frm_approver['user'],
tmp_approver=frm_approver['tmp_approver'])
delegation=frm_approver['delegation'],
created=datetime.now(),
remarks=None,
action=None,
action_date=None,
date_sent=None,
user=frm_approver['user'],
tmp_approver=frm_approver['tmp_approver'])
# get new data
new_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_approver['user'])
cre = models.ChangeRequestFormApprovers.objects.create(
level=frm_approver['level'],
delegation=frm_approver['delegation'],
created=datetime.now(),
user=user_instance,
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_APPROVER.value, cre.id)
models.ChangeRequestFormApprovers.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
None,
new_instance
)
# ---------------------------------------------------------------------
# get stakes data
stakes_id = models.ChangeRequestFormStakeHolders.objects.filter(
form_code=form_code)
# list existing id to variable
existing_stakes_ids = [item.id for item in stakes_id]
frm_stakes = form_header_data['frm_stakes']
updated_stakes_ids = []
# get all ids
for frm_stake in frm_stakes:
if "id" in frm_stake:
updated_stakes_ids.append(frm_stake['id'])
# Delete any stakes not included in the request
for e in existing_stakes_ids:
if e not in updated_stakes_ids:
# get old data
old_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormStakeHolders.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
old_instance,
None
)
# Create or update stake data that are in the request
for frm_stake in frm_stakes:
if "id" in frm_stake:
# get old data
old_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).update(
delegation=frm_stake['delegation'],
created=datetime.now(),
user=frm_stake['user'],
tmp_stake=frm_stake['tmp_stake'])
# get new data
new_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_stake['user'])
cre = models.ChangeRequestFormStakeHolders.objects.create(
delegation=frm_stake['delegation'],
created=datetime.now(),
user=user_instance,
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_STAKE.value, cre.id)
models.ChangeRequestFormStakeHolders.objects.filter(
id=cre.id).update(code=code)
user_instance = models.User.objects.get(code=frm_approver['user'])
form_code_instance = models.ChangeRequestFormHeader.objects.get(code=form_code)
# get new data
new_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
None,
new_instance
)
models.ChangeRequestFormApprovers.objects.create(
level=frm_approver['level'],
delegation=frm_approver['delegation'],
created=datetime.now(),
user=user_instance,
form_code=form_code_instance)
# ---------------------------------------------------------------------
# get attachments data
attach_id = models.ChangeRequestFormAttachments.objects.filter(
form_code=form_code)
# list existing id to variable
existing_attach_ids = [item.id for item in attach_id]
frm_attach = form_header_data['frm_attachments']
updated_attach_ids = []
# get all ids
for frm_att in frm_attach:
if "id" in frm_att:
updated_attach_ids.append(frm_att['id'])
# Delete any attachments not included in the request
for e in existing_attach_ids:
if e not in updated_attach_ids:
# get old data
old_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormAttachments.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
old_instance,
None
)
# Create or update attachments data that are in the request
for frm_att in frm_attach:
if "id" in frm_att:
# get old data
old_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).update(
attachment_type=frm_att['attachment_type'],
attachment_name=frm_att['attachment_name'],
file_name=frm_att['file_name'],
description=frm_att['description'],
file_upload=frm_att['file_upload'],
uploaded_by=frm_att['uploaded_by'],
created=datetime.now())
# get new data
new_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_att['uploaded_by'])
cre = models.ChangeRequestFormAttachments.objects.create(
attachment_type=frm_att['attachment_type'],
attachment_name=frm_att['attachment_name'],
file_name=frm_att['file_name'],
description=frm_att['description'],
file_upload=frm_att['file_upload'],
uploaded_by=user_instance,
created=datetime.now(),
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_ATTACH.value, cre.id)
models.ChangeRequestFormAttachments.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
None,
new_instance
)
# ---------------------------------------------------------------------
# get details data
detail_id = models.ChangeRequestFormDetails.objects.filter(
form_code=form_code)
# list existing id to variable
existing_detail_ids = [item.id for item in detail_id]
frm_details = form_header_data['frm_details']
updated_detail_ids = []
# get all ids
for frm_detail in frm_details:
if "id" in frm_detail:
updated_detail_ids.append(frm_detail['id'])
# Delete any attachments not included in the request
for e in existing_detail_ids:
if e not in updated_detail_ids:
# get old data
old_instance = models.ChangeRequestFormDetails.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormDetails.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
old_instance,
None
)
# Create or update attachments data that are in the request
for frm_detail in frm_details:
if "id" in frm_detail:
# get old data
old_instance = models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).update(
field_idx=frm_detail['field_idx'],
field_ref=frm_detail['field_ref'],
field_val=frm_detail['field_val'],
field_props=frm_detail['field_props'],
created=datetime.now())
# get new data
new_instance = models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
old_instance,
new_instance
)
else:
cre = models.ChangeRequestFormDetails.objects.create(
field_idx=frm_detail['field_idx'],
field_ref=frm_detail['field_ref'],
field_val=frm_detail['field_val'],
field_props=frm_detail['field_props'],
created=datetime.now(),
code='try',
form_code=frm_id)
code = number_generator(enums.GenerateCode.FORM_DETAIL.value, cre.id)
models.ChangeRequestFormDetails.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormDetails.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SAVE.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
None,
new_instance
)
return Response(serializer.data)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
)
@action(
methods=['PATCH'], detail=True,
url_path='submit', url_name='submit'
......@@ -668,12 +1099,496 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
def submit(self, request, *args, **kwargs):
form_code = kwargs['form_code']
form_header_data = request.data
# get pk
frm_id = models.ChangeRequestFormHeader.objects.get(form_code=form_code)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
# get old data
old_instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).values()
old_instance = list(old_instance)
# get data CR Form Header
form_header = get_object_or_404(
models.ChangeRequestFormHeader.objects.all(), pk=frm_id.id)
serializer = serializers.ChangeRequestFormHeaderSerializer(
form_header, data=form_header_data)
if serializer.is_valid():
serializer.save()
# get new data
new_instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).values()
new_instance = list(new_instance)
# save history in form header
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_HEADER.value,
form_code,
old_instance,
new_instance
)
# ---------------------------------------------------------------------
# get approvers data
approver_id = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code)
# list existing id to variable
existing_approver_ids = [item.id for item in approver_id]
frm_approvers = form_header_data['frm_approvers']
updated_approver_ids = []
# get all ids
for frm_approver in frm_approvers:
if "id" in frm_approver:
updated_approver_ids.append(frm_approver['id'])
# Delete any approvers not included in the request
for e in existing_approver_ids:
if e not in updated_approver_ids:
# get old data
old_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormApprovers.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
None
)
# Create or update approver data that are in the request
for frm_approver in frm_approvers:
if "id" in frm_approver:
# get old data
old_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).update(level=frm_approver['level'],
delegation=frm_approver['delegation'],
created=datetime.now(),
remarks=None,
action=None,
action_date=None,
date_sent=None,
user=frm_approver['user'],
tmp_approver=frm_approver['tmp_approver'])
# get new data
new_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=frm_approver['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_approver['user'])
cre = models.ChangeRequestFormApprovers.objects.create(
level=frm_approver['level'],
delegation=frm_approver['delegation'],
created=datetime.now(),
user=user_instance,
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_APPROVER.value, cre.id)
models.ChangeRequestFormApprovers.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormApprovers.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_APPROVER.value,
form_code,
None,
new_instance
)
# ---------------------------------------------------------------------
# get stakes data
stakes_id = models.ChangeRequestFormStakeHolders.objects.filter(
form_code=form_code)
# list existing id to variable
existing_stakes_ids = [item.id for item in stakes_id]
frm_stakes = form_header_data['frm_stakes']
updated_stakes_ids = []
# get all ids
for frm_stake in frm_stakes:
if "id" in frm_stake:
updated_stakes_ids.append(frm_stake['id'])
# Delete any stakes not included in the request
for e in existing_stakes_ids:
if e not in updated_stakes_ids:
# get old data
old_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormStakeHolders.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
old_instance,
None
)
# Create or update stake data that are in the request
for frm_stake in frm_stakes:
if "id" in frm_stake:
# get old data
old_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).update(
delegation=frm_stake['delegation'],
created=datetime.now(),
user=frm_stake['user'],
tmp_stake=frm_stake['tmp_stake'])
# get new data
new_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=frm_stake['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_stake['user'])
cre = models.ChangeRequestFormStakeHolders.objects.create(
delegation=frm_stake['delegation'],
created=datetime.now(),
user=user_instance,
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_STAKE.value, cre.id)
models.ChangeRequestFormStakeHolders.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormStakeHolders.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_STAKE.value,
form_code,
None,
new_instance
)
# ---------------------------------------------------------------------
# get attachments data
attach_id = models.ChangeRequestFormAttachments.objects.filter(
form_code=form_code)
# list existing id to variable
existing_attach_ids = [item.id for item in attach_id]
frm_attach = form_header_data['frm_attachments']
updated_attach_ids = []
# get all ids
for frm_att in frm_attach:
if "id" in frm_att:
updated_attach_ids.append(frm_att['id'])
# Delete any attachments not included in the request
for e in existing_attach_ids:
if e not in updated_attach_ids:
# get old data
old_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormAttachments.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
old_instance,
None
)
# Create or update attachments data that are in the request
for frm_att in frm_attach:
if "id" in frm_att:
# get old data
old_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).update(
attachment_type=frm_att['attachment_type'],
attachment_name=frm_att['attachment_name'],
file_name=frm_att['file_name'],
description=frm_att['description'],
file_upload=frm_att['file_upload'],
uploaded_by=frm_att['uploaded_by'],
created=datetime.now())
# get new data
new_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=frm_att['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
old_instance,
new_instance
)
else:
user_instance = models.User.objects.get(
code=frm_att['uploaded_by'])
cre = models.ChangeRequestFormAttachments.objects.create(
attachment_type=frm_att['attachment_type'],
attachment_name=frm_att['attachment_name'],
file_name=frm_att['file_name'],
description=frm_att['description'],
file_upload=frm_att['file_upload'],
uploaded_by=user_instance,
created=datetime.now(),
form_code=frm_id,
code='try')
code = number_generator(enums.GenerateCode.FORM_ATTACH.value, cre.id)
models.ChangeRequestFormAttachments.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormAttachments.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
form_code,
None,
new_instance
)
# ---------------------------------------------------------------------
# get details data
detail_id = models.ChangeRequestFormDetails.objects.filter(
form_code=form_code)
# list existing id to variable
existing_detail_ids = [item.id for item in detail_id]
frm_details = form_header_data['frm_details']
updated_detail_ids = []
# get all ids
for frm_detail in frm_details:
if "id" in frm_detail:
updated_detail_ids.append(frm_detail['id'])
# Delete any attachments not included in the request
for e in existing_detail_ids:
if e not in updated_detail_ids:
# get old data
old_instance = models.ChangeRequestFormDetails.objects.filter(
pk=e).values()
old_instance = list(old_instance)
models.ChangeRequestFormDetails.objects.filter(
pk=e).delete()
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.DELETED.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
old_instance,
None
)
# Create or update attachments data that are in the request
for frm_detail in frm_details:
if "id" in frm_detail:
# get old data
old_instance = models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).values()
old_instance = list(old_instance)
models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).update(
field_idx=frm_detail['field_idx'],
field_ref=frm_detail['field_ref'],
field_val=frm_detail['field_val'],
field_props=frm_detail['field_props'],
created=datetime.now())
# get new data
new_instance = models.ChangeRequestFormDetails.objects.filter(
pk=frm_detail['id']).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.UPDATE.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
old_instance,
new_instance
)
else:
cre = models.ChangeRequestFormDetails.objects.create(
field_idx=frm_detail['field_idx'],
field_ref=frm_detail['field_ref'],
field_val=frm_detail['field_val'],
field_props=frm_detail['field_props'],
created=datetime.now(),
code='try',
form_code=frm_id)
code = number_generator(enums.GenerateCode.FORM_DETAIL.value, cre.id)
models.ChangeRequestFormDetails.objects.filter(
id=cre.id).update(code=code)
# get new data
new_instance = models.ChangeRequestFormDetails.objects.filter(
pk=cre.id).values()
new_instance = list(new_instance)
# save history in form approver
crhistory_save(
"BATCH-20190920-000001",
enums.CREnum.SUBMIT.value,
enums.CREnum.ADD.value,
enums.CREntitiesEnum.CR_FRM_DETAIL.value,
form_code,
None,
new_instance
)
return Response(serializer.data)
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormApprovers.objects.all()
......@@ -765,8 +1680,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
if ObjectId:
dbExisting = models.ChangeRequestFormAttachments.objects.filter(
id=ObjectId,
archived_at=None).first()
id=ObjectId).first()
if dbExisting:
dbExisting.archived_at = datetime.now()
......@@ -816,11 +1730,9 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
if ObjectId:
dbExisting = models.ChangeRequestFormStakeHolders.objects.filter(
id=ObjectId,
archived_at=None).first()
id=ObjectId).first()
if dbExisting:
dbExisting.archived_at = datetime.now()
dbExisting.save()
self.perform_create(serializer)
......@@ -857,11 +1769,9 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
if ObjectId:
dbExisting = models.ChangeRequestFormDetails.objects.filter(
id=ObjectId,
archived_at=None).first()
id=ObjectId).first()
if dbExisting:
dbExisting.archived_at = datetime.now()
dbExisting.save()
self.perform_create(serializer)
......
......@@ -14,6 +14,7 @@ from django.forms.models import model_to_dict
from rest_framework.exceptions import ParseError
from django.db import IntegrityError
from rest_framework.exceptions import APIException
from django.db.models import Max
CR_FRONT_LINK = settings.CR_FRONT_LINK
......@@ -395,13 +396,18 @@ def cancel_overdue(request):
return True
def crhistory_save(action, entity, form_code, fromValue, toValue):
def crhistory_save(batch_no, main_action,
action, entity, form_code,
fromValue, toValue):
models.ChangeRequestHistory.objects.create(
batch_no=batch_no,
main_action=main_action,
action=action,
entity=entity,
form_code=form_code,
fromValue=fromValue,
toValue=toValue
)
return True
\ No newline at end of file
# Generated by Django 2.2 on 2019-09-20 16:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0005_auto_20190919_1625'),
]
operations = [
migrations.AddField(
model_name='changerequesthistory',
name='batch_no',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AddField(
model_name='changerequesthistory',
name='main_action',
field=models.CharField(blank=True, max_length=255, null=True),
),
]
......@@ -875,6 +875,14 @@ CR HISTORY
'''
class ChangeRequestHistory(AuditClass):
batch_no = models.CharField(
max_length=255,
blank=True,
null=True)
main_action = models.CharField(
max_length=255,
blank=True,
null=True)
action = models.CharField(
max_length=50)
entity = models.CharField(
......
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