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
ac916bcd
Commit
ac916bcd
authored
Oct 30, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor actions code
parent
bfaed074
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
512 additions
and
315 deletions
+512
-315
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+227
-309
app/applicationlayer/utils.py
app/applicationlayer/utils.py
+1
-1
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+284
-5
No files found.
app/applicationlayer/cms/form/header/views.py
View file @
ac916bcd
...
...
@@ -495,100 +495,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
except
Exception
as
e
:
return
Response
(
e
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
@
transaction
.
atomic
()
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
're_route'
,
url_name
=
're_route'
)
def
re_route
(
self
,
request
,
*
args
,
**
kwargs
):
# generate batchno history
batchno
=
get_max_batchno
(
"batch"
)
# partial update
partial
=
kwargs
.
pop
(
'partial'
,
True
)
instance
=
self
.
get_object
()
form_code
=
kwargs
[
'form_code'
]
status_update
=
{
"status"
:
'Pending'
}
serializer
=
self
.
get_serializer
(
instance
,
data
=
status_update
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
form_header
=
get_object_or_404
(
models
.
ChangeRequestFormHeader
,
pk
=
instance
.
id
)
new_instance
=
model_to_dict
(
form_header
)
# save history in form header
crhistory_save
(
batchno
,
enums
.
CREnum
.
REROUTE
.
value
,
enums
.
CREnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
form_code
,
old_instance
,
new_instance
)
approver_data
=
[]
# get all approvers of form
approvers
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
)
for
approver
in
approvers
:
approver_add
=
{
'id'
:
approver
.
id
,
'action'
:
None
,
'remarks'
:
None
,
'date_sent'
:
None
,
'action_date'
:
None
,
'is_action'
:
False
}
approver_data
.
append
(
approver_add
)
change_request
.
form_add_edit_delete
(
approver_data
,
models
.
ChangeRequestFormApprovers
,
enums
.
CREntitiesEnum
.
CR_FRM_APPROVER
.
value
,
ChangeRequestFormApproversSerializer
,
partial
,
self
,
form_code
,
batchno
,
enums
.
CREnum
.
REROUTE
.
value
)
min_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
)
.
aggregate
(
Min
(
'level'
))
min_level
=
min_level
.
get
(
'level__min'
)
next_approver_email
(
form_code
,
min_level
)
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
min_level
))
)
.
update
(
date_sent
=
datetime
.
now
()
)
message
=
status_message_response
(
200
,
'success'
,
'Change request form successfully re routed'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
@
transaction
.
atomic
()
@
action
(
...
...
@@ -690,15 +596,13 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
def
actions
(
self
,
request
,
*
args
,
**
kwargs
):
current_user
=
self
.
request
.
user
.
code
action_body
=
request
.
data
id
=
action_body
.
get
(
'id'
,
False
)
form_code
=
action_body
.
get
(
'form_code'
,
False
)
delegation
=
action_body
.
get
(
'delegation'
,
False
)
#
delegation = action_body.get('delegation', False)
action
=
action_body
.
get
(
'action'
,
False
)
level
=
action_body
.
get
(
'level'
,
False
)
next_level
=
int
(
level
)
+
1
#
level = action_body.get('level', False)
#
next_level = int(level) + 1
remarks
=
action_body
.
get
(
'remarks'
,
False
)
# generate batchno history
...
...
@@ -736,249 +640,251 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
new_instance
)
if
action
.
lower
()
==
'approved'
:
change_request
.
cr_routing_actions
(
new_instance
,
current_user
)
# if action.lower() == 'approved':
the_next_vendor
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
,
level
=
int
(
next_level
),
delegation
=
'Vendor/Implementor'
)
.
first
()
#
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
#
form_code=form_code, level=int(next_level),
#
delegation='Vendor/Implementor'
#
).first()
if
the_next_vendor
:
the_last_vendor
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
,
delegation
=
'Vendor/Implementor'
)
.
order_by
(
'level'
)
.
last
()
if
the_next_vendor
==
the_last_vendor
:
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Approved'
)
#
if the_next_vendor:
#
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
#
form_code=form_code, delegation='Vendor/Implementor'
#
).order_by('level').last()
#
if the_next_vendor == the_last_vendor:
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Approved')
# NOTIF MSG FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
0
]
#
# NOTIF MSG FOR REQUESTOR
#
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
# NOTIF MSG FOR NEXT APPROVER
notification_msg
=
APPROVER_MESSAGE
.
split
(
';'
)[
0
]
#
# NOTIF MSG FOR NEXT APPROVER
#
notification_msg = APPROVER_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
#
# SEND EMAIL AND NOTIF TO REQUESTOR
#
send_mail_requestor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
next_approver_email
(
form_code
,
next_level
)
#
next_approver_email(form_code, next_level)
date_now
=
datetime
.
now
()
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
next_level
))
)
.
update
(
date_sent
=
date_now
,
is_action
=
True
)
#
date_now = datetime.now()
#
# update next approver details
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level=int(next_level))
#
).update(
#
date_sent=date_now,
#
is_action=True
#
)
# update current approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
is_action
=
False
)
#
# update current approver details
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level=int(level))
#
).update(
#
is_action=False
#
)
reminder_trigger_save
(
form_code
,
date_now
,
approver_instance
.
date_sent
)
#
reminder_trigger_save(form_code, date_now,
#
approver_instance.date_sent)
elif
action
.
lower
()
==
'rejected'
:
#
elif action.lower() == 'rejected':
# send email to vendor
if
delegation
.
lower
()
==
'requestor'
:
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
#
# send email to vendor
#
if delegation.lower() == 'requestor':
#
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
notification_msg
,
action
,
remarks
,
level
)
prev_level
=
int
(
level
)
-
1
# reset last vendor details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
prev_level
))
)
.
update
(
is_action
=
True
,
action
=
'Acknowledged'
,
action_date
=
datetime
.
now
(),
date_sent
=
datetime
.
now
()
)
else
:
# send_mail_vendor(
# current_user, form_code, delegation,
# notification_msg, action,
# remarks, level
# )
prev_vendor
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
action
=
'Completed'
)
&
Q
(
delegation
=
'Vendor/Implementor'
)
&
Q
(
level__lte
=
int
(
level
))
)
if
not
prev_vendor
.
count
()
>
0
:
# prev_level = int(level) - 1
# # reset last vendor details
# models.ChangeRequestFormApprovers.objects.filter(
# Q(form_code=form_code) &
# Q(level=int(prev_level))
# ).update(
# is_action=True,
# action='Acknowledged',
# action_date=datetime.now(),
# date_sent=datetime.now()
# )
# else:
# prev_vendor = models.ChangeRequestFormApprovers.objects.filter(
# Q(form_code=form_code) &
# Q(action='Completed') &
# Q(delegation='Vendor/Implementor') &
# Q(level__lte=int(level))
# )
# if not prev_vendor.count() > 0:
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Rejected'
)
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Rejected')
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
#
# EMAIL CODE FOR REQUESTOR
#
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
else
:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
#
# SEND EMAIL AND NOTIF TO REQUESTOR
#
send_mail_requestor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
#
else:
#
# EMAIL CODE FOR REQUESTOR
#
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
#
# SEND EMAIL AND NOTIF TO REQUESTOR
#
send_mail_requestor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
#
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
send_mail_vendor
(
current_user
,
form_code
,
'others'
,
notification_msg
,
action
,
remarks
,
level
)
last_action_vendor
=
prev_vendor
.
last
()
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
code
=
last_action_vendor
)
.
update
(
is_action
=
True
,
action
=
'Acknowledged'
,
action_date
=
datetime
.
now
(),
date_sent
=
datetime
.
now
()
)
#
send_mail_vendor(
#
current_user, form_code, 'others',
#
notification_msg, action,
#
remarks, level
#
)
#
last_action_vendor = prev_vendor.last()
#
models.ChangeRequestFormApprovers.objects.filter(
#
code=last_action_vendor
#
).update(
#
is_action=True,
#
action='Acknowledged',
#
action_date=datetime.now(),
#
date_sent=datetime.now()
#
)
level
=
last_action_vendor
.
level
+
1
#
level = last_action_vendor.level + 1
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level__gte
=
int
(
level
))
)
.
update
(
is_action
=
False
,
action
=
None
,
remarks
=
None
,
action_date
=
None
,
date_sent
=
None
)
elif
action
.
lower
()
==
'completed'
:
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level__gte=int(level))
#
).update(
#
is_action=False,
#
action=None,
#
remarks=None,
#
action_date=None,
#
date_sent=None
#
)
#
elif action.lower() == 'completed':
the_last_vendor
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
,
delegation
=
'Vendor/Implementor'
)
.
order_by
(
'level'
)
.
last
()
if
(
current_user
==
the_last_vendor
.
user
.
code
and
level
==
the_last_vendor
.
level
):
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Approved'
)
else
:
the_next_vendor
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
form_code
=
form_code
,
level
=
int
(
next_level
),
delegation
=
'Vendor/Implementor'
)
.
first
()
#
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
#
form_code=form_code, delegation='Vendor/Implementor'
#
).order_by('level').last()
#
if (current_user == the_last_vendor.user.code and
#
level == the_last_vendor.level):
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Approved')
#
else:
#
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
#
form_code=form_code, level=int(next_level),
#
delegation='Vendor/Implementor'
#
).first()
if
the_next_vendor
:
if
the_next_vendor
.
user
.
code
==
the_last_vendor
.
user
.
code
:
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Approved'
)
else
:
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Pending'
)
next_approver_email
(
form_code
,
next_level
)
#
if the_next_vendor:
#
if the_next_vendor.user.code == the_last_vendor.user.code:
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Approved')
#
else:
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Pending')
#
next_approver_email(form_code, next_level)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
level
=
int
(
next_level
))
)
.
update
(
date_sent
=
datetime
.
now
(),
is_action
=
True
)
# update current approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
is_action
=
False
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
0
]
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(level=int(next_level))
#
).update(
#
date_sent=datetime.now(),
#
is_action=True
#
)
#
# update current approver details
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level=int(level))
#
).update(
#
is_action=False
#
)
#
# EMAIL CODE FOR REQUESTOR
#
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
#
send_mail_requestor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
elif
action
.
lower
()
==
'acknowledged'
:
#
elif action.lower() == 'acknowledged':
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
#
# EMAIL CODE FOR REQUESTOR
#
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
#
send_mail_requestor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
elif
action
.
lower
()
==
'accepted'
:
#
elif action.lower() == 'accepted':
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Completed & Accepted'
)
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code
#
).update(status='Completed & Accepted')
# EMAIL CODE FOR VENDOR
requestor_notification_msg
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
0
]
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
# update is_action for current level
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
is_action
=
False
)
elif
action
.
lower
()
==
'cancelled'
:
#
# EMAIL CODE FOR VENDOR
#
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
#
send_mail_vendor(
#
current_user, form_code, delegation,
#
requestor_notification_msg, action,
#
remarks, level
#
)
#
# update is_action for current level
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level=int(level))
#
).update(
#
is_action=False
#
)
#
elif action.lower() == 'cancelled':
# changed form status to cancelled
#
# changed form status to cancelled
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
'Cancelled'
)
#
models.ChangeRequestFormHeader.objects.filter(
#
form_code=form_code).update(status='Cancelled')
# update is_action for current level
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
is_action
=
False
)
#
# update is_action for current level
#
models.ChangeRequestFormApprovers.objects.filter(
#
Q(form_code=form_code) & Q(level=int(level))
#
).update(
#
is_action=False
#
)
reset_autoemail_tables
(
form_code
)
#
reset_autoemail_tables(form_code)
message
=
status_message_response
(
200
,
'success'
,
...
...
@@ -1227,6 +1133,8 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
next_approver_email
(
form_code
,
min_level
)
date_now
=
datetime
.
now
()
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
min_level
))
...
...
@@ -1237,6 +1145,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
# save details for overdue and auto cancellation
overdue_trigger_save
(
form_code
)
# save details for reminder for first approver
reminder_trigger_save
(
form_code
,
date_now
,
date_now
)
serializer
=
self
.
get_serializer
(
instance
)
...
...
@@ -1549,16 +1461,22 @@ class ChangeRequestFormPost(APIView):
next_approver_email
(
frm_id
,
min_level
)
date_now
=
datetime
.
now
()
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
frm_id
)
&
Q
(
level
=
int
(
min_level
))
)
.
update
(
date_sent
=
date
time
.
now
()
,
date_sent
=
date
_now
,
is_action
=
True
)
# save details for overdue and auto cancellation
overdue_trigger_save
(
frm_id
)
# save details for reminder for first approver
reminder_trigger_save
(
frm_id
,
date_now
,
date_now
)
message
=
{
'code'
:
201
,
...
...
app/applicationlayer/utils.py
View file @
ac916bcd
...
...
@@ -20,7 +20,7 @@ REALTIMESERVER_IP = settings.REALTIMESERVER_IP
def
model_to_dict
(
instance
):
try
:
mySerializer
=
copy
.
deepcopy
(
DynamicSerializer
)
mySerializer
.
Meta
.
model
=
instance
.
__class__
return
mySerializer
(
instance
)
.
data
...
...
app/businesslayer/changerequest/change_request.py
View file @
ac916bcd
...
...
@@ -13,14 +13,33 @@ 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
number_generator
,
crhistory_save
,
entity_log_bulk
,
crhistory_log_bulk_delete
,
send_mail_requestor
,
next_approver_email
,
send_mail_vendor
,
crhistory_create_save
,
reminder_trigger_save
,
overdue_trigger_save
,
reset_autoemail_tables
)
from
app.applicationlayer.utils
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
from
django.db.models
import
Min
from
django.conf
import
settings
APPROVER_MESSAGE
=
settings
.
APPROVER_MESSAGE
REQUESTOR_MESSAGE
=
settings
.
REQUESTOR_MESSAGE
REQUESTOR_REJECT_MESSAGE
=
settings
.
REQUESTOR_REJECT_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE
=
settings
.
VENDOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
settings
.
REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_COMPLETION_MESSAGE
=
settings
.
REQUESTOR_COMPLETION_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE
=
settings
.
VENDOR_ACCEPTANCE_MESSAGE
VENDOR_REJECT_MESSAGE
=
settings
.
VENDOR_REJECT_MESSAGE
def
list_by_user
(
user_id_number
):
...
...
@@ -443,7 +462,9 @@ def check_vendor_level(position, routing_level, form_code):
form_code
=
form_code
,
level
=
int
(
routing_level
),
delegation
=
'Vendor/Implementor'
)
)
.
first
()
return
query
elif
position
==
'last'
:
...
...
@@ -451,6 +472,8 @@ def check_vendor_level(position, routing_level, form_code):
form_code
=
form_code
,
delegation
=
'Vendor/Implementor'
)
.
order_by
(
'level'
)
.
last
()
return
query
elif
position
==
'prev'
:
...
...
@@ -458,9 +481,265 @@ def check_vendor_level(position, routing_level, form_code):
Q
(
form_code
=
form_code
)
&
Q
(
action
=
'Completed'
)
&
Q
(
delegation
=
'Vendor/Implementor'
)
&
Q
(
level__lte
=
int
(
level
))
Q
(
level__lte
=
int
(
routing_level
))
)
return
query
def
update_form_approver
(
form_code
,
level
,
apprv_type
,
date_now
):
if
apprv_type
==
'next'
:
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
date_sent
=
date_now
,
is_action
=
True
)
elif
apprv_type
==
'current'
:
# update current approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
level
))
)
.
update
(
is_action
=
False
)
def
update_form_header_status
(
form_code
,
status
):
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
update
(
status
=
status
)
return
True
def
cr_routing_actions
(
approver_instance
,
current_user
):
form_code
=
approver_instance
[
'form_code'
]
delegation
=
approver_instance
[
'delegation'
]
action
=
approver_instance
[
'action'
]
.
lower
()
level
=
approver_instance
[
'level'
]
next_level
=
int
(
approver_instance
[
'level'
])
+
1
remarks
=
approver_instance
[
'remarks'
]
if
approver_instance
[
'action'
]
.
lower
()
==
'approved'
:
the_next_vendor
=
check_vendor_level
(
'next'
,
next_level
,
form_code
)
if
the_next_vendor
:
the_last_vendor
=
check_vendor_level
(
'last'
,
level
,
form_code
)
# changed form status to Approved
if
the_next_vendor
==
the_last_vendor
:
update_form_header_status
(
form_code
,
'Approved'
)
# NOTIF MSG FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
0
]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
next_approver_email
(
form_code
,
next_level
)
date_now
=
datetime
.
now
()
# update next approver details
update_form_approver
(
form_code
,
next_level
,
'next'
,
date_now
)
# update current approver details
update_form_approver
(
form_code
,
level
,
'current'
,
date_now
)
#save details for reminder trigger
reminder_trigger_save
(
form_code
,
date_now
,
date_now
)
elif
approver_instance
[
'action'
]
.
lower
()
==
'rejected'
:
# send email to vendor
if
delegation
.
lower
()
==
'requestor'
:
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
# send reject email to vendor
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
notification_msg
,
action
,
remarks
,
level
)
prev_level
=
int
(
level
)
+
1
# reset last vendor details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
int
(
prev_level
))
)
.
update
(
is_action
=
True
,
action
=
'Acknowledged'
,
action_date
=
datetime
.
now
(),
date_sent
=
datetime
.
now
()
)
else
:
prev_vendor
=
check_vendor_level
(
'prev'
,
level
,
form_code
)
if
not
prev_vendor
.
count
()
>
0
:
update_form_header_status
(
form_code
,
'Rejected'
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
else
:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
# def cr_routing_actions(approver_instance):
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
send_mail_vendor
(
current_user
,
form_code
,
'others'
,
notification_msg
,
action
,
remarks
,
level
)
last_action_vendor
=
prev_vendor
.
last
()
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
code
=
last_action_vendor
)
.
update
(
is_action
=
True
,
action
=
'Acknowledged'
,
action_date
=
datetime
.
now
(),
date_sent
=
datetime
.
now
()
)
level
=
last_action_vendor
.
level
+
1
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level__gte
=
int
(
level
))
)
.
update
(
is_action
=
False
,
action
=
None
,
remarks
=
None
,
action_date
=
None
,
date_sent
=
None
)
elif
approver_instance
[
'action'
]
.
lower
()
==
'completed'
:
the_last_vendor
=
check_vendor_level
(
'last'
,
level
,
form_code
)
if
(
current_user
==
the_last_vendor
.
user
.
code
and
level
==
the_last_vendor
.
level
):
update_form_header_status
(
form_code
,
'Approved'
)
else
:
the_next_vendor
=
check_vendor_level
(
'next'
,
next_level
,
form_code
)
if
the_next_vendor
:
if
the_next_vendor
.
user
.
code
==
the_last_vendor
.
user
.
code
:
update_form_header_status
(
form_code
,
'Approved'
)
else
:
update_form_header_status
(
form_code
,
'Pending'
)
next_approver_email
(
form_code
,
next_level
)
date_now
=
datetime
.
now
()
# update next approver details
update_form_approver
(
form_code
,
next_level
,
'next'
,
date_now
)
# update current approver details
update_form_approver
(
form_code
,
level
,
'current'
,
date_now
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
0
]
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
elif
action
.
lower
()
==
'acknowledged'
:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
elif
action
.
lower
()
==
'accepted'
:
update_form_header_status
(
form_code
,
'Completed & Accepted'
)
# EMAIL CODE FOR VENDOR
requestor_notification_msg
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
0
]
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
remarks
,
level
)
# update current approver details
update_form_approver
(
form_code
,
level
,
'current'
,
date_now
)
elif
action
.
lower
()
==
'cancelled'
:
# changed form status to cancelled
update_form_header_status
(
form_code
,
'Cancelled'
)
# update is_action for current level
update_form_approver
(
form_code
,
level
,
'current'
,
date_now
)
reset_autoemail_tables
(
form_code
)
return
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