Commit e4a0028b authored by Gladys Forte's avatar Gladys Forte

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

* commit '9744cbd4':
  edit template
  undo
parents 7bda9f15 9744cbd4
...@@ -2,6 +2,7 @@ from app.entities import models ...@@ -2,6 +2,7 @@ from app.entities import models
from rest_framework import serializers from rest_framework import serializers
from django.db.models import Q from django.db.models import Q
from drf_writable_nested import WritableNestedModelSerializer from drf_writable_nested import WritableNestedModelSerializer
from django.forms.models import model_to_dict
from app.applicationlayer.cms.utils_cr import (get_account_details, from app.applicationlayer.cms.utils_cr import (get_account_details,
get_dept_details, get_dept_details,
get_companies_details) get_companies_details)
...@@ -27,6 +28,11 @@ class ChangeRequestFormApproversSerializer( ...@@ -27,6 +28,11 @@ class ChangeRequestFormApproversSerializer(
ret['name'] = name ret['name'] = name
ret['department'] = department ret['department'] = department
ret['company'] = company ret['company'] = company
# ret['company'] = model_to_dict(instance.user.department.company)
# ret['department'] = model_to_dict(instance.user.department)
# ret['name'] = model_to_dict(instance.user)
return ret return ret
except Exception as e: except Exception as e:
......
...@@ -345,7 +345,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -345,7 +345,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
min_level = min_level.get('level__min') min_level = min_level.get('level__min')
next_approver_email(form_code, min_level) next_approver_email(form_code, min_level)
# update next approver details # update next approver details
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=str(min_level)) Q(form_code=form_code) & Q(level=str(min_level))
...@@ -365,7 +365,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -365,7 +365,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
url_path='re_submit', url_name='re_submit' url_path='re_submit', url_name='re_submit'
) )
def re_submit(self, request, *args, **kwargs): def re_submit(self, request, *args, **kwargs):
# generate batchno history # generate batchno history
batchno = get_max_batchno("batch") batchno = get_max_batchno("batch")
...@@ -375,12 +375,21 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -375,12 +375,21 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code = kwargs['form_code'] form_code = kwargs['form_code']
# get prefix from template header
frm = models.ChangeRequestFormHeader.objects.get(
form_code=form_code)
tmp_prefix = models.ChangeRequestTemplateHeader.objects.get(
template_no=frm.template_no.template_no
)
status_update = {"status": 'Draft'} data_update = {
"status": 'Draft',
"created": datetime.now(),
"requested_to_template_id": tmp_prefix.requested_to_template_id
}
serializer = self.get_serializer(instance, serializer = self.get_serializer(instance,
data=status_update, data=data_update,
partial=partial) partial=partial)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
...@@ -415,7 +424,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -415,7 +424,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
'action': None, 'action': None,
'remarks': None, 'remarks': None,
'date_sent': None, 'date_sent': None,
'action_date': None 'action_date': None,
'created': datetime.now()
} }
approver_data.append(approver_add) approver_data.append(approver_add)
...@@ -460,7 +470,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -460,7 +470,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# generate batchno history # generate batchno history
batchno = get_max_batchno("batch") batchno = get_max_batchno("batch")
action_data = { action_data = {
'id': int(request.data['id']), 'id': int(request.data['id']),
'action': action, 'action': action,
...@@ -602,7 +612,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -602,7 +612,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
) )
def save(self, request, *args, **kwargs): def save(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False) partial = kwargs.pop('partial', True)
instance = self.get_object() instance = self.get_object()
form_code = kwargs['form_code'] form_code = kwargs['form_code']
...@@ -643,7 +653,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -643,7 +653,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code, form_code,
batchno, batchno,
enums.CREnum.SAVE.value enums.CREnum.SAVE.value
) )
change_request.form_add_edit_delete( change_request.form_add_edit_delete(
form_data['frm_stakes'], form_data['frm_stakes'],
...@@ -655,7 +665,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -655,7 +665,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code, form_code,
batchno, batchno,
enums.CREnum.SAVE.value enums.CREnum.SAVE.value
) )
change_request.form_add_edit_delete( change_request.form_add_edit_delete(
form_data['frm_attachments'], form_data['frm_attachments'],
...@@ -667,7 +677,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -667,7 +677,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code, form_code,
batchno, batchno,
enums.CREnum.SAVE.value enums.CREnum.SAVE.value
) )
change_request.form_add_edit_delete( change_request.form_add_edit_delete(
form_data['frm_details'], form_data['frm_details'],
...@@ -679,7 +689,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -679,7 +689,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
form_code, form_code,
batchno, batchno,
enums.CREnum.SAVE.value enums.CREnum.SAVE.value
) )
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
...@@ -698,7 +708,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -698,7 +708,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
) )
def submit(self, request, *args, **kwargs): def submit(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False) partial = kwargs.pop('partial', True)
instance = self.get_object() instance = self.get_object()
form_code = kwargs['form_code'] form_code = kwargs['form_code']
...@@ -707,16 +717,31 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -707,16 +717,31 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# generate batchno history # generate batchno history
batchno = get_max_batchno("batch") batchno = get_max_batchno("batch")
# generate requested_to_template_id
data_update = {
"status": 'Pendsing',
"created": datetime.now(),
"requested_to_template_id": "JTC"
}
data = {**form_data, **data_update}
# update form header # update form header
serializer = self.get_serializer(instance, serializer = self.get_serializer(instance,
data=form_data, data=data,
partial=partial) partial=partial)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance) old_instance = model_to_dict(instance)
self.perform_update(serializer) self.perform_update(serializer)
new_instance = serializer.data
print(serializer.errors) form_header = get_object_or_404(models.ChangeRequestFormHeader,
pk=instance.id)
new_instance = model_to_dict(form_header)
# print(serializer.errors)
# save history in form header # save history in form header
crhistory_save( crhistory_save(
...@@ -793,60 +818,7 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -793,60 +818,7 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
serializer_class = serializers.ChangeRequestFormApproversSerializer serializer_class = serializers.ChangeRequestFormApproversSerializer
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
lookup_field = 'code' lookup_field = 'code'
# def create(self, request, *args, **kwargs):
# ObjectId = request.data.get('id')
# sent = False
# if 'form_status' in request.data:
# # for email
# if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
# user = request.data['user']
# form_code = request.data['form_code']
# delegation = request.data['delegation']
# # initial_email(user, form_code, delegation)
# # EMAIL CODE FOR APPROVER
# notification_msg = APPROVER_MESSAGE.split(';')[0]
# email_code = APPROVER_MESSAGE.split(';')[1]
# next_appover_email(
# user, form_code, delegation,
# notification_msg, 'initial', email_code
# )
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
# sent = True
# serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
# if ObjectId:
# dbExisting = models.ChangeRequestFormApprovers.objects.filter(
# id=ObjectId,
# archived_at=None).first()
# if dbExisting:
# dbExisting.archived_at = datetime.now()
# dbExisting.save()
# # x = self.perform_create(serializer)
# serializer.id = None
# x = serializer.save()
# if sent == True:
# x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
# x.save()
# headers = self.get_success_headers(serializer.data)
# return Response(
# serializer.data,
# status=status.HTTP_201_CREATED,
# headers=headers
# )
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestFormApproversViewset, self).list(request) return super(ChangeRequestFormApproversViewset, self).list(request)
...@@ -1018,12 +990,7 @@ class ChangeRequestFormPost(APIView): ...@@ -1018,12 +990,7 @@ class ChangeRequestFormPost(APIView):
'template_no': form_header['template_no'] 'template_no': form_header['template_no']
} }
frm_approvers = form_header['frm_approvers'] sp1 = transaction.savepoint() # nothing will save to db
frm_stakes = form_header['frm_stakes']
frm_attachments = form_header['frm_attachments']
frm_details = form_header['frm_details']
# sp1 = transaction.savepoint() # nothing will save to db
serializer = serializers.ChangeRequestFormHeaderSerializer( serializer = serializers.ChangeRequestFormHeaderSerializer(
data=form_header_data) data=form_header_data)
...@@ -1033,27 +1000,23 @@ class ChangeRequestFormPost(APIView): ...@@ -1033,27 +1000,23 @@ class ChangeRequestFormPost(APIView):
template_no = serializer.data['template_no'] template_no = serializer.data['template_no']
tmp_counter = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no).count()
# tmp_counter = tmp_counter + 1
CR_Prefix = serializer.data['requested_to_template_id'] CR_Prefix = serializer.data['requested_to_template_id']
generate_tmp = number_generator(CR_Prefix, tmp_counter)
frm_id = serializer.data['form_code'] frm_id = serializer.data['form_code']
print(frm_id)
models.ChangeRequestFormHeader.objects.filter( # generate requested template id
form_code=frm_id).update(
requested_to_template_id=generate_tmp)
# create template approvers # create template approvers
frm_approvers = form_header['frm_approvers']
counter = 0 counter = 0
for frm_approver in frm_approvers: for frm_approver in frm_approvers:
frm_approver['form_code'] = frm_id frm_approver['form_code'] = frm_id
counter = counter + 1 counter = counter + 1
data_list_approver.append(frm_approver) data_list_approver.append(frm_approver)
#append vendor and requestor in routing table
counter = counter + 1 counter = counter + 1
vendor_data = { vendor_data = {
'level': counter, 'level': counter,
...@@ -1063,7 +1026,6 @@ class ChangeRequestFormPost(APIView): ...@@ -1063,7 +1026,6 @@ class ChangeRequestFormPost(APIView):
} }
data_list_approver.append(vendor_data) data_list_approver.append(vendor_data)
counter = counter + 1 counter = counter + 1
requestor_data = { requestor_data = {
'level': counter, 'level': counter,
...@@ -1079,42 +1041,45 @@ class ChangeRequestFormPost(APIView): ...@@ -1079,42 +1041,45 @@ class ChangeRequestFormPost(APIView):
if serializerApprover.is_valid(raise_exception=True): if serializerApprover.is_valid(raise_exception=True):
serializerApprover.save() serializerApprover.save()
# create template stakes # create template stakes
if form_header['frm_stakes']:
frm_stakes = form_header['frm_stakes']
for frm_stake in frm_stakes:
frm_stake['form_code'] = frm_id
data_list_stake.append(frm_stake)
for frm_stake in frm_stakes: serializerStake = serializers.ChangeRequestFormStakeHoldersSerializer(
frm_stake['form_code'] = frm_id data=data_list_stake, many=True)
data_list_stake.append(frm_stake)
serializerStake = serializers.ChangeRequestFormStakeHoldersSerializer( if serializerStake.is_valid(raise_exception=True):
data=data_list_stake, many=True) serializerStake.save()
if serializerStake.is_valid(raise_exception=True):
serializerStake.save()
# create template attachments # create template attachments
if form_header['frm_attachments']:
frm_attachments = form_header['frm_attachments']
for frm_attachment in frm_attachments:
frm_attachment['form_code'] = frm_id
data_list_attach.append(frm_attachment)
for frm_attachment in frm_attachments: serializerAttach = serializers.ChangeRequestFormAttachmentsSerializer(
frm_attachment['form_code'] = frm_id data=data_list_attach, many=True)
data_list_attach.append(frm_attachment)
serializerAttach = serializers.ChangeRequestFormAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True): if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save() serializerAttach.save()
# create template details # create template details
if form_header['frm_details']:
for frm_detail in frm_details: frm_details = form_header['frm_details']
frm_detail['form_code'] = frm_id for frm_detail in frm_details:
data_list_detail.append(frm_detail) frm_detail['form_code'] = frm_id
data_list_detail.append(frm_detail)
serializerDetail = serializers.ChangeRequestFormDetailsSerializer(
data=data_list_detail, many=True) serializerDetail = serializers.ChangeRequestFormDetailsSerializer(
data=data_list_detail, many=True)
if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save() if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
message = { message = {
'code': 201, 'code': 201,
...@@ -1126,7 +1091,7 @@ class ChangeRequestFormPost(APIView): ...@@ -1126,7 +1091,7 @@ class ChangeRequestFormPost(APIView):
return Response(message, status=status.HTTP_201_CREATED) return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e: except ValidationError as e:
# transaction.savepoint_rollback(sp1) transaction.savepoint_rollback(sp1)
message = { message = {
'code': 400, 'code': 400,
'status': 'failed', 'status': 'failed',
...@@ -1135,7 +1100,7 @@ class ChangeRequestFormPost(APIView): ...@@ -1135,7 +1100,7 @@ class ChangeRequestFormPost(APIView):
return Response(message, status=status.HTTP_400_BAD_REQUEST) return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e: except Exception as e:
# transaction.savepoint_rollback(sp1) transaction.savepoint_rollback(sp1)
message = { message = {
'code': 500, 'code': 500,
'status': 'failed', 'status': 'failed',
......
...@@ -256,35 +256,38 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet): ...@@ -256,35 +256,38 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
template_no template_no
) )
tmp_add_edit_delete( if body_data['tmp_stakes']:
body_data['tmp_stakes'], tmp_add_edit_delete(
models.ChangeRequestTemplateStakeHolders, body_data['tmp_stakes'],
enums.LogEntitiesEnum.ChangeRequestTemplateStakeHolders.value, models.ChangeRequestTemplateStakeHolders,
serializers.ChangeRequestTemplateStakeHoldersSerializer, enums.LogEntitiesEnum.ChangeRequestTemplateStakeHolders.value,
partial, serializers.ChangeRequestTemplateStakeHoldersSerializer,
self, partial,
template_no self,
) template_no
)
tmp_add_edit_delete( if body_data['tmp_attachments']:
body_data['tmp_attachments'], tmp_add_edit_delete(
models.ChangeRequestTemplateAttachments, body_data['tmp_attachments'],
enums.LogEntitiesEnum.ChangeRequestTemplateAttachments.value, models.ChangeRequestTemplateAttachments,
serializers.ChangeRequestTemplateAttachmentsSerializer, enums.LogEntitiesEnum.ChangeRequestTemplateAttachments.value,
partial, serializers.ChangeRequestTemplateAttachmentsSerializer,
self, partial,
template_no self,
) template_no
)
tmp_add_edit_delete( if body_data['tmp_details']:
body_data['tmp_details'], tmp_add_edit_delete(
models.ChangeRequestTemplateDetails, body_data['tmp_details'],
enums.LogEntitiesEnum.ChangeRequestTemplateDetails.value, models.ChangeRequestTemplateDetails,
serializers.ChangeRequestTemplateDetailsSerializer, enums.LogEntitiesEnum.ChangeRequestTemplateDetails.value,
partial, serializers.ChangeRequestTemplateDetailsSerializer,
self, partial,
template_no self,
) template_no
)
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
...@@ -375,7 +378,7 @@ class ChangeRequestTemplatePost(APIView): ...@@ -375,7 +378,7 @@ class ChangeRequestTemplatePost(APIView):
serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer( serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer(
data=data_list_attach, many=True) data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True): if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save() serializerAttach.save()
...@@ -468,7 +471,7 @@ class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet): ...@@ -468,7 +471,7 @@ class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet):
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
page = self.paginate_queryset(self.queryset) page = self.paginate_queryset(self.queryset)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
......
...@@ -471,3 +471,15 @@ def crhistory_log_bulk_delete(queryset, entity, tbl, form_code, ...@@ -471,3 +471,15 @@ def crhistory_log_bulk_delete(queryset, entity, tbl, form_code,
return True return True
except IntegrityError as exc: except IntegrityError as exc:
raise APIException(detail=exc) raise APIException(detail=exc)
def generate_template_id(prefix, form_code, template_no):
print("hello")
tmp_counter = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no).count()
generate_tmp = number_generator(prefix, tmp_counter)
models.ChangeRequestFormHeader.objects.filter(
form_code=frm_id).update(
requested_to_template_id=generate_tmp)
\ No newline at end of file
...@@ -440,7 +440,7 @@ class MasterAttachment(models.Model): ...@@ -440,7 +440,7 @@ class MasterAttachment(models.Model):
upload_to='uploads/', upload_to='uploads/',
blank=True, blank=True,
null=True) null=True)
class Meta: class Meta:
db_table = 'master_attachments' db_table = 'master_attachments'
......
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