Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
R
red-ci-cd
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
red-group-test
red-ci-cd
Commits
7f118c84
Commit
7f118c84
authored
Sep 20, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save and submit initial
parent
fad9fb3e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
985 additions
and
122 deletions
+985
-122
app/applicationlayer/cms/form/serializers.py
app/applicationlayer/cms/form/serializers.py
+0
-84
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+946
-36
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+8
-2
app/entities/migrations/0006_auto_20190920_1623.py
app/entities/migrations/0006_auto_20190920_1623.py
+23
-0
app/entities/models.py
app/entities/models.py
+8
-0
No files found.
app/applicationlayer/cms/form/serializers.py
View file @
7f118c84
...
...
@@ -73,8 +73,6 @@ class ChangeRequestFormHeaderSerializer(
):
frm_approvers
=
ChangeRequestFormApproversSerializer
(
many
=
True
,
read_only
=
True
)
# frm_stakes = ChangeRequestFormStakeHoldersSerializer(
# many=True, required=False)
frm_stakes
=
ChangeRequestFormStakeHoldersSerializer
(
many
=
True
,
read_only
=
True
)
frm_attachments
=
ChangeRequestFormAttachmentsSerializer
(
...
...
@@ -82,88 +80,6 @@ class ChangeRequestFormHeaderSerializer(
frm_details
=
ChangeRequestFormDetailsSerializer
(
many
=
True
,
read_only
=
True
)
# def update(self, instance, validated_data):
# Update the book instance
# instance.requested_to_template_name = validated_data['requested_to_template_name']
# instance.requested_to_objective = validated_data['requested_to_objective']
# instance.requested_to_target_date = validated_data['requested_to_target_date']
# instance.requested_to_priority = validated_data['requested_to_priority']
# instance.description = validated_data['description']
# instance.status = validated_data['status']
# instance.company_desc = validated_data['company_desc']
# instance.department_desc = validated_data['department_desc']
# instance.requested_desc = validated_data['requested_desc']
# instance.requested_to_template_id = validated_data['requested_to_template_id']
# instance.requested_to_company = validated_data['requested_to_company']
# instance.requested_to_department = validated_data['requested_to_department']
# instance.requested_to_user = validated_data['requested_to_user']
# instance.requested_by_user = validated_data['requested_by_user']
# instance.requested_by_department = validated_data['requested_by_department']
# instance.template_no = validated_data['template_no']
# instance.save()
# Delete any pages not included in the request
# approvers_ids = [item.id for item in validated_data['frm_approvers']]
# for i in validated_data['frm_approvers']:
# print(i)
# print(approvers_ids)
# for page in instance.frm_approvers:
# if page.id not in approvers_ids:
# page.delete()
# # Create or update page instances that are in the request
# for item in validated_data['pages']:
# page = Page(id=item['page_id'], text=item['text'], book=instance)
# page.save()
# return instance
# def update(self, instance, validated_data):
# frm_approvers = validated_data.pop('frm_approvers')
# instance.requested_to_template_name = validated_data.get("requested_to_template_name", instance.requested_to_template_name)
# instance.requested_to_objective = validated_data.get("requested_to_objective", instance.requested_to_objective)
# instance.requested_to_target_date = validated_data.get("requested_to_target_date", instance.requested_to_target_date)
# instance.requested_to_priority = validated_data.get("requested_to_priority", instance.requested_to_priority)
# instance.description = validated_data.get("description", instance.description)
# instance.status = validated_data.get("status", instance.status)
# instance.company_desc = validated_data.get("company_desc", instance.company_desc)
# instance.department_desc = validated_data.get("department_desc", instance.department_desc)
# instance.requested_desc = validated_data.get("requested_desc", instance.requested_desc)
# instance.requested_to_template_id = validated_data.get("requested_to_template_id", instance.requested_to_template_id)
# instance.requested_to_company = validated_data.get("requested_to_company", instance.requested_to_company)
# instance.requested_to_department = validated_data.get("requested_to_department", instance.requested_to_department)
# instance.requested_to_user = validated_data.get("requested_to_user", instance.requested_to_user)
# instance.requested_by_user = validated_data.get("requested_by_user", instance.requested_by_user)
# instance.requested_by_department = validated_data.get("requested_by_department", instance.requested_by_department)
# instance.template_no = validated_data.get("template_no", instance.template_no)
# instance.save()
# print(instance.form_code)
# keep_choices = []
# for choice in frm_approvers:
# if "id" in choice.keys():
# if models.ChangeRequestFormApprovers.objects.filter(id=choice["id"]).exists():
# c = models.ChangeRequestFormApprovers.objects.get(id=choice["id"])
# c.text = choice.get('text', c.text)
# c.save()
# keep_choices.append(c.id)
# else:
# continue
# else:
# c = models.ChangeRequestFormApprovers.objects.create(**choice)
# keep_choices.append(c.id)
# for choice in instance.frm_approvers:
# if choice.id not in keep_choices:
# choice.delete()
# return instance
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
...
...
app/applicationlayer/cms/form/views.py
View file @
7f118c84
...
...
@@ -297,7 +297,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form header
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
REROUTE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
form_code
,
old_instance
,
...
...
@@ -328,7 +330,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
REROUTE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
...
...
@@ -382,7 +386,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form header
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
RESUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
form_code
,
old_instance
,
...
...
@@ -413,7 +419,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
RESUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
...
...
@@ -434,8 +442,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# get request data
id
=
request
.
data
[
'id'
]
current_user
=
request
.
data
[
'user'
]
# current_user = self.request.user
#
current_user = request.data['user']
current_user
=
self
.
request
.
user
.
code
form_code
=
request
.
data
[
'form_code'
]
delegation
=
request
.
data
[
'delegation'
]
action
=
request
.
data
[
'action'
]
...
...
@@ -464,6 +472,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
crenum
=
action
.
upper
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
"ACTION"
,
crenum
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
...
...
@@ -583,6 +593,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'save'
,
url_name
=
'save'
...
...
@@ -594,6 +605,12 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# get pk
frm_id
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
form_code
=
form_code
)
# get old data
old_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
values
()
old_instance
=
list
(
old_instance
)
# get data CR Form Header
form_header
=
get_object_or_404
(
...
...
@@ -605,6 +622,24 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
if
serializer
.
is_valid
():
serializer
.
save
()
# get new data
new_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form header
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
form_code
,
old_instance
,
new_instance
)
# ---------------------------------------------------------------------
# get approvers data
approver_id
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
)
...
...
@@ -624,43 +659,439 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
# Delete any approvers not included in the request
for
e
in
existing_approver_ids
:
if
e
not
in
updated_approver_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
None
)
# Create or update approver data that are in the request
for
frm_approver
in
frm_approvers
:
print
(
frm_approver
)
if
"id"
in
frm_approver
:
print
(
frm_approver
[
'id'
])
# get old data
old_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
update
(
level
=
frm_approver
[
'level'
],
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
remarks
=
None
,
action
=
None
,
action_date
=
None
,
date_sent
=
None
,
user
=
frm_approver
[
'user'
],
tmp_approver
=
frm_approver
[
'tmp_approver'
])
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
remarks
=
None
,
action
=
None
,
action_date
=
None
,
date_sent
=
None
,
user
=
frm_approver
[
'user'
],
tmp_approver
=
frm_approver
[
'tmp_approver'
])
# get new data
new_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_approver
[
'user'
])
cre
=
models
.
ChangeRequestFormApprovers
.
objects
.
create
(
level
=
frm_approver
[
'level'
],
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
user_instance
,
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_APPROVER
.
value
,
cre
.
id
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
None
,
new_instance
)
# ---------------------------------------------------------------------
# get stakes data
stakes_id
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_stakes_ids
=
[
item
.
id
for
item
in
stakes_id
]
frm_stakes
=
form_header_data
[
'frm_stakes'
]
updated_stakes_ids
=
[]
# get all ids
for
frm_stake
in
frm_stakes
:
if
"id"
in
frm_stake
:
updated_stakes_ids
.
append
(
frm_stake
[
'id'
])
# Delete any stakes not included in the request
for
e
in
existing_stakes_ids
:
if
e
not
in
updated_stakes_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
old_instance
,
None
)
# Create or update stake data that are in the request
for
frm_stake
in
frm_stakes
:
if
"id"
in
frm_stake
:
# get old data
old_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
update
(
delegation
=
frm_stake
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
frm_stake
[
'user'
],
tmp_stake
=
frm_stake
[
'tmp_stake'
])
# get new data
new_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_stake
[
'user'
])
cre
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
create
(
delegation
=
frm_stake
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
user_instance
,
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_STAKE
.
value
,
cre
.
id
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_approver
[
'user'
])
form_code_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
code
=
form_code
)
# get new data
new_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
None
,
new_instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
create
(
level
=
frm_approver
[
'level'
],
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
user_instance
,
form_code
=
form_code_instance
)
# ---------------------------------------------------------------------
# get attachments data
attach_id
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_attach_ids
=
[
item
.
id
for
item
in
attach_id
]
frm_attach
=
form_header_data
[
'frm_attachments'
]
updated_attach_ids
=
[]
# get all ids
for
frm_att
in
frm_attach
:
if
"id"
in
frm_att
:
updated_attach_ids
.
append
(
frm_att
[
'id'
])
# Delete any attachments not included in the request
for
e
in
existing_attach_ids
:
if
e
not
in
updated_attach_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
None
)
# Create or update attachments data that are in the request
for
frm_att
in
frm_attach
:
if
"id"
in
frm_att
:
# get old data
old_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
update
(
attachment_type
=
frm_att
[
'attachment_type'
],
attachment_name
=
frm_att
[
'attachment_name'
],
file_name
=
frm_att
[
'file_name'
],
description
=
frm_att
[
'description'
],
file_upload
=
frm_att
[
'file_upload'
],
uploaded_by
=
frm_att
[
'uploaded_by'
],
created
=
datetime
.
now
())
# get new data
new_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_att
[
'uploaded_by'
])
cre
=
models
.
ChangeRequestFormAttachments
.
objects
.
create
(
attachment_type
=
frm_att
[
'attachment_type'
],
attachment_name
=
frm_att
[
'attachment_name'
],
file_name
=
frm_att
[
'file_name'
],
description
=
frm_att
[
'description'
],
file_upload
=
frm_att
[
'file_upload'
],
uploaded_by
=
user_instance
,
created
=
datetime
.
now
(),
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_ATTACH
.
value
,
cre
.
id
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
None
,
new_instance
)
# ---------------------------------------------------------------------
# get details data
detail_id
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_detail_ids
=
[
item
.
id
for
item
in
detail_id
]
frm_details
=
form_header_data
[
'frm_details'
]
updated_detail_ids
=
[]
# get all ids
for
frm_detail
in
frm_details
:
if
"id"
in
frm_detail
:
updated_detail_ids
.
append
(
frm_detail
[
'id'
])
# Delete any attachments not included in the request
for
e
in
existing_detail_ids
:
if
e
not
in
updated_detail_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
None
)
# Create or update attachments data that are in the request
for
frm_detail
in
frm_details
:
if
"id"
in
frm_detail
:
# get old data
old_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
update
(
field_idx
=
frm_detail
[
'field_idx'
],
field_ref
=
frm_detail
[
'field_ref'
],
field_val
=
frm_detail
[
'field_val'
],
field_props
=
frm_detail
[
'field_props'
],
created
=
datetime
.
now
())
# get new data
new_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
cre
=
models
.
ChangeRequestFormDetails
.
objects
.
create
(
field_idx
=
frm_detail
[
'field_idx'
],
field_ref
=
frm_detail
[
'field_ref'
],
field_val
=
frm_detail
[
'field_val'
],
field_props
=
frm_detail
[
'field_props'
],
created
=
datetime
.
now
(),
code
=
'try'
,
form_code
=
frm_id
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_DETAIL
.
value
,
cre
.
id
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
None
,
new_instance
)
return
Response
(
serializer
.
data
)
return
Response
(
"Change request form successfully re routed"
,
status
=
status
.
HTTP_200_OK
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'submit'
,
url_name
=
'submit'
...
...
@@ -668,12 +1099,496 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
def
submit
(
self
,
request
,
*
args
,
**
kwargs
):
form_code
=
kwargs
[
'form_code'
]
form_header_data
=
request
.
data
# get pk
frm_id
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
form_code
=
form_code
)
return
Response
(
"Change request form successfully re routed"
,
status
=
status
.
HTTP_200_OK
# get old data
old_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
values
()
old_instance
=
list
(
old_instance
)
# get data CR Form Header
form_header
=
get_object_or_404
(
models
.
ChangeRequestFormHeader
.
objects
.
all
(),
pk
=
frm_id
.
id
)
serializer
=
serializers
.
ChangeRequestFormHeaderSerializer
(
form_header
,
data
=
form_header_data
)
if
serializer
.
is_valid
():
serializer
.
save
()
# get new data
new_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form header
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
form_code
,
old_instance
,
new_instance
)
# ---------------------------------------------------------------------
# get approvers data
approver_id
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_approver_ids
=
[
item
.
id
for
item
in
approver_id
]
frm_approvers
=
form_header_data
[
'frm_approvers'
]
updated_approver_ids
=
[]
# get all ids
for
frm_approver
in
frm_approvers
:
if
"id"
in
frm_approver
:
updated_approver_ids
.
append
(
frm_approver
[
'id'
])
# Delete any approvers not included in the request
for
e
in
existing_approver_ids
:
if
e
not
in
updated_approver_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
None
)
# Create or update approver data that are in the request
for
frm_approver
in
frm_approvers
:
if
"id"
in
frm_approver
:
# get old data
old_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
update
(
level
=
frm_approver
[
'level'
],
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
remarks
=
None
,
action
=
None
,
action_date
=
None
,
date_sent
=
None
,
user
=
frm_approver
[
'user'
],
tmp_approver
=
frm_approver
[
'tmp_approver'
])
# get new data
new_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
frm_approver
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_approver
[
'user'
])
cre
=
models
.
ChangeRequestFormApprovers
.
objects
.
create
(
level
=
frm_approver
[
'level'
],
delegation
=
frm_approver
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
user_instance
,
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_APPROVER
.
value
,
cre
.
id
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
form_code
,
None
,
new_instance
)
# ---------------------------------------------------------------------
# get stakes data
stakes_id
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_stakes_ids
=
[
item
.
id
for
item
in
stakes_id
]
frm_stakes
=
form_header_data
[
'frm_stakes'
]
updated_stakes_ids
=
[]
# get all ids
for
frm_stake
in
frm_stakes
:
if
"id"
in
frm_stake
:
updated_stakes_ids
.
append
(
frm_stake
[
'id'
])
# Delete any stakes not included in the request
for
e
in
existing_stakes_ids
:
if
e
not
in
updated_stakes_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
old_instance
,
None
)
# Create or update stake data that are in the request
for
frm_stake
in
frm_stakes
:
if
"id"
in
frm_stake
:
# get old data
old_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
update
(
delegation
=
frm_stake
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
frm_stake
[
'user'
],
tmp_stake
=
frm_stake
[
'tmp_stake'
])
# get new data
new_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
frm_stake
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_stake
[
'user'
])
cre
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
create
(
delegation
=
frm_stake
[
'delegation'
],
created
=
datetime
.
now
(),
user
=
user_instance
,
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_STAKE
.
value
,
cre
.
id
)
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
form_code
,
None
,
new_instance
)
# ---------------------------------------------------------------------
# get attachments data
attach_id
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_attach_ids
=
[
item
.
id
for
item
in
attach_id
]
frm_attach
=
form_header_data
[
'frm_attachments'
]
updated_attach_ids
=
[]
# get all ids
for
frm_att
in
frm_attach
:
if
"id"
in
frm_att
:
updated_attach_ids
.
append
(
frm_att
[
'id'
])
# Delete any attachments not included in the request
for
e
in
existing_attach_ids
:
if
e
not
in
updated_attach_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
None
)
# Create or update attachments data that are in the request
for
frm_att
in
frm_attach
:
if
"id"
in
frm_att
:
# get old data
old_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
update
(
attachment_type
=
frm_att
[
'attachment_type'
],
attachment_name
=
frm_att
[
'attachment_name'
],
file_name
=
frm_att
[
'file_name'
],
description
=
frm_att
[
'description'
],
file_upload
=
frm_att
[
'file_upload'
],
uploaded_by
=
frm_att
[
'uploaded_by'
],
created
=
datetime
.
now
())
# get new data
new_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
frm_att
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
user_instance
=
models
.
User
.
objects
.
get
(
code
=
frm_att
[
'uploaded_by'
])
cre
=
models
.
ChangeRequestFormAttachments
.
objects
.
create
(
attachment_type
=
frm_att
[
'attachment_type'
],
attachment_name
=
frm_att
[
'attachment_name'
],
file_name
=
frm_att
[
'file_name'
],
description
=
frm_att
[
'description'
],
file_upload
=
frm_att
[
'file_upload'
],
uploaded_by
=
user_instance
,
created
=
datetime
.
now
(),
form_code
=
frm_id
,
code
=
'try'
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_ATTACH
.
value
,
cre
.
id
)
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
None
,
new_instance
)
# ---------------------------------------------------------------------
# get details data
detail_id
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
form_code
=
form_code
)
# list existing id to variable
existing_detail_ids
=
[
item
.
id
for
item
in
detail_id
]
frm_details
=
form_header_data
[
'frm_details'
]
updated_detail_ids
=
[]
# get all ids
for
frm_detail
in
frm_details
:
if
"id"
in
frm_detail
:
updated_detail_ids
.
append
(
frm_detail
[
'id'
])
# Delete any attachments not included in the request
for
e
in
existing_detail_ids
:
if
e
not
in
updated_detail_ids
:
# get old data
old_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
e
)
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
e
)
.
delete
()
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
None
)
# Create or update attachments data that are in the request
for
frm_detail
in
frm_details
:
if
"id"
in
frm_detail
:
# get old data
old_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
values
()
old_instance
=
list
(
old_instance
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
update
(
field_idx
=
frm_detail
[
'field_idx'
],
field_ref
=
frm_detail
[
'field_ref'
],
field_val
=
frm_detail
[
'field_val'
],
field_props
=
frm_detail
[
'field_props'
],
created
=
datetime
.
now
())
# get new data
new_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
frm_detail
[
'id'
])
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
new_instance
)
else
:
cre
=
models
.
ChangeRequestFormDetails
.
objects
.
create
(
field_idx
=
frm_detail
[
'field_idx'
],
field_ref
=
frm_detail
[
'field_ref'
],
field_val
=
frm_detail
[
'field_val'
],
field_props
=
frm_detail
[
'field_props'
],
created
=
datetime
.
now
(),
code
=
'try'
,
form_code
=
frm_id
)
code
=
number_generator
(
enums
.
GenerateCode
.
FORM_DETAIL
.
value
,
cre
.
id
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
id
=
cre
.
id
)
.
update
(
code
=
code
)
# get new data
new_instance
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
cre
.
id
)
.
values
()
new_instance
=
list
(
new_instance
)
# save history in form approver
crhistory_save
(
"BATCH-20190920-000001"
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
None
,
new_instance
)
return
Response
(
serializer
.
data
)
class
ChangeRequestFormApproversViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestFormApprovers
.
objects
.
all
()
...
...
@@ -765,8 +1680,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
id
=
ObjectId
,
archived_at
=
None
)
.
first
()
id
=
ObjectId
)
.
first
()
if
dbExisting
:
dbExisting
.
archived_at
=
datetime
.
now
()
...
...
@@ -816,11 +1730,9 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
id
=
ObjectId
,
archived_at
=
None
)
.
first
()
id
=
ObjectId
)
.
first
()
if
dbExisting
:
dbExisting
.
archived_at
=
datetime
.
now
()
dbExisting
.
save
()
self
.
perform_create
(
serializer
)
...
...
@@ -857,11 +1769,9 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
id
=
ObjectId
,
archived_at
=
None
)
.
first
()
id
=
ObjectId
)
.
first
()
if
dbExisting
:
dbExisting
.
archived_at
=
datetime
.
now
()
dbExisting
.
save
()
self
.
perform_create
(
serializer
)
...
...
app/applicationlayer/cms/utils_cr.py
View file @
7f118c84
...
...
@@ -14,6 +14,7 @@ from django.forms.models import model_to_dict
from
rest_framework.exceptions
import
ParseError
from
django.db
import
IntegrityError
from
rest_framework.exceptions
import
APIException
from
django.db.models
import
Max
CR_FRONT_LINK
=
settings
.
CR_FRONT_LINK
...
...
@@ -395,13 +396,18 @@ def cancel_overdue(request):
return
True
def
crhistory_save
(
action
,
entity
,
form_code
,
fromValue
,
toValue
):
def
crhistory_save
(
batch_no
,
main_action
,
action
,
entity
,
form_code
,
fromValue
,
toValue
):
models
.
ChangeRequestHistory
.
objects
.
create
(
batch_no
=
batch_no
,
main_action
=
main_action
,
action
=
action
,
entity
=
entity
,
form_code
=
form_code
,
fromValue
=
fromValue
,
toValue
=
toValue
)
return
True
\ No newline at end of file
app/entities/migrations/0006_auto_20190920_1623.py
0 → 100644
View file @
7f118c84
# Generated by Django 2.2 on 2019-09-20 16:23
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0005_auto_20190919_1625'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'changerequesthistory'
,
name
=
'batch_no'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
),
),
migrations
.
AddField
(
model_name
=
'changerequesthistory'
,
name
=
'main_action'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
),
),
]
app/entities/models.py
View file @
7f118c84
...
...
@@ -875,6 +875,14 @@ CR HISTORY
'''
class
ChangeRequestHistory
(
AuditClass
):
batch_no
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
null
=
True
)
main_action
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
null
=
True
)
action
=
models
.
CharField
(
max_length
=
50
)
entity
=
models
.
CharField
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment