Commit 1ad33691 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #337 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit 'bb59c77c':
  file upload update
parents 2ebe8a2a bb59c77c
......@@ -1252,36 +1252,56 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
@transaction.atomic()
@action(
methods=['POST'], detail=True,
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
data_list_attach = []
# generate batchno history
batchno = get_max_batchno("batch")
# 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)
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
)
serializerAttach = ChangeRequestFormAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
# 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',
'New Attachments successfully saved!',
serializerAttach.data
'Attachments successfully updated!',
''
)
return Response(message, status=status.HTTP_200_OK)
......
......@@ -328,3 +328,88 @@ def form_add_edit_delete(form_request_body,
)
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
\ No newline at end of file
......@@ -111,6 +111,7 @@ class CREnum(Enum):
REJECTED = "REJECTED"
ACTION = "ACTION"
CREATE = "CREATE"
FILE_UPLOAD = "FILE_UPLOAD"
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