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
62e3e6c5
Commit
62e3e6c5
authored
Sep 17, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
actions
parent
2d3352db
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
90 additions
and
157 deletions
+90
-157
app/applicationlayer/cms/form/serializers.py
app/applicationlayer/cms/form/serializers.py
+19
-20
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+15
-11
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+47
-118
app/datalayer/serializer_handler.py
app/datalayer/serializer_handler.py
+1
-1
app/helper/email_service/sender.py
app/helper/email_service/sender.py
+8
-7
No files found.
app/applicationlayer/cms/form/serializers.py
View file @
62e3e6c5
from
app.entities
import
models
from
rest_framework
import
serializers
from
django.db.models
import
Q
from
app.applicationlayer.cms.utils_cr
import
logged_user
from
drf_writable_nested
import
WritableNestedModelSerializer
class
ChangeRequestFormApproversSerializer
(
serializers
.
ModelSerializer
):
#
def to_representation(self, instance):
#
ret = super().to_representation(instance)
#
try:
#
user = instance.user
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
user
=
instance
.
user
#
user_details = get_account_details(user)
#
name = user_details['name']
#
group = user_details['groups'][0]['name']
#
company = user_details['groups'][0]['company__name']
#
ret['name'] = name
#
ret['department'] = group
#
ret['company'] = company
#
return ret
#
except Exception as e:
#
ret['name'] = "none"
#
ret['department'] = "none"
#
ret['company'] = "none"
#
return ret
user_details
=
get_account_details
(
user
)
name
=
user_details
[
'name'
]
group
=
user_details
[
'groups'
][
0
][
'name'
]
company
=
user_details
[
'groups'
][
0
][
'company__name'
]
ret
[
'name'
]
=
name
ret
[
'department'
]
=
group
ret
[
'company'
]
=
company
return
ret
except
Exception
as
e
:
ret
[
'name'
]
=
"none"
ret
[
'department'
]
=
"none"
ret
[
'company'
]
=
"none"
return
ret
class
Meta
:
model
=
models
.
ChangeRequestFormApprovers
...
...
app/applicationlayer/cms/form/views.py
View file @
62e3e6c5
...
...
@@ -25,7 +25,8 @@ from app.businesslayer.changerequest import change_request
from
app.applicationlayer.cms.utils_cr
import
(
number_generator
,
send_mail_requestor
,
next_approver_email
,
crhistory_save
)
crhistory_save
,
send_mail_vendor
)
from
app.entities
import
enums
from
django.forms.models
import
model_to_dict
import
json
...
...
@@ -431,8 +432,8 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
)
def
actions
(
self
,
request
,
*
args
,
**
kwargs
):
# get request data
id
=
request
.
data
[
'id'
]
current_user
=
request
.
data
[
'user'
]
form_code
=
request
.
data
[
'form_code'
]
delegation
=
request
.
data
[
'delegation'
]
...
...
@@ -441,11 +442,13 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
next_level
=
int
(
request
.
data
[
'level'
])
+
1
remarks
=
request
.
data
[
'remarks'
]
# update current row in routing table
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
pk
=
id
)
.
update
(
action
=
action
,
remarks
=
remarks
,
action_date
=
datetime
.
now
())
# get details of next approver/s
next_approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
level
=
str
(
next_level
),
form_code
=
form_code
...
...
@@ -465,17 +468,19 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
remarks
,
level
)
# LOOP on next approver for sending email
for
n_approver
in
next_approver
:
print
(
n_approver
.
user
)
print
(
n_approver
.
user
.
code
)
if
n_approver
.
delegation
.
lower
()
==
'vendor/implementor'
:
notification_msg
=
VENDOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
next_approver_email
(
n_approver
.
user
,
form_code
,
delegation
,
notification_msg
,
action
n_approver
.
user
.
code
,
form_code
,
delegation
,
notification_msg
)
# update next approver details
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
level
=
str
(
next_level
))
)
.
update
(
...
...
@@ -483,25 +488,24 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
)
elif
action
.
lower
()
==
'rejected'
:
if
delegation
.
lower
()
==
'requestor'
:
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
email_code
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
requestor_email_code
,
requestor_notification_msg
,
action
,
remarks
,
level
)
else
:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
# SEND EMAIL AND NOTIF TO REQUESTOR
send_mail_requestor
(
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
requestor_email_code
,
requestor_notification_msg
,
action
,
remarks
,
level
)
...
...
app/applicationlayer/cms/utils_cr.py
View file @
62e3e6c5
...
...
@@ -10,7 +10,6 @@ from app.applicationlayer.utils import main_threading, notification_create
from
app.helper.email_service
import
sender
CR_FRONT_LINK
=
settings
.
CR_FRONT_LINK
# NOTIFICATION = settings.NOTIFICATION
def
get_dept_details
(
dept_no
):
...
...
@@ -68,16 +67,6 @@ class QuerySetHelper:
)
return
context
.
queryset
# if self.request.query_params.get('search'):
# search_key = self.request.query_params.get('search')
# self.queryset = self.queryset.filter(
# Q(requested_to_template_name__icontains=search_key.lower()) |
# Q(requested_to_template_id__icontains=search_key.lower())
# )
# self.queryset = QuerySetHelper.Sort(self)
@
staticmethod
def
Filter
(
context
):
if
int
(
len
(
context
.
request
.
query_params
))
>
0
:
...
...
@@ -114,41 +103,6 @@ def number_generator(prefix, id):
return
autogenerated_no
def
logged_user
(
self
):
# return self.request.META.get('HTTP_ACCOUNT_NO')
return
self
.
request
.
user
def
receiver_body
(
sender_account_no
,
receiver_account_no
,
email_code
,
email_recipient
,
app
,
sent
,
name
,
routing_level
,
status
,
cr_number
,
cr_name
,
company_requestedto
,
department_requestedto
,
priority_level
,
url
):
receiver_data
=
{
"sender_account_no"
:
sender_account_no
,
"receiver_account_no"
:
receiver_account_no
,
"email_code"
:
email_code
,
"email_recipient"
:
email_recipient
,
"app"
:
app
,
"sent"
:
"False"
,
"name"
:
name
,
"routing_level"
:
routing_level
,
"status"
:
status
,
"cr_number"
:
cr_number
,
"cr_name"
:
cr_name
,
"company_requestedto"
:
company_requestedto
,
"department_requestedto"
:
department_requestedto
,
"priority_level"
:
priority_level
,
"url"
:
url
}
return
receiver_data
def
get_template_instance
(
form_code
):
template_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
...
...
@@ -156,48 +110,22 @@ def get_template_instance(form_code):
return
template_instance
def
send_notification
(
form_code
,
cr_number
,
user_id_number
,
user_name
,
message
,
app
,
sender_id_number
,
sender_name
):
notification_data
=
{
"slug"
:
form_code
,
"change_request_template_code"
:
cr_number
,
# (OPENING TAG) receiver credential
"account_no"
:
user_id_number
,
"user"
:
user_name
,
# (CLOSING TAG) receiver credential
"notif_type"
:
"ACTIVITY"
,
"message"
:
message
,
"is_read"
:
False
,
"app"
:
app
,
"sender_account_no"
:
sender_id_number
,
"createdby"
:
sender_name
}
notification
=
requests
.
post
(
NOTIFICATION
,
data
=
notification_data
)
# return notification.status
return
notification
def
send_mail_vendor
(
receiver
,
form_code
,
delegation
,
msg
,
action
,
code
,
def
send_mail_vendor
(
current_user
,
form_code
,
delegation
,
msg
,
action
,
remarks
,
routing_level
):
app
=
'cms'
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
template_instance
=
get_template_instance
(
form_code
)
cr_number
=
template_instance
.
requested_to_template_id
template_name
=
template_instance
.
requested_to_template_name
requested_to_company
=
template_instance
.
requested_to_company
requested_to_department
=
template_instance
.
requested_to_department
requested_by_user
=
template_instance
.
requested_by_user
created
=
template_instance
.
created
requested_to_company
=
template_instance
.
requested_to_company
.
code
requested_to_department
=
template_instance
.
requested_to_department
.
code
requested_by_user
=
template_instance
.
requested_by_user
.
code
requested_to_priority
=
template_instance
.
requested_to_priority
vendor_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
...
...
@@ -212,7 +140,7 @@ def send_mail_vendor(receiver,
requestor_account_id
=
vendor
[
'id_number'
]
# sender details
sender_instance
=
get_account_details
(
receiv
er
)
sender_instance
=
get_account_details
(
current_us
er
)
sender_account_username
=
sender_instance
[
'username'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_name
=
sender_instance
[
'name'
]
...
...
@@ -316,62 +244,63 @@ def send_mail_requestor(current_user,
current_user
)
def
next_approver_email
(
receiver
,
form_code
,
delegation
,
msg
,
action
):
def
next_approver_email
(
receiver
,
form_code
,
delegation
,
msg
):
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
template_instance
=
get_template_instance
(
form_code
)
app
=
'cms'
cr_number
=
template_instance
.
requested_to_template_id
template_name
=
template_instance
.
requested_to_template_name
requested_to_company
=
template_instance
.
requested_to_company
requested_to_department
=
template_instance
.
requested_to_department
requested_by_user
=
template_instance
.
requested_by_user
requested_to_company
=
template_instance
.
requested_to_company
.
code
requested_to_department
=
template_instance
.
requested_to_department
.
code
requested_by_user
=
template_instance
.
requested_by_user
.
code
requested_to_priority
=
template_instance
.
requested_to_priority
cr_status
=
template_instance
.
status
# for rec in receiver:
# receiver details
# if action == 'initial':
# next approver details --------------------------------------------------
receiver_instance
=
get_account_details
(
receiver
)
# else:
# receiver_instance = get_account_details(receiver.user)
receiver_name
=
receiver_instance
[
'name'
]
receiver_email
=
receiver_instance
[
'email'
]
receiver_account_id
=
receiver_instance
[
'id_number'
]
receiver_name
=
receiver_instance
.
values_list
(
'name'
,
flat
=
True
)[
0
]
receiver_email
=
receiver_instance
.
values_list
(
'email'
,
flat
=
True
)[
0
]
receiver_code
=
receiver_instance
.
values_list
(
'code'
,
flat
=
True
)[
0
]
#
sender details
#
requestor details --------------------------------------------------
sender_instance
=
get_account_details
(
requested_by_user
)
sender_
account_username
=
sender_instance
[
'username'
]
sender_
account_id
=
sender_instance
[
'id_number'
]
sender_
name
=
sender_instance
[
'name'
]
sender_
email
=
sender_instance
.
values_list
(
'email'
,
flat
=
True
)[
0
]
sender_
name
=
sender_instance
.
values_list
(
'name'
,
flat
=
True
)[
0
]
sender_
code
=
sender_instance
.
values_list
(
'code'
,
flat
=
True
)[
0
]
group
=
get_dept_details
(
requested_to_department
)
group_name
=
group
[
'name'
]
department
=
get_dept_details
(
requested_to_department
)
dept_name
=
department
.
values_list
(
'name'
,
flat
=
True
)[
0
]
company
=
get_companies_details
(
requested_to_company
)
company_name
=
company
[
'name'
]
company_name
=
company
.
values_list
(
'name'
,
flat
=
True
)[
0
]
data
=
receiver_body
(
sender_account_id
,
receiver_account_id
,
code
,
receiver_email
,
app
,
"False"
,
receiver_name
,
1
,
"Pending"
,
cr_number
,
template_name
,
company_name
,
group_name
,
requested_to_priority
,
cr_link
)
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
# call sender email
name
=
receiver_name
cr_number
=
cr_number
cr_name
=
template_name
company_requestedto
=
company_name
department_requestedto
=
dept_name
priority_level
=
requested_to_priority
status
=
cr_status
url
=
cr_link
recipient
=
receiver_email
delegation_type
=
delegation
admin
=
sender_email
args
=
[
name
,
cr_number
,
cr_name
,
company_requestedto
,
department_requestedto
,
priority_level
,
status
,
url
,
recipient
,
delegation_type
,
admin
]
main_threading
(
args
,
sender
.
routing_table_actions_required
)
message
=
f
"{sender_name} {msg} ({template_name})"
notif
=
send_notification
(
form_code
,
cr_number
,
receiver_account_id
,
receiver_name
,
message
,
app
,
sender_account_id
,
sender_account_username
)
# create notification
return
True
notification_create
(
form_code
,
message
,
receiver_code
,
sender_code
)
def
cancel_overdue
(
request
):
...
...
app/datalayer/serializer_handler.py
View file @
62e3e6c5
...
...
@@ -21,7 +21,7 @@ def custom_exception_handler(exc, context):
value
=
value
[
0
]
error_message
[
'code'
]
=
response
.
status_code
error_message
[
'status'
]
=
'failed'
error_message
[
'status'
]
=
'failed
kk
'
error_message
[
'message'
]
=
value
response
.
data
=
error_message
...
...
app/helper/email_service/sender.py
View file @
62e3e6c5
...
...
@@ -634,20 +634,21 @@ def routing_table_actions_required(args):
url
=
args
[
7
]
recipient
=
args
[
8
]
ac
tion_type
=
args
[
9
]
delega
tion_type
=
args
[
9
]
admin
=
args
[
10
]
if
action_type
==
'requestor'
:
email_template
=
'RMS-ACTIONREQUIRED.html'
subject
=
'Resource Management System - Action Required for Change Request'
elif
action_type
==
'vendor'
:
if
delegation_type
.
lower
()
==
'vendor/implementor'
:
email_template
=
'RMS-ACTIONREQUIRED-VENDOR.html'
subject
=
'Resource Management System - Action Required for Change Request'
else
:
email_template
=
'RMS-ACTIONREQUIRED.html'
subject
=
'Resource Management System - Action Required for Change Request'
F
=
open
(
os
.
path
.
join
(
settings
.
EMAIL_TEMPLATES_ROOT
,
email_template
),
'r'
)
FC
=
F
.
read
()
FC
=
FC
.
replace
(
'{name}'
,
name
)
FC
=
FC
.
replace
(
'{cr_number}'
,
cr_number
)
FC
=
FC
.
replace
(
'{cr_name}'
,
cr_name
)
...
...
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