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
cd808d42
Commit
cd808d42
authored
Feb 07, 2020
by
John Red Medrano
Browse files
Options
Browse Files
Download
Plain Diff
pull changes from demo
parents
0f456296
d1c80aa6
Changes
28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
721 additions
and
175 deletions
+721
-175
app/applicationlayer/cms/form/approver/serializers.py
app/applicationlayer/cms/form/approver/serializers.py
+19
-18
app/applicationlayer/cms/form/attachment/serializers.py
app/applicationlayer/cms/form/attachment/serializers.py
+2
-2
app/applicationlayer/cms/form/header/serializers.py
app/applicationlayer/cms/form/header/serializers.py
+1
-1
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+33
-16
app/applicationlayer/cms/form/serializers.py
app/applicationlayer/cms/form/serializers.py
+1
-2
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+4
-3
app/applicationlayer/cms/master/template/account/views.py
app/applicationlayer/cms/master/template/account/views.py
+0
-1
app/applicationlayer/cms/template/approver/serializers.py
app/applicationlayer/cms/template/approver/serializers.py
+9
-8
app/applicationlayer/cms/template/header/serializers.py
app/applicationlayer/cms/template/header/serializers.py
+1
-1
app/applicationlayer/cms/template/header/views.py
app/applicationlayer/cms/template/header/views.py
+30
-13
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+8
-1
app/applicationlayer/download/accounts/views.py
app/applicationlayer/download/accounts/views.py
+1
-1
app/applicationlayer/management/account/serializer.py
app/applicationlayer/management/account/serializer.py
+7
-0
app/applicationlayer/management/account/views.py
app/applicationlayer/management/account/views.py
+85
-21
app/applicationlayer/management/application/views.py
app/applicationlayer/management/application/views.py
+27
-18
app/applicationlayer/management/batchupload/views.py
app/applicationlayer/management/batchupload/views.py
+24
-10
app/applicationlayer/utils.py
app/applicationlayer/utils.py
+12
-1
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+1
-0
app/businesslayer/changerequest/change_request_template.py
app/businesslayer/changerequest/change_request_template.py
+90
-0
app/entities/migrations/0002_auto_20200205_1707.py
app/entities/migrations/0002_auto_20200205_1707.py
+26
-0
app/entities/migrations/0003_auto_20200206_1422.py
app/entities/migrations/0003_auto_20200206_1422.py
+25
-0
app/entities/models.py
app/entities/models.py
+15
-19
app/helper/decorators.py
app/helper/decorators.py
+209
-7
config/settings/base.py
config/settings/base.py
+59
-28
config/settings/dev.py
config/settings/dev.py
+0
-3
env.new_template.ini
env.new_template.ini
+30
-0
manage.py
manage.py
+1
-1
requirements/export docker image.txt
requirements/export docker image.txt
+1
-0
No files found.
app/applicationlayer/cms/form/approver/serializers.py
View file @
cd808d42
...
...
@@ -38,17 +38,17 @@ class ChangeRequestFormApproversSerializer(
if
instance
.
form_code
.
status
==
'Draft'
:
if
instance
.
tmp_approver
:
if
instance
.
tmp_approver
.
user
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
user
:
ret
[
'editable_user'
]
=
False
else
:
ret
[
'editable_user'
]
=
True
if
instance
.
tmp_approver
.
company
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
company
:
ret
[
'editable_comp'
]
=
False
else
:
ret
[
'editable_comp'
]
=
True
if
instance
.
tmp_approver
.
department
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
department
:
ret
[
'editable_dept'
]
=
False
else
:
ret
[
'editable_dept'
]
=
True
...
...
@@ -58,12 +58,12 @@ class ChangeRequestFormApproversSerializer(
else
:
ret
[
'editable_deleg'
]
=
True
# comment
#
if instance.tmp_approver.delegation.name.lower() == 'requestor':
#
ret['editable_user'] = False
#
ret['editable_comp'] = False
#
ret['editable_dept'] = False
#
ret['editable_deleg'] = False
if
instance
.
tmp_approver
.
delegation
:
if
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
ret
[
'editable_user'
]
=
False
ret
[
'editable_comp'
]
=
False
ret
[
'editable_dept'
]
=
False
ret
[
'editable_deleg'
]
=
False
else
:
ret
[
'editable_user'
]
=
True
...
...
@@ -83,13 +83,13 @@ class ChangeRequestFormApproversSerializer(
if
instance
.
form_code
.
status
==
'Draft'
:
if
instance
.
tmp_approver
:
if
instance
.
tmp_approver
.
user
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
user
:
ret
[
'editable_user'
]
=
False
else
:
ret
[
'user'
]
=
None
ret
[
'editable_user'
]
=
True
if
instance
.
tmp_approver
.
company
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
company
:
ret
[
'company'
]
=
{
"id"
:
instance
.
tmp_approver
.
company
.
id
,
"code"
:
instance
.
tmp_approver
.
company
.
code
,
...
...
@@ -101,7 +101,7 @@ class ChangeRequestFormApproversSerializer(
ret
[
'company'
]
=
None
ret
[
'editable_comp'
]
=
True
if
instance
.
tmp_approver
.
department
or
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
if
instance
.
tmp_approver
.
department
:
ret
[
'department'
]
=
{
"id"
:
instance
.
tmp_approver
.
department
.
id
,
"code"
:
instance
.
tmp_approver
.
department
.
code
,
...
...
@@ -123,12 +123,13 @@ class ChangeRequestFormApproversSerializer(
else
:
ret
[
'delegation'
]
=
None
ret
[
'editable_deleg'
]
=
True
# if instance.tmp_approver.delegation.name.lower() == 'requestor':
# ret['editable_user'] = False
# ret['editable_comp'] = False
# ret['editable_dept'] = False
# ret['editable_deleg'] = False
if
instance
.
tmp_approver
.
delegation
:
if
instance
.
tmp_approver
.
delegation
.
name
.
lower
()
==
'requestor'
:
ret
[
'editable_user'
]
=
False
ret
[
'editable_comp'
]
=
False
ret
[
'editable_dept'
]
=
False
ret
[
'editable_deleg'
]
=
False
else
:
ret
[
'editable_user'
]
=
True
...
...
app/applicationlayer/cms/form/attachment/serializers.py
View file @
cd808d42
...
...
@@ -17,18 +17,18 @@ class ChangeRequestFormAttachmentsSerializer(
"contact_no"
:
instance
.
uploaded_by
.
contact_no
}
ret
[
'uploaded_by'
]
=
user_object
ret
[
'file_upload'
]
=
self
.
context
[
'request'
]
.
build_absolute_uri
(
instance
.
file_upload
.
url
.
url
)
ret
[
'file_upload_id'
]
=
instance
.
file_upload
.
id
return
ret
class
Meta
:
model
=
models
.
ChangeRequestFormAttachments
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'code'
]
class
ChangeRequestFormAttachmentsFileUploadSerializer
(
serializers
.
ModelSerializer
):
...
...
app/applicationlayer/cms/form/header/serializers.py
View file @
cd808d42
...
...
@@ -98,7 +98,7 @@ class ChangeRequestFormHeaderSerializer(
ret
[
'template_object'
]
=
"None"
return
ret
# 'company_desc', 'department_desc', 'requested_desc',
class
Meta
:
model
=
models
.
ChangeRequestFormHeader
# fields = '__all__'
...
...
app/applicationlayer/cms/form/header/views.py
View file @
cd808d42
...
...
@@ -22,7 +22,8 @@ from django.db import transaction, IntegrityError, connection
from
app.applicationlayer.utils
import
(
QuerySetHelper
,
status_message_response
,
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
,
send_mail_requestor
,
...
...
@@ -35,7 +36,8 @@ from app.applicationlayer.cms.utils_cr import (number_generator,
entity_log_bulk
,
reminder_trigger_save
,
overdue_trigger_save
,
reset_autoemail_tables
)
reset_autoemail_tables
,
delete_master_attachment_file
)
from
app.entities
import
enums
from
app.applicationlayer.utils
import
model_to_dict
...
...
@@ -72,6 +74,9 @@ from django.conf import settings
from
io
import
BytesIO
from
django.http
import
HttpResponse
from
xhtml2pdf
import
pisa
from
app.helper.decorators
import
*
from
app.applicationlayer.utils
import
error_message
config
=
configparser
.
ConfigParser
()
...
...
@@ -552,13 +557,14 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
# full_file_name = os.path.join(my_folder, file_name)
# if os.path.isfile(full_file_name):
# shutil.copy(full_file_name, dest)
for
file_name
in
attch
:
a
=
os
.
path
.
join
(
settings
.
MEDIA_ROOT
,
file_name
[
'file_upload__url'
])
# full_file_name = os.path.join(my_folder, file_name['file_upload__url'])
# print(full_file_name)
if
os
.
path
.
isfile
(
a
):
print
(
a
)
# print(type(a))
b
=
open
(
a
,
'r'
)
shutil
.
copy
(
b
,
my_folder
)
else
:
...
...
@@ -739,6 +745,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
@
FormValidation
@
transaction
.
atomic
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
...
...
@@ -851,7 +858,8 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
@
FormValidation
@
transaction
.
atomic
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
...
...
@@ -864,6 +872,13 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
form_code
=
kwargs
[
'form_code'
]
form_data
=
request
.
data
# Restrict a requestor to submit a CR without atleast 1 approver
counter
=
change_request_template
.
validation_existing_approver
(
form_data
[
'frm_approvers'
])
if
counter
==
0
:
return
error_message
(
'400'
,
'Please select at least 1 approver before submitting this request.'
,
'failed'
,
status
.
HTTP_400_BAD_REQUEST
)
# generate batchno history
batchno
=
get_max_batchno
(
"batch"
)
...
...
@@ -1180,16 +1195,17 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
class
ChangeRequestFormPost
(
APIView
):
@
FormValidation
@
transaction
.
atomic
()
def
post
(
self
,
request
):
form_header
=
request
.
data
try
:
data_list_approver
=
[]
data_list_stake
=
[]
data_list_attach
=
[]
data_list_detail
=
[]
form_header_data
=
{
'requested_to_template_name'
:
form_header
[
'requested_to_template_name'
],
'requested_to_template_id'
:
form_header
[
'requested_to_template_id'
],
...
...
@@ -1198,9 +1214,6 @@ class ChangeRequestFormPost(APIView):
'requested_to_priority'
:
form_header
[
'requested_to_priority'
],
'description'
:
form_header
[
'description'
],
'status'
:
form_header
[
'status'
],
'company_desc'
:
form_header
[
'company_desc'
],
'department_desc'
:
form_header
[
'department_desc'
],
'requested_desc'
:
form_header
[
'requested_desc'
],
'requested_by_department'
:
form_header
[
'requested_by_department'
],
'requested_by_user'
:
form_header
[
'requested_by_user'
],
'requested_to_company'
:
form_header
[
'requested_to_company'
],
...
...
@@ -1209,7 +1222,11 @@ class ChangeRequestFormPost(APIView):
'template_no'
:
form_header
[
'template_no'
]
}
# sp1 = transaction.savepoint() # nothing will save to db
# 'company_desc': None,
# 'department_desc': None,
# 'requested_desc': None,
sp1
=
transaction
.
savepoint
()
# nothing will save to db
serializer
=
ChangeRequestFormHeaderSerializer
(
data
=
form_header_data
)
...
...
@@ -1228,15 +1245,13 @@ class ChangeRequestFormPost(APIView):
serializer
.
save
()
frm_id
=
serializer
.
data
[
'form_code'
]
# create form approvers
frm_approvers
=
form_header
[
'frm_approvers'
]
counter
=
0
for
frm_approver
in
frm_approvers
:
frm_approver
[
'form_code'
]
=
frm_id
counter
=
counter
+
1
data_list_approver
.
append
(
frm_approver
)
serializerApprover
=
ChangeRequestFormApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
...
...
@@ -1367,7 +1382,8 @@ class ChangeRequestFormPost(APIView):
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
except
ValidationError
as
e
:
# transaction.savepoint_rollback(sp1)
transaction
.
savepoint_rollback
(
sp1
)
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
...
...
@@ -1376,7 +1392,8 @@ class ChangeRequestFormPost(APIView):
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
# transaction.savepoint_rollback(sp1)
transaction
.
savepoint_rollback
(
sp1
)
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
...
...
app/applicationlayer/cms/form/serializers.py
View file @
cd808d42
...
...
@@ -118,7 +118,6 @@ class ChangeRequestFormHeaderSerializer(
fields
=
(
'form_code'
,
'requested_to_template_name'
,
'requested_to_objective'
,
'requested_to_target_date'
,
'requested_to_priority'
,
'description'
,
'created'
,
'cancel_date'
,
'status'
,
'company_desc'
,
'department_desc'
,
'requested_desc'
,
'requested_to_template_id'
,
'requested_to_company'
,
'requested_to_department'
,
'requested_to_user'
,
'requested_by_user'
,
'requested_by_department'
,
...
...
@@ -127,7 +126,7 @@ class ChangeRequestFormHeaderSerializer(
read_only_fields
=
[
'created'
,
'form_code'
]
# 'company_desc', 'department_desc', 'requested_desc',
class
ChangeRequestFormHeaderSerializerList
(
serializers
.
ModelSerializer
):
...
...
app/applicationlayer/cms/form/views.py
View file @
cd808d42
...
...
@@ -941,9 +941,6 @@ class ChangeRequestFormPost(APIView):
'requested_to_priority'
:
form_header
[
'requested_to_priority'
],
'description'
:
form_header
[
'description'
],
'status'
:
form_header
[
'status'
],
'company_desc'
:
form_header
[
'company_desc'
],
'department_desc'
:
form_header
[
'department_desc'
],
'requested_desc'
:
form_header
[
'requested_desc'
],
'requested_by_department'
:
form_header
[
'requested_by_department'
],
'requested_by_user'
:
form_header
[
'requested_by_user'
],
'requested_to_company'
:
form_header
[
'requested_to_company'
],
...
...
@@ -952,6 +949,10 @@ class ChangeRequestFormPost(APIView):
'template_no'
:
form_header
[
'template_no'
]
}
# 'company_desc': form_header['company_desc'],
# 'department_desc': form_header['department_desc'],
# 'requested_desc': form_header['requested_desc'],
sp1
=
transaction
.
savepoint
()
# nothing will save to db
serializer
=
serializers
.
ChangeRequestFormHeaderSerializer
(
...
...
app/applicationlayer/cms/master/template/account/views.py
View file @
cd808d42
...
...
@@ -26,7 +26,6 @@ class UserListTemplate(APIView):
user_list
=
models
.
User
.
objects
.
filter
(
code__in
=
verified_users
)
page
=
self
.
paginate_queryset
(
user_list
)
if
page
is
not
None
:
...
...
app/applicationlayer/cms/template/approver/serializers.py
View file @
cd808d42
...
...
@@ -22,7 +22,7 @@ class ChangeRequestTemplateApproversSerializer(
ret
[
'editable_comp'
]
=
True
if
instance
.
department
:
ret
[
'department'
]
=
{
"id"
:
instance
.
department
.
id
,
"code"
:
instance
.
department
.
code
,
...
...
@@ -33,7 +33,7 @@ class ChangeRequestTemplateApproversSerializer(
ret
[
'editable_dept'
]
=
True
if
instance
.
user
:
user_object
=
{
"id"
:
instance
.
user
.
id
,
"name"
:
instance
.
user
.
name
,
...
...
@@ -59,12 +59,13 @@ class ChangeRequestTemplateApproversSerializer(
else
:
ret
[
'editable_deleg'
]
=
True
if
instance
.
delegation
.
name
.
lower
()
==
'requestor'
:
ret
[
'editable_user'
]
=
False
ret
[
'editable_comp'
]
=
False
ret
[
'editable_dept'
]
=
False
ret
[
'editable_deleg'
]
=
False
if
instance
.
delegation
:
if
instance
.
delegation
.
name
.
lower
()
==
'requestor'
or
instance
.
delegation
.
name
.
lower
()
==
'vendor/implementor'
:
ret
[
'editable_user'
]
=
False
ret
[
'editable_comp'
]
=
False
ret
[
'editable_dept'
]
=
False
ret
[
'editable_deleg'
]
=
False
return
ret
except
Exception
as
e
:
...
...
app/applicationlayer/cms/template/header/serializers.py
View file @
cd808d42
...
...
@@ -33,7 +33,7 @@ class ChangeRequestTemplatesSerializer(
many
=
True
,
read_only
=
True
)
tmp_details
=
ChangeRequestTemplateDetailsSerializer
(
many
=
True
,
read_only
=
True
)
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
...
...
app/applicationlayer/cms/template/header/views.py
View file @
cd808d42
...
...
@@ -14,7 +14,8 @@ from app.applicationlayer.utils import (CustomPagination,
status_message_response
)
from
app.applicationlayer.cms.utils_cr
import
(
entity_log_bulk
entity_log_bulk
,
delete_master_attachment_file
)
from
app.applicationlayer.utils
import
model_to_dict
from
app.entities
import
enums
,
models
...
...
@@ -23,7 +24,9 @@ from django.db.models import Q
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
rest_framework.exceptions
import
ParseError
from
app.businesslayer.changerequest.change_request_template
import
(
tmp_add_edit_delete
tmp_add_edit_delete
,
validation_approver_same_level
,
validation_existing_vendor_requestor
)
from
app.applicationlayer.management.account.serializer
import
ChangeRequestList
from
app.applicationlayer.cms.template.approver.serializers
import
ChangeRequestTemplateApproversSerializer
...
...
@@ -33,6 +36,7 @@ from app.applicationlayer.cms.template.attachment.serializers import ChangeReque
from
app.applicationlayer.cms.template.header.serializers
import
ChangeRequestTemplatesSerializer
from
app.applicationlayer.cms.template.header.serializers
import
ChangeRequestTemplatesSerializerList
from
app.applicationlayer.cms.template.header.table_filters
import
HeaderFilterSet
from
app.helper.decorators
import
*
# from django_filters import rest_framework as filters
...
...
@@ -184,9 +188,10 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
return
Response
(
e
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
@
TemplateValidation
@
transaction
.
atomic
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
partial
=
kwargs
.
pop
(
'partial'
,
True
)
instance
=
self
.
get_object
()
...
...
@@ -339,16 +344,24 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
class
ChangeRequestTemplatePost
(
APIView
):
@
TemplateValidation
@
transaction
.
atomic
()
def
post
(
self
,
request
):
template_header
=
request
.
data
try
:
# Check if prefix already exists
prefix
=
models
.
ChangeRequestTemplateHeader
.
objects
.
filter
(
requested_to_template_id
=
template_header
[
'requested_to_template_id'
])
if
prefix
:
return
error_message
(
'400'
,
'CR Number prefix already exists.'
,
'failed'
,
status
.
HTTP_400_BAD_REQUEST
)
data_list_approver
=
[]
data_list_stake
=
[]
data_list_attach
=
[]
data_list_detail
=
[]
template_header_data
=
{
'requested_to_template_name'
:
template_header
[
'requested_to_template_name'
],
'requested_to_template_id'
:
template_header
[
'requested_to_template_id'
],
...
...
@@ -365,12 +378,6 @@ class ChangeRequestTemplatePost(APIView):
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
(
data
=
template_header_data
)
...
...
@@ -385,7 +392,7 @@ class ChangeRequestTemplatePost(APIView):
for
tmp_approver
in
tmp_approvers
:
tmp_approver
[
'template_no'
]
=
tmp_id
data_list_approver
.
append
(
tmp_approver
)
serializerApprover
=
ChangeRequestTemplateApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
...
...
@@ -445,15 +452,25 @@ class ChangeRequestTemplatePost(APIView):
except
ValidationError
as
e
:
transaction
.
savepoint_rollback
(
sp1
)
if
template_header
[
'tmp_attachments'
]:
delete_master_attachment_file
(
template_header
[
'tmp_attachments'
])
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
str
(
e
),
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
transaction
.
savepoint_rollback
(
sp1
)
if
template_header
[
'tmp_attachments'
]:
delete_master_attachment_file
(
template_header
[
'tmp_attachments'
])
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
...
...
app/applicationlayer/cms/utils_cr.py
View file @
cd808d42
...
...
@@ -866,4 +866,11 @@ def send_email_onbehalf(active_user, behalf_usernext_level):
status
,
url
,
recipient
,
delegation_type
,
delegation_recipient
,
admin
]
main_threading
(
args
,
sender
.
routing_table_actions_required
)
\ No newline at end of file
main_threading
(
args
,
sender
.
routing_table_actions_required
)
def
delete_master_attachment_file
(
attachments
):
# delete master attachment data and media file attachments
for
attachment
in
attachments
:
attach
=
models
.
MasterAttachment
.
objects
.
filter
(
id
=
attachment
[
'file_upload'
])
if
attach
:
attach
.
first
()
.
delete
()
app/applicationlayer/download/accounts/views.py
View file @
cd808d42
...
...
@@ -25,7 +25,7 @@ class UserDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
# id_number = request.user.code
data
=
User
.
objects
.
all
()
data
=
User
.
objects
.
all
()
.
exclude
(
id
=
1
)
serializer
=
headers
(
data
=
data
,
many
=
True
)
serializer
.
is_valid
(
raise_exception
=
False
)
return
Response
(
serializer
.
data
)
...
...
app/applicationlayer/management/account/serializer.py
View file @
cd808d42
...
...
@@ -11,6 +11,13 @@ from app.entities.models import (
User
,
Department
,
UserImage
,
AllowedCompany
,
Application
,
Module
,
ChangeRequestSettings
)
import
os
import
configparser
config
=
configparser
.
ConfigParser
()
config_file
=
os
.
path
.
join
(
'./'
,
'env.ini'
)
config
.
read
(
config_file
)
import
os
import
configparser
...
...
app/applicationlayer/management/account/views.py
View file @
cd808d42
...
...
@@ -55,6 +55,7 @@ class UserViewSet(viewsets.ModelViewSet):
'email'
,
'contact_no'
)
@
rms
.
AccountValidation
@
rms
.
user_create
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
@@ -146,22 +147,35 @@ class UserViewSet(viewsets.ModelViewSet):
@
transaction
.
atomic
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
new_instance
=
model_to_dict
(
instance
)
UserHistory
.
objects
.
filter
(
username
=
instance
.
username
)
.
update
(
deleted
=
True
)
AllowedCompany
.
objects
.
filter
(
id_number
=
instance
.
code
)
.
delete
()
self
.
perform_destroy
(
instance
)
try
:
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
enums
.
LogEntitiesEnum
.
USER
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
instance
=
self
.
get_object
()
new_instance
=
model_to_dict
(
instance
)
UserHistory
.
objects
.
filter
(
username
=
instance
.
username
)
.
update
(
deleted
=
True
)
AllowedCompany
.
objects
.
filter
(
id_number
=
instance
.
code
)
.
delete
()
self
.
perform_destroy
(
instance
)
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
enums
.
LogEntitiesEnum
.
USER
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
except
IntegrityError
as
e
:
error
=
f
'Cant delete {instance.name} it has an existing transactions on either change request or change request template'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
@
rms
.
AccountValidation
@
rms
.
user_create
@
transaction
.
atomic
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
@@ -185,9 +199,18 @@ class UserViewSet(viewsets.ModelViewSet):
if
cms_form
.
count
()
>
0
or
cms_template
.
count
()
>
0
:
raise
ParseError
(
'Cannot update this record the user has a record on change request it might cause a data error'
)
# raise ParseError(
# 'Cannot update this record the user has a record on change request it might cause a data error'
# )
error
=
'Cannot update this record the user has a record on change request it might cause a data error'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
serializer
=
self
.
get_serializer
(
instance
,
data
=
request
.
data
,
partial
=
partial
...
...
@@ -272,7 +295,15 @@ class UserViewSet(viewsets.ModelViewSet):
else
:
raise
Exception
(
'User not found'
)
# raise Exception('User not found')
error
=
'User not found'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
return
Response
(
{
"detail"
:
"Success"
},
...
...
@@ -296,7 +327,16 @@ class UserViewSet(viewsets.ModelViewSet):
form
=
request
.
data
if
form
[
'new_password'
]
!=
form
[
'new_password_confirm'
]:
raise
Exception
(
'Passwords must match'
)
# raise Exception('Passwords must match')
error
=
'Passwords must match'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
existingUser
=
User
.
objects
.
filter
(
code
=
code
)
pk
=
existingUser
.
values
()
.
first
()[
'id'
]
...
...
@@ -322,7 +362,15 @@ class UserViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
else
:
raise
Exception
(
'User not found'
)
# raise Exception('User not found')
error
=
'User not found'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
else
:
serialized
.
is_valid
(
raise_exception
=
True
)
...
...
@@ -373,7 +421,15 @@ class UserViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
else
:
raise
Exception
(
'User not found'
)
# raise Exception('User not found')
error
=
'User not found'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
else
:
serialized
.
is_valid
(
raise_exception
=
True
)
...
...
@@ -416,5 +472,13 @@ class UserViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
else
:
raise
ParseError
(
'User not found'
)
# raise ParseError('User not found')
error
=
'User not found'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
return
Response
(
data
=
{
"detail"
:
"Success"
})
app/applicationlayer/management/application/views.py
View file @
cd808d42
...
...
@@ -13,6 +13,7 @@ from app.applicationlayer.utils import (
from
django_filters.rest_framework
import
DjangoFilterBackend
from
app.applicationlayer.management.application
import
serializer
from
app.applicationlayer.management.application.table_filters
import
ApplicationFilterSet
from
django.db
import
IntegrityError
class
ApplicationViewSet
(
viewsets
.
ModelViewSet
):
...
...
@@ -26,6 +27,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
search_fields
=
(
'name'
,
'code'
)
@
decorators
.
rms
.
ApplicationValidation
@
decorators
.
rms
.
application_crate
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
@@ -81,25 +83,32 @@ class ApplicationViewSet(viewsets.ModelViewSet):
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@
decorators
.
rms
.
ApplicationValidation
@
decorators
.
rms
.
application_crate
@
transaction
.
atomic
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
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
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
APPLICATION
.
value
,
old_instance
[
'id'
],
old_instance
,
new_instance
)
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
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
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
APPLICATION
.
value
,
old_instance
[
'id'
],
old_instance
,
new_instance
)
return
Response
(
serializer
.
data
)
return
Response
(
serializer
.
data
)
except
IntegrityError
as
e
:
return
Response
(
{
"message"
:
"Cannot delete or update this reocrd it has foreign key constraint to other tables"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
app/applicationlayer/management/batchupload/views.py
View file @
cd808d42
...
...
@@ -292,18 +292,20 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
return
self
.
get_paginated_response
(
message
)
@
transaction
.
atomic
#
@transaction.atomic
def
create
(
self
,
request
,
**
kwargs
):
# sp1 = transaction.savepoint() # nothing will save to db
csv_file
=
request
.
FILES
[
'file'
]
extension_file
=
str
(
csv_file
)
.
split
(
'.'
)[
1
]
if
extension_file
.
lower
()
!=
'csv'
:
return
Response
(
{
"message"
:
"Only csv extension file is allowed"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
df
=
pd
.
read_csv
(
csv_file
,
sep
=
','
,
skip_blank_lines
=
True
)
.
dropna
()
#
df.dropna()
df
=
pd
.
read_csv
(
csv_file
,
sep
=
','
,
skip_blank_lines
=
True
)
df
.
dropna
()
logged_user_type
=
request
.
user
.
user_type
logged_user_company
=
request
.
user
.
department
.
company
.
name
logged_user_department
=
request
.
user
.
department
.
name
...
...
@@ -340,7 +342,8 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
Q
(
company
=
user_company
)
)
if
not
request_department
:
# raise ParseError(company_error)
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
company_error
},
# {"message": str(e)},
...
...
@@ -349,6 +352,8 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
elif
request
.
user
.
user_type
==
enums_department
:
if
keys
[
'Department_Code'
]
!=
request
.
user
.
department
.
code
:
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
department_error
},
# {"message": str(e)},
...
...
@@ -429,10 +434,11 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
code
=
privilege_department_code
)
ccr
=
True
if
keys
[
'Create_CR'
]
.
lower
()
==
'yes'
else
False
crt
=
True
if
keys
[
'Create_Template'
]
.
lower
()
==
'yes'
else
False
view_all
=
True
if
keys
[
'View_All_CR'
]
.
lower
()
==
'yes'
else
False
approve_cr
=
True
if
keys
[
'Approve_CR'
]
.
lower
()
==
'yes'
else
False
ccr
=
True
if
str
(
keys
[
'Create_CR'
])
.
lower
()
==
'yes'
else
False
crt
=
True
if
str
(
keys
[
'Create_Template'
])
.
lower
()
==
'yes'
else
False
view_all
=
True
if
str
(
keys
[
'View_All_CR'
])
.
lower
()
==
'yes'
else
False
approve_cr
=
True
if
str
(
keys
[
'Approve_CR'
])
.
lower
()
==
'yes'
else
False
privilege_object
=
{
"id_number"
:
current_user
,
...
...
@@ -447,6 +453,8 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
AllowedCompany
.
objects
.
create
(
**
privilege_object
)
except
IntegrityError
as
e
:
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
f
"Duplicate user privilege at row {data + 2}"
},
# {"message": str(e)},
...
...
@@ -454,26 +462,32 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
)
except
ObjectDoesNotExist
as
e
:
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
f
"Department Does not Exist at Privilege row {data + 2}"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
IntegrityError
as
e
:
#
etl2.delete()
# transaction.s
et_rollback(True
)
etl2
.
delete
()
# transaction.s
avepoint_rollback(sp1
)
return
Response
(
{
"message"
:
f
"Record already exist at row {data + 2}"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
KeyError
as
e
:
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
f
"Missing column {e.args[0]}"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
ObjectDoesNotExist
as
e
:
etl2
.
delete
()
# transaction.savepoint_rollback(sp1)
return
Response
(
{
"message"
:
f
"Department Does not Exist at row {data + 2}"
},
status
=
status
.
HTTP_400_BAD_REQUEST
...
...
app/applicationlayer/utils.py
View file @
cd808d42
...
...
@@ -17,6 +17,17 @@ import json
REALTIMESERVER_IP
=
settings
.
REALTIMESERVER_IP
def
error_message
(
code
,
message
,
status
,
status_code
):
return
Response
(
{
"code"
:
code
,
"message"
:
message
,
"status"
:
status
},
status
=
status_code
)
def
model_to_dict
(
instance
):
try
:
mySerializer
=
copy
.
deepcopy
(
DynamicSerializer
)
...
...
@@ -37,7 +48,7 @@ class DynamicSerializer(serializers.ModelSerializer):
class
CustomPagination
(
PageNumberPagination
):
page_size
=
10
max_page_size
=
5
0
max_page_size
=
100
0
page_query_param
=
'page'
page_size_query_param
=
'page_size'
...
...
app/businesslayer/changerequest/change_request.py
View file @
cd808d42
...
...
@@ -832,3 +832,4 @@ def list_by_onbehalf_without_dept(user_id_number):
return
True
app/businesslayer/changerequest/change_request_template.py
View file @
cd808d42
...
...
@@ -20,6 +20,9 @@ from app.entities import enums, models
from
app.applicationlayer.utils
import
log_save
,
CustomPagination
from
app.applicationlayer.cms.template
import
serializers
import
itertools
from
operator
import
itemgetter
def
tmp_add_edit_delete
(
tmp_request_body
,
queryset
,
...
...
@@ -101,3 +104,90 @@ def tmp_add_edit_delete(tmp_request_body,
)
return
True
# Check if routing table has Vendor and Requestor
def
validation_existing_vendor_requestor
(
approvers
):
approvers_data
=
sorted
(
approvers
,
key
=
itemgetter
(
'level'
))[
-
2
:]
if
(
approvers_data
[
0
][
'delegation'
]
==
'DELEGATION-20191119-0000002'
and
approvers_data
[
1
][
'delegation'
]
==
'DELEGATION-20191119-0000001'
):
return
True
else
:
return
False
# Check if routing table has atleast 1 approver
def
validation_existing_approver
(
approvers
):
counter
=
0
for
approver
in
approvers
:
# count all delegation not equal to Requestor and Vendor
if
approver
[
'delegation'
]
not
in
[
'DELEGATION-20191119-0000002'
,
'DELEGATION-20191119-0000001'
]:
counter
=
counter
+
1
return
counter
return
counter
# Check if a user has multiple same level in routing table
def
validation_approver_same_level
(
approvers
):
data_list_appr
=
[]
for
approver
in
approvers
:
if
'user'
in
approver
and
'level'
in
approver
:
if
not
approver
[
'user'
]
is
None
:
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
# Check if poc is assigned to another delegation other than Vendor
def
validation_poc_vendor_only
(
poc
,
approvers
):
validate
=
False
for
approver
in
approvers
:
if
'user'
in
approver
and
'delegation'
in
approver
:
if
poc
==
approver
[
'user'
]:
if
not
approver
[
'delegation'
]
==
'DELEGATION-20191119-0000002'
:
validate
=
True
return
validate
# Check if level if Vendor delegation has same level with other delegation
def
validation_vendor_unique_level
(
approvers
):
validate
=
0
data_level
=
[]
for
approver
in
approvers
:
if
'delegation'
in
approver
:
if
approver
[
'delegation'
]
==
'DELEGATION-20191119-0000002'
:
data_level
.
append
(
approver
[
'level'
])
for
approver
in
approvers
:
if
'delegation'
in
approver
:
if
not
approver
[
'delegation'
]
is
None
:
if
approver
[
'level'
]
in
data_level
:
if
not
approver
[
'delegation'
]
==
'DELEGATION-20191119-0000002'
:
validate
=
approver
[
'level'
]
return
validate
app/entities/migrations/0002_auto_20200205_1707.py
0 → 100644
View file @
cd808d42
# Generated by Django 2.2 on 2020-02-05 17:07
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0001_initial'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequestformattachments'
,
name
=
'file_upload'
,
field
=
models
.
ForeignKey
(
default
=
1
,
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
related_name
=
'form_attachments'
,
to
=
'entities.MasterAttachment'
),
preserve_default
=
False
,
),
migrations
.
AlterField
(
model_name
=
'changerequesttemplateattachments'
,
name
=
'file_upload'
,
field
=
models
.
ForeignKey
(
default
=
1
,
on_delete
=
django
.
db
.
models
.
deletion
.
PROTECT
,
related_name
=
'template_attachments'
,
to
=
'entities.MasterAttachment'
),
preserve_default
=
False
,
),
]
app/entities/migrations/0003_auto_20200206_1422.py
0 → 100644
View file @
cd808d42
# Generated by Django 2.2 on 2020-02-06 14:22
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0002_auto_20200205_1707'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'changerequestformheader'
,
name
=
'company_desc'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformheader'
,
name
=
'department_desc'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformheader'
,
name
=
'requested_desc'
,
),
]
app/entities/models.py
View file @
cd808d42
...
...
@@ -705,9 +705,7 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
file_upload
=
models
.
ForeignKey
(
MasterAttachment
,
on_delete
=
models
.
PROTECT
,
related_name
=
'template_attachments'
,
blank
=
True
,
null
=
True
related_name
=
'template_attachments'
)
template_no
=
models
.
ForeignKey
(
ChangeRequestTemplateHeader
,
...
...
@@ -784,18 +782,6 @@ class ChangeRequestFormHeader(BaseHeader):
on_delete
=
models
.
PROTECT
,
to_field
=
'template_no'
)
status
=
models
.
CharField
(
max_length
=
50
)
company_desc
=
models
.
CharField
(
max_length
=
255
,
null
=
True
,
blank
=
True
)
department_desc
=
models
.
CharField
(
max_length
=
255
,
null
=
True
,
blank
=
True
)
requested_desc
=
models
.
CharField
(
max_length
=
255
,
null
=
True
,
blank
=
True
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
)
requested_to_target_date
=
models
.
DateTimeField
(
...
...
@@ -817,6 +803,18 @@ class ChangeRequestFormHeader(BaseHeader):
self
.
form_code
=
code
self
.
save
()
# company_desc = models.CharField(
# max_length=255,
# null=True,
# blank=True)
# department_desc = models.CharField(
# max_length=255,
# null=True,
# blank=True)
# requested_desc = models.CharField(
# max_length=255,
# null=True,
# blank=True)
class
ChangeRequestFormApprovers
(
BaseApprover
):
code
=
models
.
CharField
(
...
...
@@ -941,9 +939,7 @@ class ChangeRequestFormAttachments(BaseAttachment):
file_upload
=
models
.
ForeignKey
(
MasterAttachment
,
on_delete
=
models
.
PROTECT
,
related_name
=
'form_attachments'
,
blank
=
True
,
null
=
True
related_name
=
'form_attachments'
)
class
Meta
:
...
...
@@ -1197,7 +1193,7 @@ class OverdueTrigger(models.Model):
class
Meta
:
db_table
=
'trigger_overdue'
# comment
"""
**********************
*** AMS TABLES ***
...
...
app/helper/decorators.py
View file @
cd808d42
This diff is collapsed.
Click to expand it.
config/settings/base.py
View file @
cd808d42
...
...
@@ -13,11 +13,6 @@ https://docs.djangoproject.com/en/2.2/ref/settings/
import
os
import
configparser
config
=
configparser
.
ConfigParser
()
config_file
=
os
.
path
.
join
(
'./'
,
'env.ini'
)
config
.
read
(
config_file
)
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
...
...
@@ -31,10 +26,10 @@ BASE_DIR = os.path.dirname(
SECRET_KEY
=
'w!dkk7gc*dk#4!6ow3s1wc32
%
_yp$=osgybm=n0vw6k1j^sqo&'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG
=
True
ALLOWED_HOSTS
=
[]
DEBUG
=
False
ALLOWED_HOSTS
=
[
'*'
]
CORS_ORIGIN_ALLOW_ALL
=
True
# Application definition
...
...
@@ -52,7 +47,6 @@ INSTALLED_APPS = [
'app.accesslayer'
,
'app.entities'
,
'channels'
,
]
MIDDLEWARE
=
[
...
...
@@ -134,7 +128,7 @@ STATIC_ROOT = os.path.join(BASE_DIR, "static")
MEDIA_ROOT
=
os
.
path
.
join
(
BASE_DIR
,
'media'
)
MEDIA_URL
=
'/media/'
# CORS_ORIGIN_ALLOW_ALL = True
REST_SESSION_LOGIN
=
True
...
...
@@ -174,26 +168,63 @@ EMAIL_HOST_PASSWORD = 'ApK1dtH2qpT/oMl9MEauFvyN9XZDQ1fjzd8TumIs71NG'
EMAIL_USE_SSL
=
False
EMAIL_USE_TLS
=
True
EMAIL_BACKEND
=
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_DEFAULT_SENDER
=
'rms.noreply@oneberrysystem.com'
EMAIL_DEFAULT_SENDER
=
'noreply@rms-hub.com'
###########################################################################
# config
#########################################################################
# EMAIL_TEMPLATES_ROOT = os.path.join(BASE_DIR, "app/helper/email_service/templates")
config
=
configparser
.
ConfigParser
()
config_file
=
os
.
path
.
join
(
'./'
,
'env.ini'
)
config
.
read
(
config_file
)
CHANNEL_LAYERS
=
{
'default'
:
{
'BACKEND'
:
'channels_redis.core.RedisChannelLayer'
,
'CONFIG'
:
{
"hosts"
:
[(
'172.17.0.1'
,
6379
)],
# "hosts": [('127.0.0.1', 6379)],
},
},
}
DATABASES
=
{
'default'
:
{
'ENGINE'
:
config
[
'SETTINGS'
][
'DATABASE_ENGINE'
],
'NAME'
:
config
[
'SETTINGS'
][
'DATABASE_NAME'
],
'USER'
:
config
[
'SETTINGS'
][
'DATABASE_USER'
],
'PASSWORD'
:
config
[
'SETTINGS'
][
'DATABASE_PASSWORD'
],
'HOST'
:
config
[
'SETTINGS'
][
'DATABASE_HOST'
],
'PORT'
:
config
[
'SETTINGS'
][
'DATABASE_PORT'
],
}
}
# EMAIL_HOST = config['DEV']['EMAIL_HOST']
# EMAIL_PORT = config['DEV']['EMAIL_PORT']
# EMAIL_HOST_USER = config['DEV']['EMAIL_PORT']
# EMAIL_HOST_PASSWORD = config['DEV']['EMAIL_HOST_PASSWORD']
# EMAIL_USE_SSL = config['DEV']['EMAIL_USE_SSL']
# EMAIL_USE_TLS = config['DEV']['EMAIL_USE_TLS']
# EMAIL_BACKEND = config['DEV']['EMAIL_BACKEND']
# EMAIL_DEFAULT_SENDER = config['DEV']['EMAIL_DEFAULT_SENDER']
# ****************
# PROGRAM SETTINGS
# ****************
SESSION_TIMEOUT
=
config
[
'SETTINGS'
][
'SESSION_TIMEOUT'
]
FRONT_END_URL
=
config
[
'SETTINGS'
][
'FRONT_END_URL'
]
AUTH_ACCESSS_TOKEN_TIMEOUT
=
config
[
'SETTINGS'
][
'AUTH_ACCESSS_TOKEN_TIMEOUT'
]
USER_DEFAULT_PASSWORD
=
config
[
'SETTINGS'
][
'USER_DEFAULT_PASSWORD'
]
REALTIMESERVER_IP
=
config
[
'SETTINGS'
][
'REALTIMESERVER_IP'
]
# Notification Messages
APPROVER_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'APPROVER_MESSAGE'
]
REQUESTOR_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'REQUESTOR_MESSAGE'
]
REQUESTOR_REJECT_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'REQUESTOR_REJECT_MESSAGE'
]
VENDOR_ACKNOWLEDGE_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'VENDOR_ACKNOWLEDGE_MESSAGE'
]
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'REQUESTOR_ACKNOWLEDGE_MESSAGE'
]
REQUESTOR_COMPLETION_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'REQUESTOR_COMPLETION_MESSAGE'
]
VENDOR_ACCEPTANCE_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'VENDOR_ACCEPTANCE_MESSAGE'
]
VENDOR_REJECT_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'VENDOR_REJECT_MESSAGE'
]
REVISED_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'REVISED_MESSAGE'
]
CANCEL_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'CANCEL_MESSAGE'
]
APPROVER_REJECT_MESSAGE
=
config
[
'NOTIFICATION_EMAIL'
][
'APPROVER_REJECT_MESSAGE'
]
#ADMIN PROFILE
CATCH_EMAIL
=
config
[
'SETTINGS'
][
'CATCH_EMAIL'
]
CR_FRONT_LINK
=
config
[
'SETTINGS'
][
'CR_LINK'
]
# EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com'
# EMAIL_PORT = 587
# EMAIL_HOST_USER = 'AKIAYA4XVX5XFZHRQATF'
# EMAIL_HOST_PASSWORD = 'BIOG15v+WTbTiBtPKkn+LCjg0UHqO3nLFQezh4pi6g3y'
# EMAIL_USE_SSL = False
# EMAIL_USE_TLS = True
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_DEFAULT_SENDER = 'noreply@rms-hub.com'
config/settings/dev.py
View file @
cd808d42
...
...
@@ -16,9 +16,6 @@ CHANNEL_LAYERS = {
'CONFIG'
:
{
"hosts"
:
[(
'172.17.0.1'
,
6379
)],
# "hosts": [('127.0.0.1', 6379)],
# "hosts": [('13.251.192.208', 6379)]
# http://13.251.192.208:7020/
},
},
}
...
...
env.new_template.ini
0 → 100644
View file @
cd808d42
[SETTINGS]
BATCH_UPLOAD_FORMAT_FILENAME
=
instruction.pdf
SSL
=
1
DATABASE_ENGINE
=
django.db.backends.mysql
DATABASE_NAME
=
rms_db
DATABASE_USER
=
red_database
DATABASE_PASSWORD
=
password123
DATABASE_HOST
=
10.0.75.1
DATABASE_PORT
=
3306
SESSION_TIMEOUT
=
30
FRONT_END_URL
=
http://devweb.rmsv2.oneberrysystem.com
AUTH_ACCESSS_TOKEN_TIMEOUT
=
3600
USER_DEFAULT_PASSWORD
=
password
CATCH_EMAIL
=
gladys@tirsolutions.com
CR_LINK
=
http://localhost:8000/cms/change-request/form/view
REALTIMESERVER_IP
=
127.0.0.1:8000
[NOTIFICATION_EMAIL]
APPROVER_MESSAGE
=
has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED
REQUESTOR_MESSAGE
=
has APPROVED the change request;RMS-CRAPPROVED
REQUESTOR_REJECT_MESSAGE
=
has REJECTED the change request;RMS-CRREJECTED
VENDOR_ACKNOWLEDGE_MESSAGE
=
has sent you an ACKNOWLEDGEMENT REQUEST for change request;RMS-ACTIONREQUIRED-VENDOR
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
has ACKNOWLEDGED the change request;RMS-CRACKNOWLEDGE
REQUESTOR_COMPLETION_MESSAGE
=
has COMPLETED the change request;RMS-CRCOMPLETED
VENDOR_ACCEPTANCE_MESSAGE
=
has ACCEPTED the change request;RMS-CRACCEPTED
VENDOR_REJECT_MESSAGE
=
has REJECTED the change request;RMS-CRREJECTED-VENDOR
REVISED_MESSAGE
=
has REJECTED the change request for your revision;RMS-CRREVISED
CANCEL_MESSAGE
=
has CANCELLED the change request;RMS-CRCANCELLED-USERTRIGGER
APPROVER_REJECT_MESSAGE
=
has REJECTED the change request for your approval;RMS-CRREJECTED-APPROVER
manage.py
View file @
cd808d42
...
...
@@ -10,7 +10,7 @@ config.read(config_file)
if
__name__
==
"__main__"
:
os
.
environ
.
setdefault
(
'DJANGO_SETTINGS_MODULE'
,
config
[
'SETTINGS'
][
'CONFIG'
]
)
'config.settings.base'
)
# os.system('start chrome.exe --kiosk --kiosk-printing
# http://localhost:8000/')
try
:
...
...
requirements/export docker image.txt
View file @
cd808d42
...
...
@@ -18,5 +18,6 @@ docker run -d --restart=always -p 3001:3000 sit_rms_webv2 npm start
Clear Cache REDIS
docker exec -it container-name redis-cli FLUSHALL
config set stop-writes-on-bgsave-error no
docker run -p 6379:6379 -d redis:2.8
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