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
337c9802
Commit
337c9802
authored
Jan 29, 2020
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Do not allow adding an approver for the same level
parent
ae00fff2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
56 additions
and
45 deletions
+56
-45
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+10
-13
app/applicationlayer/cms/template/header/views.py
app/applicationlayer/cms/template/header/views.py
+15
-23
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+0
-9
app/businesslayer/changerequest/change_request_template.py
app/businesslayer/changerequest/change_request_template.py
+31
-0
No files found.
app/applicationlayer/cms/form/header/views.py
View file @
337c9802
...
@@ -22,7 +22,8 @@ from django.db import transaction, IntegrityError, connection
...
@@ -22,7 +22,8 @@ from django.db import transaction, IntegrityError, connection
from
app.applicationlayer.utils
import
(
QuerySetHelper
,
from
app.applicationlayer.utils
import
(
QuerySetHelper
,
status_message_response
,
status_message_response
,
send_broadcast_message
)
send_broadcast_message
)
from
app.businesslayer.changerequest
import
change_request
from
app.businesslayer.changerequest
import
(
change_request
,
change_request_template
)
from
app.applicationlayer.cms.utils_cr
import
(
number_generator
,
from
app.applicationlayer.cms.utils_cr
import
(
number_generator
,
send_mail_requestor
,
send_mail_requestor
,
...
@@ -1181,22 +1182,18 @@ class ChangeRequestFormPost(APIView):
...
@@ -1181,22 +1182,18 @@ class ChangeRequestFormPost(APIView):
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'
]
frm_approvers
=
form_header
[
'frm_approvers'
]
counter
=
0
for
frm_approver
in
frm_approvers
:
# Do not allow adding an approver for the same level
# count all delegation not equal to Requestor and Vendor
validation_result
=
change_request_template
.
validation_approver_same_level
(
frm_approvers
)
if
frm_approver
[
'delegation'
]
not
in
[
'DELEGATION-20191119-0000002'
,
'DELEGATION-20191119-0000001'
]:
if
validation_result
is
not
None
:
counter
=
counter
+
1
# Prompt error when submitting CR Form without Approver Delegation
if
form_header
[
'status'
]
.
lower
()
==
'pending'
and
counter
==
0
:
message
=
{
message
=
{
'code'
:
400
,
'code'
:
400
,
'status'
:
'failed'
,
'status'
:
'failed'
,
'message'
:
'Please select at least 1 approver before submitting this request
.'
,
'message'
:
validation_result
+
' is already existing for the same level of approval
.'
,
}
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
data_list_approver
=
[]
data_list_approver
=
[]
data_list_stake
=
[]
data_list_stake
=
[]
...
@@ -1241,7 +1238,7 @@ class ChangeRequestFormPost(APIView):
...
@@ -1241,7 +1238,7 @@ class ChangeRequestFormPost(APIView):
serializer
.
save
()
serializer
.
save
()
frm_id
=
serializer
.
data
[
'form_code'
]
frm_id
=
serializer
.
data
[
'form_code'
]
# create form approvers
# create form approvers
frm_approvers
=
form_header
[
'frm_approvers'
]
frm_approvers
=
form_header
[
'frm_approvers'
]
counter
=
0
counter
=
0
...
...
app/applicationlayer/cms/template/header/views.py
View file @
337c9802
...
@@ -23,7 +23,8 @@ from django.db.models import Q
...
@@ -23,7 +23,8 @@ from django.db.models import Q
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
rest_framework.exceptions
import
ParseError
from
rest_framework.exceptions
import
ParseError
from
app.businesslayer.changerequest.change_request_template
import
(
from
app.businesslayer.changerequest.change_request_template
import
(
tmp_add_edit_delete
tmp_add_edit_delete
,
validation_approver_same_level
)
)
from
app.applicationlayer.management.account.serializer
import
ChangeRequestList
from
app.applicationlayer.management.account.serializer
import
ChangeRequestList
from
app.applicationlayer.cms.template.approver.serializers
import
ChangeRequestTemplateApproversSerializer
from
app.applicationlayer.cms.template.approver.serializers
import
ChangeRequestTemplateApproversSerializer
...
@@ -42,8 +43,6 @@ from app.applicationlayer.cms.template.header.table_filters import HeaderFilterS
...
@@ -42,8 +43,6 @@ 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
):
...
@@ -346,6 +345,19 @@ class ChangeRequestTemplatePost(APIView):
...
@@ -346,6 +345,19 @@ class ChangeRequestTemplatePost(APIView):
template_header
=
request
.
data
template_header
=
request
.
data
try
:
try
:
tmp_approvers
=
template_header
[
'tmp_approvers'
]
# Do not allow adding an approver for the same level
validation_result
=
validation_approver_same_level
(
tmp_approvers
)
if
validation_result
is
not
None
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
validation_result
+
' is already existing for the same level of approval.'
,
}
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
=
[]
...
@@ -381,26 +393,6 @@ class ChangeRequestTemplatePost(APIView):
...
@@ -381,26 +393,6 @@ class ChangeRequestTemplatePost(APIView):
for
tmp_approver
in
tmp_approvers
:
for
tmp_approver
in
tmp_approvers
:
tmp_approver
[
'template_no'
]
=
tmp_id
tmp_approver
[
'template_no'
]
=
tmp_id
data_list_approver
.
append
(
tmp_approver
)
data_list_approver
.
append
(
tmp_approver
)
# add checking
approvers_data
=
sorted
(
data_list_approver
,
key
=
itemgetter
(
'level'
,
'user'
))
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
)
...
...
app/businesslayer/changerequest/change_request.py
View file @
337c9802
...
@@ -767,15 +767,6 @@ def cr_routing_actions(approver_instance, current_user, move_to_level):
...
@@ -767,15 +767,6 @@ def cr_routing_actions(approver_instance, current_user, move_to_level):
return
True
return
True
...
...
app/businesslayer/changerequest/change_request_template.py
View file @
337c9802
...
@@ -20,6 +20,9 @@ from app.entities import enums, models
...
@@ -20,6 +20,9 @@ from app.entities import enums, models
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
app.applicationlayer.cms.template
import
serializers
from
app.applicationlayer.cms.template
import
serializers
import
itertools
from
operator
import
itemgetter
def
tmp_add_edit_delete
(
tmp_request_body
,
def
tmp_add_edit_delete
(
tmp_request_body
,
queryset
,
queryset
,
...
@@ -101,3 +104,31 @@ def tmp_add_edit_delete(tmp_request_body,
...
@@ -101,3 +104,31 @@ def tmp_add_edit_delete(tmp_request_body,
)
)
return
True
return
True
def
validation_approver_same_level
(
approvers
):
data_list_appr
=
[]
for
approver
in
approvers
:
if
'user'
in
approver
and
'level'
in
approver
:
data_list_appr
.
append
(
approver
)
# add checking
approvers_data
=
sorted
(
data_list_appr
,
key
=
itemgetter
(
'level'
,
'user'
))
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
:
user
=
models
.
User
.
objects
.
get
(
code
=
user_code
)
user_name
=
user
.
name
return
user_name
return
None
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