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
e913cfde
Commit
e913cfde
authored
Sep 24, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
clean code for save and submit
parent
8b1ed17e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
234 additions
and
948 deletions
+234
-948
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+121
-946
app/applicationlayer/cms/template/views.py
app/applicationlayer/cms/template/views.py
+9
-1
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+21
-1
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+83
-0
No files found.
app/applicationlayer/cms/form/views.py
View file @
e913cfde
...
...
@@ -598,44 +598,33 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
@
transaction
.
atomic
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'save'
,
url_name
=
'save'
)
def
save
(
self
,
request
,
*
args
,
**
kwargs
):
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
form_code
=
kwargs
[
'form_code'
]
form_
header_
data
=
request
.
data
form_data
=
request
.
data
# get pk
frm_id
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
form_code
=
form_code
)
# generate batchno history
batchno
=
get_max_batchno
(
"batch"
)
# 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
)
# update form header
serializer
=
self
.
get_serializer
(
instance
,
data
=
form_data
,
partial
=
partial
)
if
serializer
.
is_valid
():
serializer
.
save
()
# get new data
new_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
values
()
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
print
(
serializer
.
errors
)
new_instance
=
list
(
new_instance
)
# save history in form header
crhistory_save
(
batchno
,
...
...
@@ -647,504 +636,91 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
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
(
batchno
,
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
:
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
)
# 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
(
batchno
,
enums
.
CREnum
.
SAVE
.
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
(
batchno
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
None
)
change_request
.
form_add_edit_delete
(
form_data
[
'frm_approvers'
],
models
.
ChangeRequestFormApprovers
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
serializers
.
ChangeRequestFormApproversSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SAVE
.
value
)
# 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
(
batchno
,
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
(
batchno
,
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
]
change_request
.
form_add_edit_delete
(
form_data
[
'frm_stakes'
],
models
.
ChangeRequestFormStakeHolders
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
serializers
.
ChangeRequestFormStakeHoldersSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SAVE
.
value
)
frm_details
=
form_header_data
[
'frm_details'
]
change_request
.
form_add_edit_delete
(
form_data
[
'frm_attachments'
],
models
.
ChangeRequestFormAttachments
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
serializers
.
ChangeRequestFormAttachmentsSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SAVE
.
value
)
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
(
batchno
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
None
)
change_request
.
form_add_edit_delete
(
form_data
[
'frm_details'
],
models
.
ChangeRequestFormDetails
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
serializers
.
ChangeRequestFormDetailsSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SAVE
.
value
)
# 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
(
batchno
,
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
(
batchno
,
enums
.
CREnum
.
SAVE
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
None
,
new_instance
)
serializer
=
self
.
get_serializer
(
frm_id
)
serializer
=
self
.
get_serializer
(
instance
)
message
=
status_message_response
(
200
,
'success'
,
'Change Request successfully saved'
,
serializer
.
data
'Change Request successfully saved'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
@
transaction
.
atomic
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'submit'
,
url_name
=
'submit'
)
def
submit
(
self
,
request
,
*
args
,
**
kwargs
):
form_code
=
kwargs
[
'form_code'
]
form_header_data
=
request
.
data
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
# get pk
f
rm_id
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
form_code
=
form_code
)
form_code
=
kwargs
[
'form_code'
]
f
orm_data
=
request
.
data
# generate batchno history
batchno
=
get_max_batchno
(
"batch"
)
# 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
)
# update form header
serializer
=
self
.
get_serializer
(
instance
,
data
=
form_data
,
partial
=
partial
)
if
serializer
.
is_valid
():
serializer
.
save
()
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
print
(
serializer
.
errors
)
# 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
(
batchno
,
...
...
@@ -1156,461 +732,60 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
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
(
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
form_code
,
old_instance
,
None
)
change_request
.
form_add_edit_delete
(
form_data
[
'frm_approvers'
],
models
.
ChangeRequestFormApprovers
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
serializers
.
ChangeRequestFormApproversSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
)
# 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
(
batchno
,
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
(
batchno
,
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
]
change_request
.
form_add_edit_delete
(
form_data
[
'frm_stakes'
],
models
.
ChangeRequestFormStakeHolders
,
enums
.
CREntitiesEnum
.
CR_FRM_STAKE
.
value
,
serializers
.
ChangeRequestFormStakeHoldersSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
)
frm_details
=
form_header_data
[
'frm_details'
]
change_request
.
form_add_edit_delete
(
form_data
[
'frm_attachments'
],
models
.
ChangeRequestFormAttachments
,
enums
.
CREntitiesEnum
.
CR_FRM_ATTACHMENT
.
value
,
serializers
.
ChangeRequestFormAttachmentsSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
)
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
(
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
DELETED
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
old_instance
,
None
)
change_request
.
form_add_edit_delete
(
form_data
[
'frm_details'
],
models
.
ChangeRequestFormDetails
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
serializers
.
ChangeRequestFormDetailsSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
)
# 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
(
batchno
,
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
(
batchno
,
enums
.
CREnum
.
SUBMIT
.
value
,
enums
.
CREnum
.
ADD
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_DETAIL
.
value
,
form_code
,
None
,
new_instance
)
serializer
=
self
.
get_serializer
(
frm_id
)
serializer
=
self
.
get_serializer
(
instance
)
message
=
status_message_response
(
200
,
'success'
,
'Change Request successfully submitted'
,
serializer
.
data
'Change Request successfully submitted'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
...
...
app/applicationlayer/cms/template/views.py
View file @
e913cfde
...
...
@@ -285,7 +285,15 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
template_no
)
return
Response
(
serializer
.
data
)
serializer
=
self
.
get_serializer
(
instance
)
message
=
status_message_response
(
200
,
'success'
,
'Change Request Template successfully updated'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
return
Response
(
"Unable to edit due to existing transaction"
,
...
...
app/applicationlayer/cms/utils_cr.py
View file @
e913cfde
...
...
@@ -427,4 +427,24 @@ def crhistory_save(batch_no, main_action,
toValue
=
toValue
)
return
True
\ No newline at end of file
return
True
def
crhistory_log_bulk_delete
(
queryset
,
entity
,
tbl
,
form_code
,
batch_no
,
main_action
):
try
:
# print(entity)
for
data
in
queryset
:
test
=
model_to_dict
(
data
)
crhistory_save
(
batch_no
,
main_action
,
enums
.
CREnum
.
DELETED
.
value
,
entity
,
form_code
,
test
,
''
)
tbl
.
objects
.
filter
(
id
=
test
[
'id'
])
.
delete
()
return
True
except
IntegrityError
as
exc
:
raise
APIException
(
detail
=
exc
)
\ No newline at end of file
app/businesslayer/changerequest/change_request.py
View file @
e913cfde
...
...
@@ -13,6 +13,14 @@ from django.http import Http404
from
django.db.models
import
Q
from
app.applicationlayer.cms.utils_cr
import
(
number_generator
,
crhistory_save
,
entity_log_bulk
,
crhistory_log_bulk_delete
)
from
django.forms.models
import
model_to_dict
from
app.entities
import
enums
,
models
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
app.applicationlayer.cms.template
import
serializers
def
list_by_user
(
user_id_number
):
...
...
@@ -242,3 +250,78 @@ def filter_awaiting(base_queryset,
pass
return
return_queryset
def
form_add_edit_delete
(
form_request_body
,
queryset
,
entity
,
serializer_data
,
partial
,
self
,
form_code
,
batch_no
,
main_action
):
# 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'
]
)
serializer
=
serializer_data
(
frm_instance
,
data
=
i
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
frm_instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
crhistory_save
(
batch_no
,
main_action
,
enums
.
CREnum
.
UPDATE
.
value
,
entity
,
form_code
,
old_instance
,
new_instance
)
else
:
serializer
=
serializer_data
(
data
=
i
)
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
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