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
d365f4ce
Commit
d365f4ce
authored
Sep 10, 2019
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update 2
parent
b24114d4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
113 additions
and
131 deletions
+113
-131
app/applicationlayer/management/changerequest/views.py
app/applicationlayer/management/changerequest/views.py
+73
-104
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+15
-25
app/entities/migrations/0004_auto_20190910_1221.py
app/entities/migrations/0004_auto_20190910_1221.py
+18
-0
app/entities/models.py
app/entities/models.py
+7
-2
No files found.
app/applicationlayer/management/changerequest/views.py
View file @
d365f4ce
...
...
@@ -22,6 +22,7 @@ from rest_framework.exceptions import ValidationError
from
django.db
import
transaction
,
IntegrityError
,
connection
from
app.applicationlayer.utils
import
QuerySetHelper
from
app.businesslayer.changerequest
import
change_request
from
app.applicationlayer.management.changerequest.utils_cr
import
number_generator
APPROVER_MESSAGE
=
settings
.
APPROVER_MESSAGE
...
...
@@ -43,13 +44,9 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplatesViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
@@ -328,10 +325,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
url_path
=
'dashboard'
,
name
=
"Dashboard Summary"
)
def
dashboard_view
(
self
,
request
):
id_number
=
self
.
request
.
user
# id_number = 'Acct-20190813-0000138'
print
(
id_number
)
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
...
...
@@ -395,7 +391,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
overdue
=
overdue_filtered
.
count
()
message
=
{
'account_no'
:
id_number
,
'account_no'
:
id_number
.
code
,
'pending'
:
pending
,
'approved'
:
approved
,
'rejected'
:
rejected
,
...
...
@@ -410,8 +406,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
'message'
:
'Dashboard Summary'
}
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
@
action
(
detail
=
False
,
methods
=
[
'get'
],
...
...
@@ -421,8 +416,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number
=
self
.
request
.
user
# id_number = 'Acct-20190531-0000002'
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
self
.
queryset
=
change_request
.
filter_status
(
...
...
@@ -455,8 +448,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number
=
self
.
request
.
user
# id_number = 'Acct-20190531-0000002'
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
self
.
queryset
=
change_request
.
filter_overdue
(
self
.
queryset
)
...
...
@@ -485,11 +476,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number
=
self
.
request
.
user
# id_number = 'Acct-20190813-0000137'
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
self
.
queryset
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
)
self
.
queryset
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
.
code
)
self
.
queryset
=
change_request
.
filter_base
(
self
.
queryset
,
...
...
@@ -502,49 +491,16 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
request
.
query_params
.
get
(
'form_type'
),
)
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Rejected'
)
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Closed'
)
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Cancelled'
)
self
.
queryset
=
self
.
queryset
.
filter
(
~
Q
(
status
=
'Rejected'
)
|
~
Q
(
status
=
'Closed'
)
|
~
Q
(
status
=
'Cancelled'
))
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
# instance = self.get_object()
form_code
=
self
.
kwargs
[
'form_code'
]
instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
)
.
first
()
if
instance
.
status
.
lower
()
==
'draft'
:
models
.
ChangeRequestFormApprovers
.
objects
(
form_code
=
form_code
)
.
delete
()
models
.
ChangeRequestFormDetails
.
objects
(
form_code
=
form_code
)
.
delete
()
models
.
ChangeRequestFormStakeHolders
.
objects
(
form_code
=
form_code
)
.
delete
()
models
.
ChangeRequestFormAttachments
.
objects
(
form_code
=
form_code
)
.
delete
()
models
.
ChangeRequestFormTasks
.
objects
(
form_code
=
form_code
)
.
delete
()
models
.
ChangeRequestFormHeader
.
objects
(
form_code
=
form_code
)
.
delete
()
# self.perform_destroy(instance)
return
Response
({
"message"
:
"Change Request Deleted"
},
status
=
status
.
HTTP_200_OK
)
else
:
message
=
{
"message"
:
"Cant delete this record, it has an ongoing tansaction"
}
return
Response
(
message
,
status
=
status
.
HTTP_204_NO_CONTENT
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
,
...
...
@@ -593,58 +549,58 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
pagination_class
=
paginators
.
SimplePageNumberPagination
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
ObjectId
=
request
.
data
.
get
(
'id'
)
sent
=
False
if
'form_status'
in
request
.
data
:
#
def create(self, request, *args, **kwargs):
#
ObjectId = request.data.get('id')
#
sent = False
#
if 'form_status' in request.data:
# for email
if
str
(
request
.
data
[
'level'
])
==
'1'
and
request
.
data
[
'form_status'
]
.
lower
()
==
'pending'
:
user
=
request
.
data
[
'user'
]
form_code
=
request
.
data
[
'form_code'
]
delegation
=
request
.
data
[
'delegation'
]
# initial_email(user, form_code, delegation)
# EMAIL CODE FOR APPROVER
notification_msg
=
APPROVER_MESSAGE
.
split
(
';'
)[
0
]
email_code
=
APPROVER_MESSAGE
.
split
(
';'
)[
1
]
next_appover_email
(
user
,
form_code
,
delegation
,
notification_msg
,
'initial'
,
email_code
)
request
.
data
[
'date_sent'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
request
.
data
[
'created'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
#correct
sent
=
True
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
#
# for email
#
if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
#
user = request.data['user']
#
form_code = request.data['form_code']
#
delegation = request.data['delegation']
#
# initial_email(user, form_code, delegation)
#
# EMAIL CODE FOR APPROVER
#
notification_msg = APPROVER_MESSAGE.split(';')[0]
#
email_code = APPROVER_MESSAGE.split(';')[1]
#
next_appover_email(
#
user, form_code, delegation,
#
notification_msg, 'initial', email_code
#
)
#
request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
#
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
#
sent = True
#
serializer = self.get_serializer(data=request.data)
#
serializer.is_valid(raise_exception=True)
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
id
=
ObjectId
,
deleted_at
=
None
)
.
first
()
if
dbExisting
:
dbExisting
.
deleted_at
=
datetime
.
now
()
dbExisting
.
save
()
# x = self.perform_create(serializer)
serializer
.
id
=
None
x
=
serializer
.
save
()
if
sent
==
True
:
x
.
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
x
.
created
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
#correct
x
.
save
()
headers
=
self
.
get_success_headers
(
serializer
.
data
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
#
if ObjectId:
#
dbExisting = models.ChangeRequestFormApprovers.objects.filter(
#
id=ObjectId,
#
deleted_at=None).first()
#
if dbExisting:
#
dbExisting.deleted_at = datetime.now()
#
dbExisting.save()
#
# x = self.perform_create(serializer)
#
serializer.id = None
#
x = serializer.save()
#
if sent == True:
#
x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
#
x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
#
x.save()
#
headers = self.get_success_headers(serializer.data)
#
return Response(
#
serializer.data,
#
status=status.HTTP_201_CREATED,
#
headers=headers
#
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
False
,
...
...
@@ -1007,9 +963,22 @@ class ChangeRequestFormPost(APIView):
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
()
template_no
=
serializer
.
data
[
'template_no'
]
tmp_counter
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
template_no
=
template_no
)
.
count
()
tmp_counter
=
tmp_counter
+
1
CR_Prefix
=
serializer
.
data
[
'requested_to_template_id'
]
generate_tmp
=
number_generator
(
CR_Prefix
,
tmp_counter
)
frm_id
=
serializer
.
data
[
'form_code'
]
print
(
frm_id
)
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
frm_id
)
.
update
(
requested_to_template_id
=
generate_tmp
)
# create template approvers
for
frm_approver
in
frm_approvers
:
...
...
app/businesslayer/changerequest/change_request.py
View file @
d365f4ce
...
...
@@ -179,28 +179,12 @@ def filter_overdue(base_queryset):
overdue
=
[]
for
query
in
return_queryset
:
try
:
if
query
.
requested_to_target_date
:
requested_to_target_date
=
datetime
.
strptime
(
query
.
requested_to_target_date
[:
-
1
],
"
%
Y-
%
m-
%
dT
%
H:
%
M:
%
S.
%
f"
)
if
(
requested_to_target_date
<
now
):
overdue
.
append
(
query
.
form_code
)
except
ValueError
:
#convert now
if
query
.
requested_to_target_date
:
requested_to_target_date
=
datetime
.
strptime
(
query
.
requested_to_target_date
[:
-
1
],
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
if
(
requested_to_target_date
<
now
):
overdue
.
append
(
query
.
form_code
)
return_queryset
=
return_queryset
.
filter
(
form_code__in
=
overdue
)
if
(
query
.
requested_to_target_date
<
now
):
overdue
.
append
(
query
.
form_code
)
return_queryset
return_queryset
=
return_queryset
.
filter
(
form_code__in
=
overdue
)
except
Exception
as
e
:
pass
...
...
@@ -236,19 +220,25 @@ def filter_awaiting(base_queryset,
try
:
awaiting_included
=
[]
for
query
in
return_queryset
:
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
query
.
form_code
)
&
Q
(
deleted_at
=
None
)
&
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
)
.
order_by
(
'level'
)
if
current_level
:
first_level
=
current_level
.
first
()
if
current_level
[
0
][
'user'
]
==
user_id_number
:
awaiting_included
.
append
(
query
.
form_code
)
first_user
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
code
=
first_level
)
.
values
(
'user'
)
print
(
first_user
.
user
)
# if x == user_id_number:
# awaiting_included.append(query.form_code)
return_queryset
=
return_queryset
.
filter
(
form_code__in
=
awaiting_included
)
...
...
app/entities/migrations/0004_auto_20190910_1221.py
0 → 100644
View file @
d365f4ce
# Generated by Django 2.2 on 2019-09-10 12:21
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0003_auto_20190910_0956'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequestformheader'
,
name
=
'requested_to_template_id'
,
field
=
models
.
CharField
(
max_length
=
255
),
),
]
app/entities/models.py
View file @
d365f4ce
...
...
@@ -354,8 +354,7 @@ class BaseHeader(models.Model):
to_field
=
'code'
)
requested_to_template_name
=
models
.
CharField
(
max_length
=
255
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
,
unique
=
True
)
requested_to_objective
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
...
...
@@ -487,6 +486,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
template_no
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
,
unique
=
True
)
created_by_user
=
models
.
ForeignKey
(
User
,
...
...
@@ -666,6 +669,8 @@ class ChangeRequestFormHeader(BaseHeader):
max_length
=
255
,
null
=
True
,
blank
=
True
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
)
class
Meta
:
db_table
=
'change_request_form_headers'
...
...
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