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
ae00fff2
Commit
ae00fff2
authored
Jan 29, 2020
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Restrict a requestor to submit a CR without atleast 1 approver v3
parent
ca0ed5e2
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
22 deletions
+38
-22
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+18
-14
app/applicationlayer/cms/template/header/views.py
app/applicationlayer/cms/template/header/views.py
+20
-8
No files found.
app/applicationlayer/cms/form/header/views.py
View file @
ae00fff2
...
@@ -1180,8 +1180,24 @@ class ChangeRequestFormPost(APIView):
...
@@ -1180,8 +1180,24 @@ class ChangeRequestFormPost(APIView):
@
transaction
.
atomic
()
@
transaction
.
atomic
()
def
post
(
self
,
request
):
def
post
(
self
,
request
):
form_header
=
request
.
data
form_header
=
request
.
data
try
:
try
:
# validate if approver exists in routing table
frm_approvers
=
form_header
[
'frm_approvers'
]
counter
=
0
for
frm_approver
in
frm_approvers
:
# count all delegation not equal to Requestor and Vendor
if
frm_approver
[
'delegation'
]
not
in
[
'DELEGATION-20191119-0000002'
,
'DELEGATION-20191119-0000001'
]:
counter
=
counter
+
1
# Prompt error when submitting CR Form without Approver Delegation
if
form_header
[
'status'
]
.
lower
()
==
'pending'
and
counter
==
0
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
'Please select at least 1 approver before submitting this request.'
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
data_list_approver
=
[]
data_list_approver
=
[]
data_list_stake
=
[]
data_list_stake
=
[]
data_list_attach
=
[]
data_list_attach
=
[]
...
@@ -1231,24 +1247,12 @@ class ChangeRequestFormPost(APIView):
...
@@ -1231,24 +1247,12 @@ class ChangeRequestFormPost(APIView):
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
if
frm_approver
[
'delegation'
]
not
in
[
'DELEGATION-20191119-0000002'
,
'DELEGATION-20191119-0000001'
]:
counter
=
counter
+
1
data_list_approver
.
append
(
frm_approver
)
data_list_approver
.
append
(
frm_approver
)
serializerApprover
=
ChangeRequestFormApproversSerializer
(
serializerApprover
=
ChangeRequestFormApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
data
=
data_list_approver
,
many
=
True
)
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
if
serializer
.
data
[
'status'
]
.
lower
()
==
'pending'
and
counter
==
0
:
transaction
.
savepoint_rollback
(
sp1
)
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
'Please select at least 1 approver before submitting this request.'
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
serializerApprover
.
save
()
serializerApprover
.
save
()
# create form stakes
# create form stakes
...
...
app/applicationlayer/cms/template/header/views.py
View file @
ae00fff2
...
@@ -42,6 +42,8 @@ from app.applicationlayer.cms.template.header.table_filters import HeaderFilterS
...
@@ -42,6 +42,8 @@ from app.applicationlayer.cms.template.header.table_filters import HeaderFilterS
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
django_filters
import
rest_framework
as
filters
from
django_filters
import
rest_framework
as
filters
from
django_filters.rest_framework
import
DjangoFilterBackend
from
django_filters.rest_framework
import
DjangoFilterBackend
import
itertools
from
operator
import
itemgetter
class
ChangeRequestTemplatesViewset
(
viewsets
.
ModelViewSet
):
class
ChangeRequestTemplatesViewset
(
viewsets
.
ModelViewSet
):
...
@@ -365,12 +367,6 @@ class ChangeRequestTemplatePost(APIView):
...
@@ -365,12 +367,6 @@ class ChangeRequestTemplatePost(APIView):
sp1
=
transaction
.
savepoint
()
# nothing will save to db
sp1
=
transaction
.
savepoint
()
# nothing will save to db
# cr_prefix = request.data['requested_to_template_id'])
# models.ChangeRequestTemplateHeader.objects.filter(
# requested_to_template_id=cr_prefix
# )
serializer
=
ChangeRequestTemplatesSerializer
(
serializer
=
ChangeRequestTemplatesSerializer
(
data
=
template_header_data
)
data
=
template_header_data
)
...
@@ -387,8 +383,24 @@ class ChangeRequestTemplatePost(APIView):
...
@@ -387,8 +383,24 @@ class ChangeRequestTemplatePost(APIView):
data_list_approver
.
append
(
tmp_approver
)
data_list_approver
.
append
(
tmp_approver
)
# add checking
# add checking
# Do not allow adding an approver for the same level.
approvers_data
=
sorted
(
data_list_approver
,
key
=
itemgetter
(
'level'
,
'user'
))
# Message "This approver is already existing for the same level of approval." (CR Temp and CR Form)
for
key
,
value
in
itertools
.
groupby
(
approvers_data
,
key
=
itemgetter
(
'level'
,
'user'
)):
count_user_same_level
=
0
for
i
in
value
:
count_user_same_level
=
count_user_same_level
+
1
user_code
=
i
.
get
(
'user'
)
if
count_user_same_level
>
1
:
transaction
.
savepoint_rollback
(
sp1
)
user_name
=
models
.
User
.
objects
.
get
(
code
=
user_code
)
print
(
user_name
)
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
' is already existing for the same level of approval.'
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
serializerApprover
=
ChangeRequestTemplateApproversSerializer
(
serializerApprover
=
ChangeRequestTemplateApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
data
=
data_list_approver
,
many
=
True
)
...
...
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