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
2c8f4c62
Commit
2c8f4c62
authored
Sep 20, 2019
by
John Red Medrano
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'RMSv2' of
http://42.61.118.105:7990/scm/rms/api-main-service
into red-develop
parents
cc34f8a5
0a61a976
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
422 additions
and
330 deletions
+422
-330
app/applicationlayer/cms/form/serializers.py
app/applicationlayer/cms/form/serializers.py
+120
-32
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+168
-44
app/applicationlayer/cms/template/views.py
app/applicationlayer/cms/template/views.py
+2
-4
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+94
-158
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+3
-7
app/datalayer/serializer_handler.py
app/datalayer/serializer_handler.py
+1
-1
app/entities/enums.py
app/entities/enums.py
+6
-0
app/helper/email_service/sender.py
app/helper/email_service/sender.py
+28
-84
No files found.
app/applicationlayer/cms/form/serializers.py
View file @
2c8f4c62
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
from
app.applicationlayer.cms.utils_cr
import
(
get_account_details
,
get_dept_details
,
get_companies_details
)
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
.
code
)
name
=
user_details
.
values_list
(
'name'
,
flat
=
True
)[
0
]
dept_code
=
user_details
.
values_list
(
'department'
,
flat
=
True
)[
0
]
department_details
=
get_dept_details
(
dept_code
)
department
=
department_details
.
values_list
(
'name'
,
flat
=
True
)[
0
]
comp_code
=
department_details
.
values_list
(
'company'
,
flat
=
True
)[
0
]
company_details
=
get_companies_details
(
comp_code
)
company
=
company_details
.
values_list
(
'name'
,
flat
=
True
)[
0
]
# 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
ret
[
'name'
]
=
name
ret
[
'department'
]
=
department
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
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'
archived_at'
,
'
code'
]
read_only_fields
=
[
'created'
,
'code'
]
class
ChangeRequestFormStakeHoldersSerializer
(
...
...
@@ -41,7 +47,7 @@ class ChangeRequestFormStakeHoldersSerializer(
class
Meta
:
model
=
models
.
ChangeRequestFormStakeHolders
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'
archived_at'
,
'
code'
]
read_only_fields
=
[
'created'
,
'code'
]
class
ChangeRequestFormAttachmentsSerializer
(
...
...
@@ -50,7 +56,7 @@ class ChangeRequestFormAttachmentsSerializer(
class
Meta
:
model
=
models
.
ChangeRequestFormAttachments
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'
archived_at'
,
'
code'
]
read_only_fields
=
[
'created'
,
'code'
]
class
ChangeRequestFormDetailsSerializer
(
...
...
@@ -59,31 +65,113 @@ class ChangeRequestFormDetailsSerializer(
class
Meta
:
model
=
models
.
ChangeRequestFormDetails
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'
archived_at'
,
'
code'
]
read_only_fields
=
[
'created'
,
'code'
]
class
ChangeRequestFormHeaderSerializer
(
WritableNested
ModelSerializer
serializers
.
ModelSerializer
):
frm_approvers
=
ChangeRequestFormApproversSerializer
(
many
=
True
,
required
=
False
)
many
=
True
,
read_only
=
True
)
# frm_stakes = ChangeRequestFormStakeHoldersSerializer(
# many=True, required=False)
frm_stakes
=
ChangeRequestFormStakeHoldersSerializer
(
many
=
True
,
re
quired
=
Fals
e
)
many
=
True
,
re
ad_only
=
Tru
e
)
frm_attachments
=
ChangeRequestFormAttachmentsSerializer
(
many
=
True
,
re
quired
=
Fals
e
)
many
=
True
,
re
ad_only
=
Tru
e
)
frm_details
=
ChangeRequestFormDetailsSerializer
(
many
=
True
,
required
=
False
)
many
=
True
,
read_only
=
True
)
# def update(self, instance, validated_data):
# Update the book instance
# instance.requested_to_template_name = validated_data['requested_to_template_name']
# instance.requested_to_objective = validated_data['requested_to_objective']
# instance.requested_to_target_date = validated_data['requested_to_target_date']
# instance.requested_to_priority = validated_data['requested_to_priority']
# instance.description = validated_data['description']
# instance.status = validated_data['status']
# instance.company_desc = validated_data['company_desc']
# instance.department_desc = validated_data['department_desc']
# instance.requested_desc = validated_data['requested_desc']
# instance.requested_to_template_id = validated_data['requested_to_template_id']
# instance.requested_to_company = validated_data['requested_to_company']
# instance.requested_to_department = validated_data['requested_to_department']
# instance.requested_to_user = validated_data['requested_to_user']
# instance.requested_by_user = validated_data['requested_by_user']
# instance.requested_by_department = validated_data['requested_by_department']
# instance.template_no = validated_data['template_no']
# instance.save()
# Delete any pages not included in the request
# approvers_ids = [item.id for item in validated_data['frm_approvers']]
# for i in validated_data['frm_approvers']:
# print(i)
# print(approvers_ids)
# for page in instance.frm_approvers:
# if page.id not in approvers_ids:
# page.delete()
# # Create or update page instances that are in the request
# for item in validated_data['pages']:
# page = Page(id=item['page_id'], text=item['text'], book=instance)
# page.save()
# return instance
# def update(self, instance, validated_data):
# frm_approvers = validated_data.pop('frm_approvers')
# instance.requested_to_template_name = validated_data.get("requested_to_template_name", instance.requested_to_template_name)
# instance.requested_to_objective = validated_data.get("requested_to_objective", instance.requested_to_objective)
# instance.requested_to_target_date = validated_data.get("requested_to_target_date", instance.requested_to_target_date)
# instance.requested_to_priority = validated_data.get("requested_to_priority", instance.requested_to_priority)
# instance.description = validated_data.get("description", instance.description)
# instance.status = validated_data.get("status", instance.status)
# instance.company_desc = validated_data.get("company_desc", instance.company_desc)
# instance.department_desc = validated_data.get("department_desc", instance.department_desc)
# instance.requested_desc = validated_data.get("requested_desc", instance.requested_desc)
# instance.requested_to_template_id = validated_data.get("requested_to_template_id", instance.requested_to_template_id)
# instance.requested_to_company = validated_data.get("requested_to_company", instance.requested_to_company)
# instance.requested_to_department = validated_data.get("requested_to_department", instance.requested_to_department)
# instance.requested_to_user = validated_data.get("requested_to_user", instance.requested_to_user)
# instance.requested_by_user = validated_data.get("requested_by_user", instance.requested_by_user)
# instance.requested_by_department = validated_data.get("requested_by_department", instance.requested_by_department)
# instance.template_no = validated_data.get("template_no", instance.template_no)
# instance.save()
# print(instance.form_code)
# keep_choices = []
# for choice in frm_approvers:
# if "id" in choice.keys():
# if models.ChangeRequestFormApprovers.objects.filter(id=choice["id"]).exists():
# c = models.ChangeRequestFormApprovers.objects.get(id=choice["id"])
# c.text = choice.get('text', c.text)
# c.save()
# keep_choices.append(c.id)
# else:
# continue
# else:
# c = models.ChangeRequestFormApprovers.objects.create(**choice)
# keep_choices.append(c.id)
# for choice in instance.frm_approvers:
# if choice.id not in keep_choices:
# choice.delete()
# return instance
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
user
=
self
.
context
[
'request'
]
.
user
print
(
user
.
code
)
id_number
=
user
.
code
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
ret
[
'form_code'
])
&
Q
(
archived_at
=
None
)
&
Q
(
form_code
=
ret
[
'form_code'
])
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
)
.
order_by
(
'level'
)
...
...
app/applicationlayer/cms/form/views.py
View file @
2c8f4c62
This diff is collapsed.
Click to expand it.
app/applicationlayer/cms/template/views.py
View file @
2c8f4c62
...
...
@@ -101,8 +101,6 @@ class UserList(APIView):
return
self
.
paginator
.
get_paginated_response
(
data
)
class
ChangeRequestTemplatesViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateHeader
.
objects
.
all
()
...
...
@@ -192,7 +190,7 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
@
transaction
.
atomic
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
...
...
@@ -204,7 +202,7 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
if
not
tmp_no_exists
:
serializer
=
self
.
get_serializer
(
instance
,
data
=
request
.
data
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
...
...
app/applicationlayer/cms/utils_cr.py
View file @
2c8f4c62
This diff is collapsed.
Click to expand it.
app/businesslayer/changerequest/change_request.py
View file @
2c8f4c62
...
...
@@ -21,20 +21,17 @@ def list_by_user(user_id_number):
try
:
approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
user
=
user_id_number
)
&
Q
(
archived_at
=
None
)
Q
(
user
=
user_id_number
)
)
approver
=
[
data
.
form_code
for
data
in
approver
]
stake
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
Q
(
user
=
user_id_number
)
&
Q
(
archived_at
=
None
)
Q
(
user
=
user_id_number
)
)
stake
=
[
data
.
form_code
for
data
in
stake
]
headers
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
archived_at
=
None
,
requested_by_user
=
user_id_number
)
headers
=
[
data
.
form_code
for
data
in
headers
]
...
...
@@ -61,8 +58,7 @@ def list_by_user(user_id_number):
form_code
=
list
(
set
(
stake
+
approver
+
headers
))
return_queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code__in
=
form_code
,
archived_at
=
None
,
form_code__in
=
form_code
)
exclude
=
return_queryset
.
filter
(
status__iexact
=
'Draft'
,
...
...
app/datalayer/serializer_handler.py
View file @
2c8f4c62
...
...
@@ -26,7 +26,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/entities/enums.py
View file @
2c8f4c62
...
...
@@ -97,6 +97,12 @@ class CREnum(Enum):
RESUBMIT
=
"RESUBMIT"
SUBMIT
=
"SUBMIT"
SAVE
=
"SAVE"
APPROVED
=
"APPROVED"
COMPLETED
=
"COMPLETED"
CANCELLED
=
"CANCELLED"
ACCEPTED
=
"ACCEPTED"
ACKNOWLEDGED
=
"ACKNOWLEDGED"
REJECTED
=
"REJECTED"
class
CREntitiesEnum
(
Enum
):
...
...
app/helper/email_service/sender.py
View file @
2c8f4c62
...
...
@@ -479,7 +479,9 @@ def admin_changepassword(args):
# # html_message=FC
# # )
# RMS-CRAPPROVED ; RMS-CRACKNOWLEDGE ; RMS-CRCOMPLETED ; RMS-CRACCEPTED
# RMS-CRAPPROVED ; RMS-CRACKNOWLEDGE ; RMS-CRCOMPLETED ; RMS-CRACCEPTED ;
# RMS-CRREJECTED ; RMS-CRREJECTED-VENDOR
def
routing_table_actions
(
args
):
name
=
args
[
0
]
action_by
=
args
[
1
]
...
...
@@ -491,92 +493,31 @@ def routing_table_actions(args):
department_requestedto
=
args
[
7
]
priority_level
=
args
[
8
]
url
=
args
[
9
]
remarks
=
args
[
10
]
recipient
=
args
[
10
]
action_type
=
args
[
11
]
admin
=
args
[
12
]
recipient
=
args
[
11
]
action_type
=
args
[
12
]
delegation_type
=
args
[
13
]
admin
=
args
[
14
]
if
a
ction_type
.
lower
()
==
'approved'
:
if
a
rgs
[
12
]
.
lower
()
==
'approved'
:
email_template
=
'RMS-CRAPPROVED.html'
subject
=
'Resource Management System - Change Request Approved'
elif
a
ction_type
.
lower
()
==
'acknowledged'
:
elif
a
rgs
[
12
]
.
lower
()
==
'acknowledged'
:
email_template
=
'RMS-CRACKNOWLEDGE.html'
subject
=
'Resource Management System - Change Request Acknowledged'
elif
a
ction_by
.
lower
()
==
'completed'
:
elif
a
rgs
[
12
]
.
lower
()
==
'completed'
:
email_template
=
'RMS-CRCOMPLETED.html'
subject
=
'Resource Management System - Change Request Completed'
elif
a
ction_type
.
lower
()
==
'accepted'
:
elif
a
rgs
[
12
]
.
lower
()
==
'accepted'
:
email_template
=
'RMS-CRACCEPTED.html'
subject
=
'Resource Management System - Change Request Accepted'
F
=
open
(
os
.
path
.
join
(
settings
.
EMAIL_TEMPLATES_ROOT
,
email_template
),
'r'
)
FC
=
F
.
read
()
FC
=
FC
.
replace
(
'{name}'
,
name
)
FC
=
FC
.
replace
(
'{action_by}'
,
action_by
)
FC
=
FC
.
replace
(
'{routing_level}'
,
routing_level
)
FC
=
FC
.
replace
(
'{status}'
,
status
)
FC
=
FC
.
replace
(
'{cr_number}'
,
cr_number
)
FC
=
FC
.
replace
(
'{cr_name}'
,
cr_name
)
FC
=
FC
.
replace
(
'{company_requestedto}'
,
company_requestedto
)
FC
=
FC
.
replace
(
'{department_requestedto}'
,
department_requestedto
)
FC
=
FC
.
replace
(
'{priority_level}'
,
priority_level
)
FC
=
FC
.
replace
(
'{url}'
,
url
)
try
:
send_mail
(
subject
=
subject
,
message
=
''
,
from_email
=
settings
.
EMAIL_DEFAULT_SENDER
,
recipient_list
=
(
recipient
,),
html_message
=
FC
,
fail_silently
=
False
)
models
.
EmailLogs
.
objects
.
create
(
template
=
email_template
,
recipients
=
recipient
,
content
=
FC
,
is_sent
=
True
,
createdby
=
admin
,
modifiedby
=
admin
)
except
Exception
as
e
:
models
.
EmailLogs
.
objects
.
create
(
template
=
email_template
,
recipients
=
recipient
,
content
=
FC
,
is_sent
=
False
,
createdby
=
admin
,
modifiedby
=
admin
)
return
True
# RMS-CRREJECTED ; RMS-CRREJECTED-VENDOR
def
routing_table_actions_rejected
(
args
):
name
=
args
[
0
]
action_by
=
args
[
1
]
routing_level
=
args
[
2
]
status
=
args
[
3
]
cr_number
=
args
[
4
]
cr_name
=
args
[
5
]
company_requestedto
=
args
[
6
]
department_requestedto
=
args
[
7
]
priority_level
=
args
[
8
]
url
=
args
[
9
]
remarks
=
args
[
10
]
recipient
=
args
[
11
]
rejected_type
=
args
[
12
]
admin
=
args
[
13
]
if
rejected_type
==
'requestor'
:
email_template
=
'RMS-CRREJECTED.html'
subject
=
'Resource Management System - Change Request Rejected'
elif
rejected_type
==
'vendor'
:
email_template
=
'RMS-CRREJECTED-VENDOR.html'
elif
args
[
12
]
.
lower
()
==
'rejected'
:
subject
=
'Resource Management System - Change Request Rejected'
if
args
[
13
]
.
lower
()
==
'requestor'
:
email_template
=
'RMS-CRREJECTED.html'
elif
args
[
13
]
.
lower
()
==
'vendor/implementor'
:
email_template
=
'RMS-CRREJECTED-VENDOR.html'
F
=
open
(
os
.
path
.
join
(
settings
.
EMAIL_TEMPLATES_ROOT
,
email_template
),
'r'
)
...
...
@@ -592,7 +533,9 @@ def routing_table_actions_rejected(args):
FC
=
FC
.
replace
(
'{department_requestedto}'
,
department_requestedto
)
FC
=
FC
.
replace
(
'{priority_level}'
,
priority_level
)
FC
=
FC
.
replace
(
'{url}'
,
url
)
FC
=
FC
.
replace
(
'{remarks}'
,
remarks
)
if
args
[
11
]
.
lower
()
==
'rejected'
:
FC
=
FC
.
replace
(
'{remarks}'
,
remarks
)
try
:
send_mail
(
...
...
@@ -635,20 +578,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