Commit 24f850da authored by John Red Medrano's avatar John Red Medrano

Merge pull request #339 in RMS/api-main-service from RMSv2 to staging

* commit '73ff6429':
  added can_delete field on list of template to check if the instance can be delete or not
  file upload update
  added file upload on form
parents 5cfb4252 73ff6429
...@@ -793,7 +793,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -793,7 +793,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter( the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor' form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last() ).order_by('level').last()
if (current_user == the_last_vendor.user.code and if (current_user == the_last_vendor.user.code and
level == the_last_vendor.level): level == the_last_vendor.level):
models.ChangeRequestFormHeader.objects.filter( models.ChangeRequestFormHeader.objects.filter(
...@@ -1249,6 +1249,72 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -1249,6 +1249,72 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
return Response(message, return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@transaction.atomic()
@action(
methods=['PATCH'], detail=True,
url_path='file_upload', url_name='file_upload'
)
def file_upload(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', True)
attach_body = request.data
form_code = kwargs['form_code']
id_number = self.request.user.code
# generate batchno history
batchno = get_max_batchno("batch")
change_request.attachment_add_edit_delete(
attach_body['attachments'],
models.ChangeRequestFormAttachments,
enums.CREntitiesEnum.CR_FRM_ATTACHMENT.value,
ChangeRequestFormAttachmentsSerializer,
partial,
self,
form_code,
batchno,
enums.CREnum.FILE_UPLOAD.value,
id_number
)
# data_list_attach = []
# # create form attachments
# if attach_body['attachments']:
# frm_attachments = attach_body['attachments']
# for frm_attachment in frm_attachments:
# frm_attachment['form_code'] = form_code
# frm_attachment['uploaded_by'] = id_number
# data_list_attach.append(frm_attachment)
# serializerAttach = ChangeRequestFormAttachmentsSerializer(
# data=data_list_attach, many=True)
# if serializerAttach.is_valid(raise_exception=True):
# serializerAttach.save()
message = status_message_response(
200, 'success',
'Attachments successfully updated!',
''
)
return Response(message, status=status.HTTP_200_OK)
except Exception as e:
message = status_message_response(
500, 'failed',
'Request was not able to process' + str(e), []
)
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ChangeRequestFormPost(APIView): class ChangeRequestFormPost(APIView):
@transaction.atomic() @transaction.atomic()
......
...@@ -19,7 +19,7 @@ class UserListTemplate(APIView): ...@@ -19,7 +19,7 @@ class UserListTemplate(APIView):
user_codes = models.User.objects.filter( user_codes = models.User.objects.filter(
department=dept department=dept
).values('code').exclude(id=1) ).values('code').exclude(id=1)
verified_users = models.AllowedCompany.objects.filter( verified_users = models.AllowedCompany.objects.filter(
Q(id_number__in=user_codes) & Q(id_number__in=user_codes) &
Q(create_change_request_template=True) Q(create_change_request_template=True)
......
...@@ -51,6 +51,7 @@ class ChangeRequestTemplatesSerializer( ...@@ -51,6 +51,7 @@ class ChangeRequestTemplatesSerializer(
ret['created_by'] = instance.created_by_user.name ret['created_by'] = instance.created_by_user.name
return ret return ret
except Exception as e: except Exception as e:
ret['requested_to_company'] = "none" ret['requested_to_company'] = "none"
...@@ -90,6 +91,22 @@ class ChangeRequestTemplatesSerializerList( ...@@ -90,6 +91,22 @@ class ChangeRequestTemplatesSerializerList(
ret['department'] = instance.requested_to_department.name ret['department'] = instance.requested_to_department.name
ret['point_of_contact'] = instance.requested_to_user.name ret['point_of_contact'] = instance.requested_to_user.name
ret['created_by'] = instance.created_by_user.name ret['created_by'] = instance.created_by_user.name
child = models.ChangeRequestFormHeader.objects.filter(
template_no=instance.template_no
)
can_delete = ''
if child.count() > 0:
can_delete = False
else:
can_delete = True
ret['can_delete'] = can_delete
return ret return ret
except Exception as e: except Exception as e:
......
...@@ -327,4 +327,89 @@ def form_add_edit_delete(form_request_body, ...@@ -327,4 +327,89 @@ def form_add_edit_delete(form_request_body,
new_instance new_instance
) )
return True
def attachment_add_edit_delete(form_request_body,
queryset,
entity,
serializer_data,
partial,
self,
form_code,
batch_no,
main_action,
id_number):
# delete ids not in request body
request_ids = [i['id'] for i in form_request_body if "id" in i]
delete_query = queryset.objects.filter(
form_code=form_code
).exclude(
id__in=request_ids
)
if delete_query.count() > 0:
crhistory_log_bulk_delete(delete_query,
entity,
queryset,
form_code,
batch_no,
main_action
)
# update or create
for i in form_request_body:
if "id" in i:
frm_instance = queryset.objects.get(
pk=i['id']
)
frm_code = {
"form_code": form_code
}
data = {**i, **frm_code}
serializer = serializer_data(frm_instance,
data=data,
partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance)
self.perform_update(serializer)
new_instance = serializer.data
# comment
crhistory_save(
batch_no,
main_action,
enums.CREnum.UPDATE.value,
entity,
form_code,
old_instance,
new_instance
)
else:
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
serializer = serializer_data(data=data)
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
)
return True return True
\ No newline at end of file
...@@ -111,6 +111,7 @@ class CREnum(Enum): ...@@ -111,6 +111,7 @@ class CREnum(Enum):
REJECTED = "REJECTED" REJECTED = "REJECTED"
ACTION = "ACTION" ACTION = "ACTION"
CREATE = "CREATE" CREATE = "CREATE"
FILE_UPLOAD = "FILE_UPLOAD"
class CREntitiesEnum(Enum): class CREntitiesEnum(Enum):
......
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