Commit cde3f61d authored by Gladys Forte's avatar Gladys Forte

Merge pull request #778 in RMS/api-main-service from core-dev-gladys to RMSv2

* commit '985df577':
  {dev bugfix} added condition for id=null add_edit_delete functions on header childs
parents 40cd526c 985df577
...@@ -1192,6 +1192,13 @@ class ChangeRequestFormPost(APIView): ...@@ -1192,6 +1192,13 @@ class ChangeRequestFormPost(APIView):
form_header = request.data form_header = request.data
try: try:
# Restrict a requestor to submit a CR without atleast 1 approver
counter = validation_existing_approver(form_header['frm_approvers'])
if form_header['status'].lower() == 'pending' and counter == 0:
return error_message('400', 'Please select at least 1 approver before submitting this request.',
'failed', status.HTTP_400_BAD_REQUEST)
data_list_approver = [] data_list_approver = []
data_list_stake = [] data_list_stake = []
data_list_attach = [] data_list_attach = []
...@@ -1213,10 +1220,6 @@ class ChangeRequestFormPost(APIView): ...@@ -1213,10 +1220,6 @@ class ChangeRequestFormPost(APIView):
'template_no': form_header['template_no'] 'template_no': form_header['template_no']
} }
# 'company_desc': None,
# 'department_desc': None,
# 'requested_desc': None,
sp1 = transaction.savepoint() # nothing will save to db sp1 = transaction.savepoint() # nothing will save to db
serializer = ChangeRequestFormHeaderSerializer( serializer = ChangeRequestFormHeaderSerializer(
......
...@@ -293,34 +293,56 @@ def form_add_edit_delete(form_request_body, ...@@ -293,34 +293,56 @@ def form_add_edit_delete(form_request_body,
# update or create # update or create
for i in form_request_body: for i in form_request_body:
if "id" in i: if "id" in i:
frm_instance = queryset.objects.get( if not i['id'] is None:
pk=i['id'] frm_instance = queryset.objects.get(
) pk=i['id']
)
frm_code = { frm_code = {
"form_code": form_code "form_code": form_code
} }
data = {**i, **frm_code} data = {**i, **frm_code}
serializer = serializer_data(frm_instance, serializer = serializer_data(frm_instance,
data=data, data=data,
partial=partial, partial=partial,
context={"request":self.request}) context={"request": self.request})
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)
self.perform_update(serializer) self.perform_update(serializer)
new_instance = serializer.data new_instance = serializer.data
# comment crhistory_save(
crhistory_save( batch_no,
batch_no, main_action,
main_action, enums.CREnum.UPDATE.value,
enums.CREnum.UPDATE.value, entity,
entity, form_code,
form_code, old_instance,
old_instance, new_instance
new_instance )
)
else:
frm_code = {
"form_code": form_code
}
data = {**i, **frm_code}
serializer = serializer_data(data=data,
context={"request": self.request})
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
new_instance = serializer.data
crhistory_save(
batch_no,
main_action,
enums.CREnum.ADD.value,
entity,
form_code,
None,
new_instance
)
else: else:
frm_code = { frm_code = {
...@@ -328,7 +350,7 @@ def form_add_edit_delete(form_request_body, ...@@ -328,7 +350,7 @@ def form_add_edit_delete(form_request_body,
} }
data = {**i, **frm_code} data = {**i, **frm_code}
serializer = serializer_data(data=data, serializer = serializer_data(data=data,
context={"request":self.request}) context={"request": self.request})
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
self.perform_create(serializer) self.perform_create(serializer)
...@@ -379,54 +401,78 @@ def attachment_add_edit_delete(form_request_body, ...@@ -379,54 +401,78 @@ def attachment_add_edit_delete(form_request_body,
# update or create # update or create
for i in form_request_body: for i in form_request_body:
if "id" in i: if "id" in i:
frm_instance = queryset.objects.get( if not i['id'] is None:
pk=i['id'] frm_instance = queryset.objects.get(
) pk=i['id']
)
data_old = { data_old = {
'id': frm_instance.id, 'id': frm_instance.id,
'attachment_type': frm_instance.attachment_type, 'attachment_type': frm_instance.attachment_type,
'attachment_name': frm_instance.attachment_name, 'attachment_name': frm_instance.attachment_name,
'file_name': frm_instance.file_name, 'file_name': frm_instance.file_name,
'description': frm_instance.description, 'description': frm_instance.description,
'file_upload': frm_instance.file_upload.id 'file_upload': frm_instance.file_upload.id
} }
data_new = {
'id': i['id'],
'attachment_type': i['attachment_type'],
'attachment_name': i['attachment_name'],
'file_name': i['file_name'],
'description': i['description'],
'file_upload': i['file_upload']
}
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
old_instance = model_to_dict(frm_instance)
if not data_old == data_new:
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request": self.request})
data_new = { serializer.is_valid(raise_exception=True)
'id': i['id'],
'attachment_type': i['attachment_type'], self.perform_update(serializer)
'attachment_name': i['attachment_name'], new_instance = serializer.data
'file_name': i['file_name'],
'description': i['description'], crhistory_save(
'file_upload': i['file_upload'] batch_no,
} main_action,
enums.CREnum.UPDATE.value,
frm_code = { entity,
"form_code": form_code, form_code,
"uploaded_by": id_number old_instance,
} new_instance
data = {**i, **frm_code} )
old_instance = model_to_dict(frm_instance)
if not data_old == data_new:
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request": self.request})
else:
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
serializer = serializer_data(data=data,
context={"request":self.request})
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
self.perform_update(serializer) self.perform_create(serializer)
new_instance = serializer.data new_instance = serializer.data
crhistory_save( crhistory_save(
batch_no, batch_no,
main_action, main_action,
enums.CREnum.UPDATE.value, enums.CREnum.ADD.value,
entity, entity,
form_code, form_code,
old_instance, None,
new_instance new_instance
) )
......
...@@ -51,31 +51,60 @@ def tmp_add_edit_delete(tmp_request_body, ...@@ -51,31 +51,60 @@ def tmp_add_edit_delete(tmp_request_body,
# update or create # update or create
for i in tmp_request_body: for i in tmp_request_body:
if "id" in i: if "id" in i:
tmp_instance = queryset.objects.get( if not i['id'] is None:
pk=i['id'] tmp_instance = queryset.objects.get(
) pk=i['id']
tmp_code = { )
"template_no": template_no tmp_code = {
} "template_no": template_no
data = {**i, **tmp_code} }
data = {**i, **tmp_code}
serializer = serializer_data(tmp_instance,
data=data, serializer = serializer_data(tmp_instance,
partial=partial) data=data,
partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(tmp_instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enum_type,
i['id'],
old_instance,
new_instance
)
else:
tmp_code = {
"template_no": template_no
}
data = {**i, **tmp_code}
serializer = serializer_data(data=data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
new_instance = serializer.data
try:
log_save(
enums.LogEnum.ADD.value,
enum_type,
old_instance['id'],
'',
new_instance
)
except Exception as e:
log_save(
enums.LogEnum.ADD.value,
enum_type,
new_instance['id'],
'',
new_instance
)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(tmp_instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enum_type,
i['id'],
old_instance,
new_instance
)
else: else:
tmp_code = { tmp_code = {
"template_no": template_no "template_no": template_no
...@@ -183,7 +212,7 @@ def validation_vendor_unique_level(approvers): ...@@ -183,7 +212,7 @@ def validation_vendor_unique_level(approvers):
if 'delegation' in approver: if 'delegation' in approver:
if approver['delegation'] == 'DELEGATION-20191119-0000002': if approver['delegation'] == 'DELEGATION-20191119-0000002':
data_level.append(approver['level']) data_level.append(approver['level'])
for approver in approvers: for approver in approvers:
if 'delegation' in approver: if 'delegation' in approver:
if not approver['delegation'] is None: if not approver['delegation'] is None:
......
...@@ -399,12 +399,6 @@ def FormValidation(function): ...@@ -399,12 +399,6 @@ def FormValidation(function):
return error_message('400', validation_result + ' is already exist for the same level of approval.', return error_message('400', validation_result + ' is already exist for the same level of approval.',
'failed', status.HTTP_400_BAD_REQUEST) 'failed', status.HTTP_400_BAD_REQUEST)
# Restrict a requestor to submit a CR without atleast 1 approver
counter = validation_existing_approver(frm_approvers)
if form_header['status'].lower() == 'pending' and counter == 0:
return error_message('400', 'Please select at least 1 approver before submitting this request.',
'failed', status.HTTP_400_BAD_REQUEST)
# Do not allow saving user as Vendor and other delegation # Do not allow saving user as Vendor and other delegation
validate = validation_poc_vendor_only( validate = validation_poc_vendor_only(
form_header['requested_to_user'], frm_approvers) form_header['requested_to_user'], frm_approvers)
......
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