Commit 790651f2 authored by Gladys Forte's avatar Gladys Forte

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

* commit '569c4a9b':
  update requirements
  re route and resubmit
parents 8003affc 569c4a9b
...@@ -63,7 +63,7 @@ class ChangeRequestFormDetailsSerializer( ...@@ -63,7 +63,7 @@ class ChangeRequestFormDetailsSerializer(
class ChangeRequestFormHeaderSerializer( class ChangeRequestFormHeaderSerializer(
serializers.ModelSerializer WritableNestedModelSerializer
): ):
frm_approvers = ChangeRequestFormApproversSerializer( frm_approvers = ChangeRequestFormApproversSerializer(
many=True, required=False) many=True, required=False)
...@@ -73,13 +73,15 @@ class ChangeRequestFormHeaderSerializer( ...@@ -73,13 +73,15 @@ class ChangeRequestFormHeaderSerializer(
many=True, required=False) many=True, required=False)
frm_details = ChangeRequestFormDetailsSerializer( frm_details = ChangeRequestFormDetailsSerializer(
many=True, required=False) many=True, required=False)
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(instance) ret = super().to_representation(instance)
try: try:
# id_number = self.context.get('request').META.get('user') # id_number = self.context.get('request').META.get('user')
user = self.context['request'].user
id_number = "USER-20190909-0000005" print(user)
# id_number = "USER-20190909-0000005"
current_level = models.ChangeRequestFormApprovers.objects.filter( current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=ret['form_code']) & Q(form_code=ret['form_code']) &
Q(archived_at=None) & Q(archived_at=None) &
...@@ -105,5 +107,15 @@ class ChangeRequestFormHeaderSerializer( ...@@ -105,5 +107,15 @@ class ChangeRequestFormHeaderSerializer(
class Meta: class Meta:
model = models.ChangeRequestFormHeader model = models.ChangeRequestFormHeader
fields = '__all__' # fields = '__all__'
fields = ('form_code', 'requested_to_template_name', 'requested_to_objective',
'requested_to_target_date', 'requested_to_priority',
'description', 'created', 'cancel_date', 'status',
'company_desc', 'department_desc', 'requested_desc',
'requested_to_template_id', 'requested_to_company',
'requested_to_department', 'requested_to_user',
'requested_by_user', 'requested_by_department',
'template_no', 'frm_approvers', 'frm_stakes',
'frm_attachments', 'frm_details')
read_only_fields = ['created', 'archived_at', 'form_code'] read_only_fields = ['created', 'archived_at', 'form_code']
...@@ -23,6 +23,8 @@ from django.db import transaction, IntegrityError, connection ...@@ -23,6 +23,8 @@ from django.db import transaction, IntegrityError, connection
from app.applicationlayer.utils import QuerySetHelper from app.applicationlayer.utils import QuerySetHelper
from app.businesslayer.changerequest import change_request from app.businesslayer.changerequest import change_request
from app.applicationlayer.cms.utils_cr import number_generator from app.applicationlayer.cms.utils_cr import number_generator
from app.entities import enums
from django.forms.models import model_to_dict
APPROVER_MESSAGE = settings.APPROVER_MESSAGE APPROVER_MESSAGE = settings.APPROVER_MESSAGE
...@@ -263,42 +265,183 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -263,42 +265,183 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
@transaction.atomic @action(
def partial_update(self, request, *args, **kwargs): methods=['PATCH'], detail=True,
url_path='re_route', url_name='re_route'
)
def re_route(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False) form_code = kwargs['form_code']
instance = self.get_object() print(form_code)
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).update(status='Pending')
template_no = kwargs['template_no'] models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code).update(action=None, remarks=None,
date_sent=None)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
)
@action(
methods=['PATCH'], detail=True,
url_path='re_submit', url_name='re_submit'
)
def re_submit(self, request, *args, **kwargs):
tmp_no_exists = models.ChangeRequestFormHeader.objects.filter( # get form code to be re created
template_no=template_no) form_code = kwargs['form_code']
frm_id = models.ChangeRequestFormHeader.objects.get(
form_code=form_code)
obj = models.ChangeRequestFormHeader.objects.get(pk=frm_id.pk)
obj.pk = None
obj.form_code = "Temp-Form-Code"
obj.old_form_code = form_code
obj.status = 'Draft'
obj.save()
new_frmheader_code = number_generator(
enums.GenerateCode.FORM.value, obj.id)
models.ChangeRequestFormHeader.objects.filter(
pk=obj.id).update(form_code=new_frmheader_code)
if not tmp_no_exists: # re create approvers
serializer = self.get_serializer(instance, data=request.data, partial=partial) approvers = models.ChangeRequestFormApprovers.objects.filter(
serializer.is_valid(raise_exception=True) form_code=form_code)
counter = 0
for approver in approvers:
to_delete = approver.pk
counter = counter + 1
approver.pk = None
approver.code = counter
approver.remarks =None
approver.action = None
approver.date_sent = None
approver.save()
new_frmapp_code = number_generator(
enums.GenerateCode.FORM_APPROVER.value, approver.id)
old_instance = model_to_dict(instance) models.ChangeRequestFormApprovers.objects.filter(
self.perform_update(serializer) pk=approver.id).update(code=new_frmapp_code,
new_instance = serializer.data form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormApprovers.objects.filter(
pk=to_delete).delete()
# re create stakeholders
stakes = models.ChangeRequestFormStakeHolders.objects.filter(
form_code=form_code)
# print(new_instance) counter = 0
for stake in stakes:
to_delete = stake.pk
counter = counter + 1
stake.pk = None
stake.code = counter
stake.save()
new_frmstake_code = number_generator(
enums.GenerateCode.FORM_STAKE.value, stake.id)
models.ChangeRequestFormStakeHolders.objects.filter(
pk=stake.id).update(code=new_frmstake_code,
form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormStakeHolders.objects.filter(
pk=to_delete).delete()
crhistory_save( # re create details
enums.LogEnum.UPDATE.value, details = models.ChangeRequestFormDetails.objects.filter(
enums.CREntitiesEnum.CR_TMP_HEADER.value, form_code=form_code)
new_instance['template_no'],
old_instance, counter = 0
new_instance
) for detail in details:
to_delete = detail.pk
counter = counter + 1
detail.pk = None
detail.code = counter
detail.save()
new_frmdetail_code = number_generator(
enums.GenerateCode.FORM_DETAIL.value, detail.id)
models.ChangeRequestFormDetails.objects.filter(
pk=detail.id).update(code=new_frmdetail_code,
form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormDetails.objects.filter(
pk=to_delete).delete()
# re create attachments
attachments = models.ChangeRequestFormAttachments.objects.filter(
form_code=form_code)
counter = 0
for attachment in attachments:
to_delete = attachment.pk
counter = counter + 1
attachment.pk = None
attachment.code = counter
attachment.save()
new_frmattach_code = number_generator(
enums.GenerateCode.FORM_ATTACH.value, attachment.id)
models.ChangeRequestFormAttachments.objects.filter(
pk=attachment.id).update(code=new_frmattach_code,
form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormAttachments.objects.filter(
pk=to_delete).delete()
return Response(serializer.data) # delete old data form header
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).delete()
return Response( return Response(
"Template cannot edit due to existing transaction/s", "Change request form successfully resubmitted",
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_200_OK
) )
# actions
@action(
methods=['PATCH'], detail=True,
url_path='actions', url_name='actions'
)
def actions(self, request, *args, **kwargs):
form_code = kwargs['form_code']
print(form_code)
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).update(status='Pending')
models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code).update(action=None, remarks=None,
date_sent=None)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
)
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
......
# Generated by Django 2.2 on 2019-09-13 11:43
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0009_auto_20190911_1845'),
]
operations = [
migrations.RemoveField(
model_name='changerequestformapprovers',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformattachments',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformdetails',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformheader',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformstakeholders',
name='archived_at',
),
]
...@@ -373,10 +373,6 @@ class BaseHeader(models.Model): ...@@ -373,10 +373,6 @@ class BaseHeader(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -398,9 +394,6 @@ class BaseApprover(models.Model): ...@@ -398,9 +394,6 @@ class BaseApprover(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -420,9 +413,6 @@ class BaseStakeholder(models.Model): ...@@ -420,9 +413,6 @@ class BaseStakeholder(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -451,9 +441,6 @@ class BaseAttachment(models.Model): ...@@ -451,9 +441,6 @@ class BaseAttachment(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -468,9 +455,6 @@ class BaseDetails(models.Model): ...@@ -468,9 +455,6 @@ class BaseDetails(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -503,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -503,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
to_field='code', to_field='code',
related_name='created_by_department') related_name='created_by_department')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_headers' db_table = 'change_request_template_headers'
...@@ -531,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover): ...@@ -531,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_approvers') related_name='tmp_approvers')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_approvers' db_table = 'change_request_template_approvers'
...@@ -547,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover): ...@@ -547,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover):
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateStakeHolders(BaseStakeholder): class ChangeRequestTemplateStakeHolders(BaseStakeholder):
code = models.CharField( code = models.CharField(
unique=True, unique=True,
...@@ -556,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder): ...@@ -556,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_stakes') related_name='tmp_stakes')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_stakeholders' db_table = 'change_request_template_stakeholders'
...@@ -571,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder): ...@@ -571,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateAttachments(BaseAttachment): class ChangeRequestTemplateAttachments(BaseAttachment):
...@@ -582,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment): ...@@ -582,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_attachments') related_name='tmp_attachments')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_attachments' db_table = 'change_request_template_attachments'
...@@ -597,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment): ...@@ -597,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateDetails(BaseDetails): class ChangeRequestTemplateDetails(BaseDetails):
...@@ -608,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails): ...@@ -608,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_details') related_name='tmp_details')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_details' db_table = 'change_request_template_details'
...@@ -623,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails): ...@@ -623,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
''' '''
***** *****
......
...@@ -19,6 +19,7 @@ Django==2.2 ...@@ -19,6 +19,7 @@ Django==2.2
django-cors-headers==2.5.2 django-cors-headers==2.5.2
django-filter==2.1.0 django-filter==2.1.0
djangorestframework==3.9.2 djangorestframework==3.9.2
drf-writable-nested==0.5.1
gevent==1.4.0 gevent==1.4.0
greenlet==0.4.15 greenlet==0.4.15
hiredis==1.0.0 hiredis==1.0.0
......
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