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
4695d626
Commit
4695d626
authored
Sep 13, 2019
by
John Red Medrano
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pulled cms
parent
4e294247
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
4687 additions
and
1731 deletions
+4687
-1731
app/applicationlayer/cms/form/serializers.py
app/applicationlayer/cms/form/serializers.py
+121
-144
app/applicationlayer/cms/form/views.py
app/applicationlayer/cms/form/views.py
+949
-1086
app/applicationlayer/cms/template/serializers.py
app/applicationlayer/cms/template/serializers.py
+66
-0
app/applicationlayer/cms/template/views.py
app/applicationlayer/cms/template/views.py
+340
-0
app/applicationlayer/cms/user_privilege/serializers.py
app/applicationlayer/cms/user_privilege/serializers.py
+0
-0
app/applicationlayer/cms/user_privilege/views.py
app/applicationlayer/cms/user_privilege/views.py
+0
-0
app/applicationlayer/cms/utils_cr.py
app/applicationlayer/cms/utils_cr.py
+449
-438
app/applicationlayer/urls_cms.py
app/applicationlayer/urls_cms.py
+14
-13
app/businesslayer/changerequest/change_request.py
app/businesslayer/changerequest/change_request.py
+20
-30
app/entities/migrations/0007_auto_20190911_1102.py
app/entities/migrations/0007_auto_20190911_1102.py
+18
-0
app/entities/migrations/0008_auto_20190911_1715.py
app/entities/migrations/0008_auto_20190911_1715.py
+18
-0
app/entities/migrations/0009_auto_20190911_1845.py
app/entities/migrations/0009_auto_20190911_1845.py
+63
-0
app/entities/migrations/0010_auto_20190913_1143.py
app/entities/migrations/0010_auto_20190913_1143.py
+33
-0
app/entities/models.py
app/entities/models.py
+44
-20
requirements/RMSv2.postman_collection_091319
requirements/RMSv2.postman_collection_091319
+2551
-0
requirements/local.txt
requirements/local.txt
+1
-0
No files found.
app/applicationlayer/
management/changerequest
/serializers.py
→
app/applicationlayer/
cms/form
/serializers.py
View file @
4695d626
from
app.entities
import
models
from
app.entities
import
models
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
django.db.models
import
Q
from
django.db.models
import
Q
from
app.applicationlayer.management.changerequest.utils_cr
import
logged_user
from
app.applicationlayer.cms.utils_cr
import
logged_user
from
drf_writable_nested
import
WritableNestedModelSerializer
class
ChangeRequestTemplatesSerializer
(
serializers
.
ModelSerializer
class
ChangeRequestFormApproversSerializer
(
):
serializers
.
ModelSerializer
class
Meta
:
):
model
=
models
.
ChangeRequestTemplateHeader
# def to_representation(self, instance):
fields
=
'__all__'
# ret = super().to_representation(instance)
read_only_fields
=
[
'created'
,
'deleted_at'
,
'template_no'
]
# try:
# user = instance.user
class
ChangeRequestTemplateApproversSerializer
(
# user_details = get_account_details(user)
serializers
.
ModelSerializer
# name = user_details['name']
):
# group = user_details['groups'][0]['name']
class
Meta
:
# company = user_details['groups'][0]['company__name']
model
=
models
.
ChangeRequestTemplateApprovers
fields
=
'__all__'
# ret['name'] = name
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
# ret['department'] = group
# ret['company'] = company
# return ret
class
ChangeRequestTemplateStakeHoldersSerializer
(
serializers
.
ModelSerializer
# except Exception as e:
):
# ret['name'] = "none"
class
Meta
:
# ret['department'] = "none"
model
=
models
.
ChangeRequestTemplateStakeHolders
# ret['company'] = "none"
fields
=
'__all__'
# return ret
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
class
Meta
:
model
=
models
.
ChangeRequestFormApprovers
class
ChangeRequestTemplateAttachmentsSerializer
(
fields
=
'__all__'
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateAttachments
class
ChangeRequestFormStakeHoldersSerializer
(
fields
=
'__all__'
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
):
class
Meta
:
model
=
models
.
ChangeRequestFormStakeHolders
class
ChangeRequestTemplateDetailsSerializer
(
fields
=
'__all__'
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateDetails
class
ChangeRequestFormAttachmentsSerializer
(
fields
=
'__all__'
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
):
class
Meta
:
model
=
models
.
ChangeRequestFormAttachments
class
ChangeRequestFormHeaderSerializer
(
fields
=
'__all__'
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
class
ChangeRequestFormDetailsSerializer
(
try
:
serializers
.
ModelSerializer
# id_number = self.context.get('request').META.get('user')
):
class
Meta
:
id_number
=
"USER-20190909-0000005"
model
=
models
.
ChangeRequestFormDetails
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
fields
=
'__all__'
Q
(
form_code
=
ret
[
'form_code'
])
&
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
Q
(
deleted_at
=
None
)
&
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
)
.
order_by
(
'level'
)
class
ChangeRequestFormHeaderSerializer
(
WritableNestedModelSerializer
if
current_level
.
first
()[
'user'
]
==
id_number
:
):
if
instance
.
status
.
lower
()
==
'rejected'
:
frm_approvers
=
ChangeRequestFormApproversSerializer
(
approver
=
'No'
many
=
True
,
required
=
False
)
elif
instance
.
status
.
lower
()
==
'cancelled'
:
frm_stakes
=
ChangeRequestFormStakeHoldersSerializer
(
approver
=
'No'
many
=
True
,
required
=
False
)
elif
instance
.
status
.
lower
()
==
'closed'
:
frm_attachments
=
ChangeRequestFormAttachmentsSerializer
(
approver
=
'No'
many
=
True
,
required
=
False
)
else
:
frm_details
=
ChangeRequestFormDetailsSerializer
(
approver
=
'Yes'
many
=
True
,
required
=
False
)
else
:
approver
=
'No'
def
to_representation
(
self
,
instance
):
ret
[
'action'
]
=
approver
ret
=
super
()
.
to_representation
(
instance
)
return
ret
try
:
except
Exception
as
e
:
# id_number = self.context.get('request').META.get('user')
ret
[
'action'
]
=
"No"
user
=
self
.
context
[
'request'
]
.
user
return
ret
print
(
user
)
class
Meta
:
# id_number = "USER-20190909-0000005"
model
=
models
.
ChangeRequestFormHeader
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
fields
=
'__all__'
Q
(
form_code
=
ret
[
'form_code'
])
&
read_only_fields
=
[
'created'
,
'deleted_at'
,
'form_code'
]
Q
(
archived_at
=
None
)
&
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
)
.
order_by
(
'level'
)
class
ChangeRequestFormApproversSerializer
(
serializers
.
ModelSerializer
if
current_level
.
first
()[
'user'
]
==
id_number
:
):
if
instance
.
status
.
lower
()
==
'rejected'
:
# def to_representation(self, instance):
approver
=
'No'
# ret = super().to_representation(instance)
elif
instance
.
status
.
lower
()
==
'cancelled'
:
# try:
approver
=
'No'
# user = instance.user
elif
instance
.
status
.
lower
()
==
'closed'
:
approver
=
'No'
# user_details = get_account_details(user)
else
:
# name = user_details['name']
approver
=
'Yes'
# group = user_details['groups'][0]['name']
else
:
# company = user_details['groups'][0]['company__name']
approver
=
'No'
ret
[
'action'
]
=
approver
# ret['name'] = name
return
ret
# ret['department'] = group
except
Exception
as
e
:
# ret['company'] = company
ret
[
'action'
]
=
"No"
# return ret
return
ret
# except Exception as e:
class
Meta
:
# ret['name'] = "none"
model
=
models
.
ChangeRequestFormHeader
# ret['department'] = "none"
# fields = '__all__'
# ret['company'] = "none"
fields
=
(
'form_code'
,
'requested_to_template_name'
,
'requested_to_objective'
,
# return ret
'requested_to_target_date'
,
'requested_to_priority'
,
'description'
,
'created'
,
'cancel_date'
,
'status'
,
class
Meta
:
'company_desc'
,
'department_desc'
,
'requested_desc'
,
model
=
models
.
ChangeRequestFormApprovers
'requested_to_template_id'
,
'requested_to_company'
,
fields
=
'__all__'
'requested_to_department'
,
'requested_to_user'
,
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
'requested_by_user'
,
'requested_by_department'
,
'template_no'
,
'frm_approvers'
,
'frm_stakes'
,
'frm_attachments'
,
'frm_details'
)
class
ChangeRequestFormStakeHoldersSerializer
(
serializers
.
ModelSerializer
read_only_fields
=
[
'created'
,
'archived_at'
,
'form_code'
]
):
class
Meta
:
model
=
models
.
ChangeRequestFormStakeHolders
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
class
ChangeRequestFormAttachmentsSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestFormAttachments
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
class
ChangeRequestFormDetailsSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestFormDetails
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'deleted_at'
,
'code'
]
app/applicationlayer/
management/changerequest
/views.py
→
app/applicationlayer/
cms/form
/views.py
View file @
4695d626
from
django.shortcuts
import
render
from
django.shortcuts
import
render
from
rest_framework
import
viewsets
as
meviewsets
from
rest_framework
import
viewsets
as
meviewsets
from
rest_framework.views
import
APIView
from
rest_framework.views
import
APIView
from
app.applicationlayer.management.changerequest
import
serializers
from
app.applicationlayer.cms.form
import
serializers
from
app.entities
import
models
from
app.entities
import
models
from
app.applicationlayer
import
paginators
from
app.applicationlayer
import
paginators
from
datetime
import
datetime
from
datetime
import
datetime
from
datetime
import
timedelta
from
datetime
import
timedelta
from
rest_framework.response
import
Response
from
rest_framework.response
import
Response
from
rest_framework
import
status
,
views
from
rest_framework
import
status
,
views
from
rest_framework.decorators
import
action
from
rest_framework.decorators
import
action
from
django.http
import
Http404
from
django.http
import
Http404
from
django.db.models
import
Q
from
django.db.models
import
Q
import
requests
import
requests
from
django.conf
import
settings
from
django.conf
import
settings
from
rest_framework.exceptions
import
ValidationError
from
rest_framework.exceptions
import
ValidationError
from
django.db
import
transaction
,
IntegrityError
,
connection
from
django.db
import
transaction
,
IntegrityError
,
connection
from
app.applicationlayer.utils
import
QuerySetHelper
from
app.applicationlayer.utils
import
QuerySetHelper
from
app.businesslayer.changerequest
import
change_request
from
app.businesslayer.changerequest
import
change_request
from
app.applicationlayer.cms.utils_cr
import
number_generator
from
app.entities
import
enums
APPROVER_MESSAGE
=
settings
.
APPROVER_MESSAGE
from
django.forms.models
import
model_to_dict
REQUESTOR_MESSAGE
=
settings
.
REQUESTOR_MESSAGE
REQUESTOR_REJECT_MESSAGE
=
settings
.
REQUESTOR_REJECT_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE
=
settings
.
VENDOR_ACKNOWLEDGE_MESSAGE
APPROVER_MESSAGE
=
settings
.
APPROVER_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
settings
.
REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_MESSAGE
=
settings
.
REQUESTOR_MESSAGE
REQUESTOR_COMPLETION_MESSAGE
=
settings
.
REQUESTOR_COMPLETION_MESSAGE
REQUESTOR_REJECT_MESSAGE
=
settings
.
REQUESTOR_REJECT_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE
=
settings
.
VENDOR_ACCEPTANCE_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE
=
settings
.
VENDOR_ACKNOWLEDGE_MESSAGE
VENDOR_REJECT_MESSAGE
=
settings
.
VENDOR_REJECT_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
settings
.
REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_COMPLETION_MESSAGE
=
settings
.
REQUESTOR_COMPLETION_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE
=
settings
.
VENDOR_ACCEPTANCE_MESSAGE
class
ChangeRequestTemplatesViewset
(
meviewsets
.
ModelViewSet
):
VENDOR_REJECT_MESSAGE
=
settings
.
VENDOR_REJECT_MESSAGE
queryset
=
models
.
ChangeRequestTemplateHeader
.
objects
.
all
()
lookup_field
=
'template_no'
# Change Request Form Views
serializer_class
=
serializers
.
ChangeRequestTemplatesSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
class
ChangeRequestFormsViewset
(
meviewsets
.
ModelViewSet
):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
serializer_class
=
serializers
.
ChangeRequestFormHeaderSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
self
.
queryset
=
self
.
queryset
.
filter
(
queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
all
()
deleted_at
=
None
lookup_field
=
'form_code'
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
id_number
=
self
.
request
.
user
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
# print(id_number.code)
return
super
(
ChangeRequestTemplatesViewset
,
self
)
.
list
(
request
)
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
change_request
.
filter_base
(
instance
=
self
.
queryset
.
filter
(
self
.
queryset
,
deleted_at
=
None
,
request
.
query_params
.
get
(
'company_requested_to'
),
template_no
=
str
(
self
.
kwargs
.
get
(
'template_no'
))
request
.
query_params
.
get
(
'department_requested_to'
),
)
.
first
()
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
serializer
=
self
.
get_serializer
(
instance
)
request
.
query_params
.
get
(
'date_required_from'
),
return
Response
(
serializer
.
data
)
request
.
query_params
.
get
(
'date_required_to'
),
request
.
query_params
.
get
(
'form_type'
),
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
)
try
:
template_no
=
self
.
kwargs
[
'template_no'
]
if
self
.
request
.
query_params
.
get
(
'search'
):
instance
=
models
.
ChangeRequestTemplateHeader
.
objects
.
filter
(
search_key
=
self
.
request
.
query_params
.
get
(
'search'
)
Q
(
template_no
=
template_no
)
&
Q
(
deleted_at
=
None
)
self
.
queryset
=
self
.
queryset
.
filter
(
)
.
update
(
deleted_at
=
datetime
.
now
())
Q
(
requested_to_template_name__icontains
=
search_key
.
lower
())
|
return
Response
({
"message"
:
"Deleted"
},
status
=
status
.
HTTP_200_OK
)
Q
(
requested_to_template_id__icontains
=
search_key
.
lower
())
except
Exception
as
e
:
)
return
Response
(
e
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
kwargs
[
'partial'
]
=
True
template_no
=
self
.
kwargs
[
'template_no'
]
@
action
(
detail
=
False
,
instance
=
models
.
ChangeRequestTemplateHeader
.
objects
.
filter
(
methods
=
[
'get'
],
template_no
=
template_no
url_path
=
'dashboard'
,
)
.
order_by
(
'-deleted_at'
)
name
=
"Dashboard Summary"
)
instance
.
update
(
deleted_at
=
None
)
def
dashboard_view
(
self
,
request
):
message
=
"Archived Change Request restored"
id_number
=
self
.
request
.
user
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
print
(
id_number
)
except
Exception
as
e
:
message
=
{
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
self
.
queryset
=
change_request
.
filter_base
(
}
self
.
queryset
,
return
Response
(
message
,
request
.
query_params
.
get
(
'company_requested_to'
),
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
request
.
query_params
.
get
(
'department_requested_to'
),
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
class
ChangeRequestTemplateApproversViewset
(
meviewsets
.
ModelViewSet
):
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
queryset
=
models
.
ChangeRequestTemplateApprovers
.
objects
.
all
()
request
.
query_params
.
get
(
'form_type'
),
serializer_class
=
serializers
.
ChangeRequestTemplateApproversSerializer
)
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
pending
=
self
.
queryset
.
filter
(
status__iexact
=
'Pending'
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
)
.
count
()
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
approved
=
self
.
queryset
.
filter
(
status__iexact
=
'Approved'
return
super
(
ChangeRequestTemplateApproversViewset
,
self
)
.
list
(
request
)
)
.
count
()
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
rejected
=
self
.
queryset
.
filter
(
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
status__iexact
=
'Rejected'
serializer
=
self
.
get_serializer
(
instance
)
)
.
count
()
return
Response
(
serializer
.
data
)
cancelled
=
self
.
queryset
.
filter
(
status__iexact
=
'Cancelled'
class
ChangeRequestTemplateAttachmentsViewset
(
meviewsets
.
ModelViewSet
):
)
.
count
()
queryset
=
models
.
ChangeRequestTemplateAttachments
.
objects
.
all
()
completed
=
self
.
queryset
.
filter
(
serializer_class
=
serializers
.
ChangeRequestTemplateAttachmentsSerializer
status__iexact
=
'Closed'
#Completed
pagination_class
=
paginators
.
SimplePageNumberPagination
)
.
count
()
lookup_field
=
"code"
high
=
self
.
queryset
.
filter
(
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
requested_to_priority
=
'High'
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
)
.
count
()
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
normal
=
self
.
queryset
.
filter
(
return
super
(
requested_to_priority
=
'Normal'
ChangeRequestTemplateAttachmentsViewset
,
self
)
.
count
()
)
.
list
(
request
)
awaiting_filtered
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
)
class
ChangeRequestTemplateStakeHoldersViewset
(
meviewsets
.
ModelViewSet
):
# awaiting = awaiting_filtered.count()
awaiting
=
0
queryset
=
models
.
ChangeRequestTemplateStakeHolders
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestTemplateStakeHoldersSerializer
for
awaits
in
awaiting_filtered
:
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
if
awaits
.
status
.
lower
()
==
'rejected'
:
print
(
"rejected"
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
elif
awaits
.
status
.
lower
()
==
'closed'
:
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
print
(
"closed"
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
elif
awaits
.
status
.
lower
()
==
'cancelled'
:
print
(
"cancelled"
)
return
super
(
ChangeRequestTemplateStakeHoldersViewset
,
self
)
.
list
(
request
)
else
:
awaiting
=
awaiting
+
1
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
overdue_filtered
=
change_request
.
filter_overdue
(
self
.
queryset
)
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
overdue
=
overdue_filtered
.
count
()
message
=
{
class
ChangeRequestTemplateDetailsViewset
(
meviewsets
.
ModelViewSet
):
'account_no'
:
id_number
.
code
,
'pending'
:
pending
,
queryset
=
models
.
ChangeRequestTemplateDetails
.
objects
.
all
()
'approved'
:
approved
,
serializer_class
=
serializers
.
ChangeRequestTemplateDetailsSerializer
'rejected'
:
rejected
,
pagination_class
=
paginators
.
SimplePageNumberPagination
'cancelled'
:
cancelled
,
lookup_field
=
"code"
'completed'
:
completed
,
'high'
:
high
,
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
'normal'
:
normal
,
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
'awaiting'
:
awaiting
,
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
'overdue'
:
overdue
,
'code'
:
200
,
return
super
(
ChangeRequestTemplateDetailsViewset
,
self
)
.
list
(
request
)
'status'
:
'success'
,
'message'
:
'Dashboard Summary'
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
}
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
return
Response
(
serializer
.
data
)
@
action
(
detail
=
False
,
methods
=
[
'get'
],
class
ChangeRequestTemplatePost
(
APIView
):
url_path
=
'status'
,
name
=
"Dashboard Summary Status"
)
@
transaction
.
atomic
()
def
list_by_status_view
(
self
,
request
):
def
post
(
self
,
request
):
template_header
=
request
.
data
id_number
=
self
.
request
.
user
try
:
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
data_list_approver
=
[]
data_list_stake
=
[]
self
.
queryset
=
change_request
.
filter_status
(
data_list_attach
=
[]
self
.
queryset
,
data_list_detail
=
[]
request
.
query_params
.
get
(
'status'
)
)
template_header_data
=
{
'requested_to_template_name'
:
template_header
[
'requested_to_template_name'
],
self
.
queryset
=
change_request
.
filter_base
(
'requested_to_template_id'
:
template_header
[
'requested_to_template_id'
],
self
.
queryset
,
'requested_to_objective'
:
template_header
[
'requested_to_objective'
],
request
.
query_params
.
get
(
'company_requested_to'
),
'requested_to_target_date'
:
template_header
[
'requested_to_target_date'
],
request
.
query_params
.
get
(
'department_requested_to'
),
'requested_to_priority'
:
template_header
[
'requested_to_priority'
],
request
.
query_params
.
get
(
'date_modified_from'
),
'description'
:
template_header
[
'description'
],
request
.
query_params
.
get
(
'date_modified_to'
),
'created_by_department'
:
template_header
[
'created_by_department'
],
request
.
query_params
.
get
(
'date_required_from'
),
'created_by_user'
:
template_header
[
'created_by_user'
],
request
.
query_params
.
get
(
'date_required_to'
),
'requested_to_company'
:
template_header
[
'requested_to_company'
],
request
.
query_params
.
get
(
'form_type'
),
'requested_to_department'
:
template_header
[
'requested_to_department'
],
)
'requested_to_user'
:
template_header
[
'requested_to_user'
]
}
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
tmp_approvers
=
template_header
[
'tmp_approvers'
]
# self.queryset = QuerySetHelper.Filter(self)
tmp_stakes
=
template_header
[
'tmp_stakes'
]
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
tmp_attachments
=
template_header
[
'tmp_attachments'
]
tmp_details
=
template_header
[
'tmp_details'
]
@
action
(
detail
=
False
,
sp1
=
transaction
.
savepoint
()
# nothing will save to db
methods
=
[
'get'
],
url_path
=
'overdue'
,
serializer
=
serializers
.
ChangeRequestTemplatesSerializer
(
name
=
"Dashboard Summary Overdue"
)
data
=
template_header_data
)
def
list_by_overdue_view
(
self
,
request
):
if
serializer
.
is_valid
(
raise_exception
=
True
):
id_number
=
self
.
request
.
user
serializer
.
save
()
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
tmp_id
=
serializer
.
data
[
'template_no'
]
self
.
queryset
=
change_request
.
filter_overdue
(
self
.
queryset
)
# create template approvers
self
.
queryset
=
change_request
.
filter_base
(
for
tmp_approver
in
tmp_approvers
:
self
.
queryset
,
tmp_approver
[
'template_no'
]
=
tmp_id
request
.
query_params
.
get
(
'company_requested_to'
),
data_list_approver
.
append
(
tmp_approver
)
request
.
query_params
.
get
(
'department_requested_to'
),
request
.
query_params
.
get
(
'date_modified_from'
),
serializerApprover
=
serializers
.
ChangeRequestTemplateApproversSerializer
(
request
.
query_params
.
get
(
'date_modified_to'
),
data
=
data_list_approver
,
many
=
True
)
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
request
.
query_params
.
get
(
'form_type'
),
serializerApprover
.
save
()
)
# create template stakes
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
for
tmp_stake
in
tmp_stakes
:
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
tmp_stake
[
'template_no'
]
=
tmp_id
data_list_stake
.
append
(
tmp_stake
)
@
action
(
detail
=
False
,
serializerStake
=
serializers
.
ChangeRequestTemplateStakeHoldersSerializer
(
methods
=
[
'get'
],
data
=
data_list_stake
,
many
=
True
)
url_path
=
'awaiting'
,
name
=
"Dashboard Summary Awaiting"
)
if
serializerStake
.
is_valid
(
raise_exception
=
True
):
def
list_by_awaiting_view
(
self
,
request
):
serializerStake
.
save
()
id_number
=
self
.
request
.
user
# create template attachments
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
for
tmp_attachment
in
tmp_attachments
:
tmp_attachment
[
'template_no'
]
=
tmp_id
self
.
queryset
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
.
code
)
data_list_attach
.
append
(
tmp_attachment
)
self
.
queryset
=
change_request
.
filter_base
(
serializerAttach
=
serializers
.
ChangeRequestTemplateAttachmentsSerializer
(
self
.
queryset
,
data
=
data_list_attach
,
many
=
True
)
request
.
query_params
.
get
(
'company_requested_to'
),
request
.
query_params
.
get
(
'department_requested_to'
),
if
serializerAttach
.
is_valid
(
raise_exception
=
True
):
request
.
query_params
.
get
(
'date_modified_from'
),
serializerAttach
.
save
()
request
.
query_params
.
get
(
'date_modified_to'
),
request
.
query_params
.
get
(
'date_required_from'
),
# create template details
request
.
query_params
.
get
(
'date_required_to'
),
request
.
query_params
.
get
(
'form_type'
),
for
tmp_detail
in
tmp_details
:
)
tmp_detail
[
'template_no'
]
=
tmp_id
data_list_detail
.
append
(
tmp_detail
)
self
.
queryset
=
self
.
queryset
.
filter
(
~
Q
(
status
=
'Rejected'
)
|
serializerDetail
=
serializers
.
ChangeRequestTemplateDetailsSerializer
(
~
Q
(
status
=
'Closed'
)
|
data
=
data_list_detail
,
many
=
True
)
~
Q
(
status
=
'Cancelled'
))
if
serializerDetail
.
is_valid
(
raise_exception
=
True
):
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
serializerDetail
.
save
()
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
message
=
{
'code'
:
201
,
'status'
:
'success'
,
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
'message'
:
'Template Details successfully saved!'
,
instance
=
self
.
queryset
.
filter
(
'results'
:
serializer
.
data
archived_at
=
None
,
}
form_code
=
str
(
self
.
kwargs
.
get
(
'form_code'
))
)
.
first
()
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
except
ValidationError
as
e
:
transaction
.
savepoint_rollback
(
sp1
)
@
action
(
message
=
{
methods
=
[
'PATCH'
],
detail
=
True
,
'code'
:
400
,
url_path
=
're_route'
,
url_name
=
're_route'
'status'
:
'failed'
,
)
'message'
:
str
(
e
),
def
re_route
(
self
,
request
,
*
args
,
**
kwargs
):
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
form_code
=
kwargs
[
'form_code'
]
print
(
form_code
)
except
Exception
as
e
:
transaction
.
savepoint_rollback
(
sp1
)
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
message
=
{
form_code
=
form_code
)
.
update
(
status
=
'Pending'
)
'code'
:
500
,
'status'
:
'failed'
,
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
'message'
:
'Request was not able to process'
+
str
(
e
),
form_code
=
form_code
)
.
update
(
action
=
None
,
remarks
=
None
,
}
date_sent
=
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
return
Response
(
"Change request form successfully re routed"
,
status
=
status
.
HTTP_200_OK
# Change Request Form Views
)
class
ChangeRequestFormsViewset
(
meviewsets
.
ModelViewSet
):
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
serializer_class
=
serializers
.
ChangeRequestFormHeaderSerializer
url_path
=
're_submit'
,
url_name
=
're_submit'
pagination_class
=
paginators
.
SimplePageNumberPagination
)
queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
all
()
def
re_submit
(
self
,
request
,
*
args
,
**
kwargs
):
lookup_field
=
'form_code'
# get form code to be re created
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
form_code
=
kwargs
[
'form_code'
]
id_number
=
self
.
request
.
user
frm_id
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
# print(id_number.code)
form_code
=
form_code
)
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
obj
=
models
.
ChangeRequestFormHeader
.
objects
.
get
(
pk
=
frm_id
.
pk
)
self
.
queryset
=
change_request
.
filter_base
(
obj
.
pk
=
None
self
.
queryset
,
obj
.
form_code
=
"Temp-Form-Code"
request
.
query_params
.
get
(
'company_requested_to'
),
obj
.
old_form_code
=
form_code
request
.
query_params
.
get
(
'department_requested_to'
),
obj
.
status
=
'Draft'
request
.
query_params
.
get
(
'date_modified_from'
),
obj
.
save
()
request
.
query_params
.
get
(
'date_modified_to'
),
request
.
query_params
.
get
(
'date_required_from'
),
new_frmheader_code
=
number_generator
(
request
.
query_params
.
get
(
'date_required_to'
),
enums
.
GenerateCode
.
FORM
.
value
,
obj
.
id
)
request
.
query_params
.
get
(
'form_type'
),
)
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
pk
=
obj
.
id
)
.
update
(
form_code
=
new_frmheader_code
)
if
self
.
request
.
query_params
.
get
(
'search'
):
search_key
=
self
.
request
.
query_params
.
get
(
'search'
)
# re create approvers
approvers
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
self
.
queryset
=
self
.
queryset
.
filter
(
form_code
=
form_code
)
Q
(
requested_to_template_name__icontains
=
search_key
.
lower
())
|
Q
(
requested_to_template_id__icontains
=
search_key
.
lower
())
counter
=
0
)
for
approver
in
approvers
:
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
to_delete
=
approver
.
pk
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
counter
=
counter
+
1
approver
.
pk
=
None
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
approver
.
code
=
counter
approver
.
remarks
=
None
@
action
(
detail
=
False
,
approver
.
action
=
None
methods
=
[
'get'
],
approver
.
date_sent
=
None
url_path
=
'dashboard'
,
approver
.
save
()
name
=
"Dashboard Summary"
)
def
dashboard_view
(
self
,
request
):
new_frmapp_code
=
number_generator
(
enums
.
GenerateCode
.
FORM_APPROVER
.
value
,
approver
.
id
)
id_number
=
self
.
request
.
user
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
# id_number = 'Acct-20190813-0000138'
pk
=
approver
.
id
)
.
update
(
code
=
new_frmapp_code
,
form_code
=
new_frmheader_code
)
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
# delete old data
self
.
queryset
=
change_request
.
filter_base
(
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
self
.
queryset
,
pk
=
to_delete
)
.
delete
()
request
.
query_params
.
get
(
'company_requested_to'
),
request
.
query_params
.
get
(
'department_requested_to'
),
# re create stakeholders
request
.
query_params
.
get
(
'date_modified_from'
),
stakes
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
request
.
query_params
.
get
(
'date_modified_to'
),
form_code
=
form_code
)
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
counter
=
0
request
.
query_params
.
get
(
'form_type'
),
)
for
stake
in
stakes
:
to_delete
=
stake
.
pk
pending
=
self
.
queryset
.
filter
(
counter
=
counter
+
1
status__iexact
=
'Pending'
stake
.
pk
=
None
)
.
count
()
stake
.
code
=
counter
stake
.
save
()
approved
=
self
.
queryset
.
filter
(
status__iexact
=
'Approved'
new_frmstake_code
=
number_generator
(
)
.
count
()
enums
.
GenerateCode
.
FORM_STAKE
.
value
,
stake
.
id
)
rejected
=
self
.
queryset
.
filter
(
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
status__iexact
=
'Rejected'
pk
=
stake
.
id
)
.
update
(
code
=
new_frmstake_code
,
)
.
count
()
form_code
=
new_frmheader_code
)
cancelled
=
self
.
queryset
.
filter
(
# delete old data
status__iexact
=
'Cancelled'
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
)
.
count
()
pk
=
to_delete
)
.
delete
()
completed
=
self
.
queryset
.
filter
(
status__iexact
=
'Closed'
#Completed
# re create details
)
.
count
()
details
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
form_code
=
form_code
)
high
=
self
.
queryset
.
filter
(
requested_to_priority
=
'High'
counter
=
0
)
.
count
()
for
detail
in
details
:
normal
=
self
.
queryset
.
filter
(
to_delete
=
detail
.
pk
requested_to_priority
=
'Normal'
counter
=
counter
+
1
)
.
count
()
detail
.
pk
=
None
detail
.
code
=
counter
awaiting_filtered
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
)
detail
.
save
()
# awaiting = awaiting_filtered.count()
new_frmdetail_code
=
number_generator
(
awaiting
=
0
enums
.
GenerateCode
.
FORM_DETAIL
.
value
,
detail
.
id
)
for
awaits
in
awaiting_filtered
:
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
pk
=
detail
.
id
)
.
update
(
code
=
new_frmdetail_code
,
if
awaits
.
status
.
lower
()
==
'rejected'
:
form_code
=
new_frmheader_code
)
print
(
"rejected"
)
elif
awaits
.
status
.
lower
()
==
'closed'
:
# delete old data
print
(
"closed"
)
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
elif
awaits
.
status
.
lower
()
==
'cancelled'
:
pk
=
to_delete
)
.
delete
()
print
(
"cancelled"
)
else
:
# re create attachments
awaiting
=
awaiting
+
1
attachments
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
form_code
=
form_code
)
overdue_filtered
=
change_request
.
filter_overdue
(
self
.
queryset
)
counter
=
0
overdue
=
overdue_filtered
.
count
()
for
attachment
in
attachments
:
message
=
{
to_delete
=
attachment
.
pk
'account_no'
:
id_number
,
counter
=
counter
+
1
'pending'
:
pending
,
attachment
.
pk
=
None
'approved'
:
approved
,
attachment
.
code
=
counter
'rejected'
:
rejected
,
attachment
.
save
()
'cancelled'
:
cancelled
,
'completed'
:
completed
,
new_frmattach_code
=
number_generator
(
'high'
:
high
,
enums
.
GenerateCode
.
FORM_ATTACH
.
value
,
attachment
.
id
)
'normal'
:
normal
,
'awaiting'
:
awaiting
,
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
'overdue'
:
overdue
,
pk
=
attachment
.
id
)
.
update
(
code
=
new_frmattach_code
,
'code'
:
200
,
form_code
=
new_frmheader_code
)
'status'
:
'success'
,
'message'
:
'Dashboard Summary'
# delete old data
}
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
pk
=
to_delete
)
.
delete
()
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
# delete old data form header
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
@
action
(
detail
=
False
,
form_code
=
form_code
)
.
delete
()
methods
=
[
'get'
],
url_path
=
'status'
,
return
Response
(
name
=
"Dashboard Summary Status"
)
"Change request form successfully resubmitted"
,
def
list_by_status_view
(
self
,
request
):
status
=
status
.
HTTP_200_OK
)
id_number
=
self
.
request
.
user
# actions
# id_number = 'Acct-20190531-0000002'
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
url_path
=
'actions'
,
url_name
=
'actions'
)
self
.
queryset
=
change_request
.
filter_status
(
def
actions
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
,
request
.
query_params
.
get
(
'status'
)
form_code
=
kwargs
[
'form_code'
]
)
print
(
form_code
)
self
.
queryset
=
change_request
.
filter_base
(
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
self
.
queryset
,
form_code
=
form_code
)
.
update
(
status
=
'Pending'
)
request
.
query_params
.
get
(
'company_requested_to'
),
request
.
query_params
.
get
(
'department_requested_to'
),
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
request
.
query_params
.
get
(
'date_modified_from'
),
form_code
=
form_code
)
.
update
(
action
=
None
,
remarks
=
None
,
request
.
query_params
.
get
(
'date_modified_to'
),
date_sent
=
None
)
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
return
Response
(
request
.
query_params
.
get
(
'form_type'
),
"Change request form successfully re routed"
,
)
status
=
status
.
HTTP_200_OK
)
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
# self.queryset = QuerySetHelper.Filter(self)
class
ChangeRequestFormApproversViewset
(
meviewsets
.
ModelViewSet
):
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
queryset
=
models
.
ChangeRequestFormApprovers
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestFormApproversSerializer
@
action
(
detail
=
False
,
pagination_class
=
paginators
.
SimplePageNumberPagination
methods
=
[
'get'
],
lookup_field
=
'code'
url_path
=
'overdue'
,
name
=
"Dashboard Summary Overdue"
)
# def create(self, request, *args, **kwargs):
def
list_by_overdue_view
(
self
,
request
):
# ObjectId = request.data.get('id')
# sent = False
id_number
=
self
.
request
.
user
# if 'form_status' in request.data:
# id_number = 'Acct-20190531-0000002'
# # for email
# if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
# user = request.data['user']
# form_code = request.data['form_code']
self
.
queryset
=
change_request
.
filter_overdue
(
self
.
queryset
)
# delegation = request.data['delegation']
# # initial_email(user, form_code, delegation)
self
.
queryset
=
change_request
.
filter_base
(
self
.
queryset
,
# # EMAIL CODE FOR APPROVER
request
.
query_params
.
get
(
'company_requested_to'
),
# notification_msg = APPROVER_MESSAGE.split(';')[0]
request
.
query_params
.
get
(
'department_requested_to'
),
# email_code = APPROVER_MESSAGE.split(';')[1]
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
# next_appover_email(
request
.
query_params
.
get
(
'date_required_from'
),
# user, form_code, delegation,
request
.
query_params
.
get
(
'date_required_to'
),
# notification_msg, 'initial', email_code
request
.
query_params
.
get
(
'form_type'
),
# )
)
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
# request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
# sent = True
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
# serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
@
action
(
detail
=
False
,
methods
=
[
'get'
],
# if ObjectId:
url_path
=
'awaiting'
,
# dbExisting = models.ChangeRequestFormApprovers.objects.filter(
name
=
"Dashboard Summary Awaiting"
)
# id=ObjectId,
def
list_by_awaiting_view
(
self
,
request
):
# archived_at=None).first()
id_number
=
self
.
request
.
user
# if dbExisting:
# dbExisting.archived_at = datetime.now()
# id_number = 'Acct-20190813-0000137'
# dbExisting.save()
self
.
queryset
=
change_request
.
list_by_user
(
id_number
.
code
)
# # x = self.perform_create(serializer)
# serializer.id = None
self
.
queryset
=
change_request
.
filter_awaiting
(
self
.
queryset
,
id_number
)
# x = serializer.save()
self
.
queryset
=
change_request
.
filter_base
(
# if sent == True:
self
.
queryset
,
# x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request
.
query_params
.
get
(
'company_requested_to'
),
# x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
request
.
query_params
.
get
(
'department_requested_to'
),
# x.save()
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
# headers = self.get_success_headers(serializer.data)
request
.
query_params
.
get
(
'date_required_from'
),
# return Response(
request
.
query_params
.
get
(
'date_required_to'
),
# serializer.data,
request
.
query_params
.
get
(
'form_type'
),
# status=status.HTTP_201_CREATED,
)
# headers=headers
# )
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Rejected'
)
@
action
(
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Closed'
)
methods
=
[
'PATCH'
],
detail
=
False
,
url_path
=
'approved'
,
url_name
=
'approved'
self
.
queryset
=
self
.
queryset
.
filter
(
status__ne
=
'Cancelled'
)
)
def
approved
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
objectid
=
request
.
data
[
'id'
]
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestFormsViewset
,
self
)
.
list
(
request
)
instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
id
=
objectid
)
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
# instance = self.get_object()
instance
=
instance
.
first
()
form_code
=
self
.
kwargs
[
'form_code'
]
current_remarks
=
instance
.
remarks
instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code
=
form_code
instance
.
update
(
)
.
first
()
set__archived_at
=
datetime
.
utcnow
()
if
instance
.
status
.
lower
()
==
'draft'
:
)
models
.
ChangeRequestFormApprovers
.
objects
(
form_code
=
form_code
request
.
data
[
'created'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
# correct
)
.
delete
()
models
.
ChangeRequestFormDetails
.
objects
(
print
(
"hello"
)
form_code
=
form_code
print
(
request
.
data
[
'remarks'
])
)
.
delete
()
models
.
ChangeRequestFormStakeHolders
.
objects
(
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
form_code
=
form_code
serializer
.
is_valid
(
raise_exception
=
True
)
)
.
delete
()
self
.
perform_create
(
serializer
)
models
.
ChangeRequestFormAttachments
.
objects
(
form_code
=
form_code
#------------
)
.
delete
()
models
.
ChangeRequestFormTasks
.
objects
(
id
=
serializer
.
data
[
'id'
]
form_code
=
form_code
)
.
delete
()
current_user
=
request
.
data
[
'user'
]
models
.
ChangeRequestFormHeader
.
objects
(
form_code
=
form_code
)
.
delete
()
form_code
=
request
.
data
[
'form_code'
]
# self.perform_destroy(instance)
delegation
=
request
.
data
[
'delegation'
]
return
Response
({
"message"
:
"Change Request Deleted"
},
status
=
status
.
HTTP_200_OK
)
action
=
request
.
data
[
'action'
]
else
:
level
=
request
.
data
[
'level'
]
message
=
{
"message"
:
"Cant delete this record, it has an ongoing tansaction"
}
next_level
=
int
(
request
.
data
[
'level'
])
+
1
return
Response
(
remarks
=
request
.
data
[
'remarks'
]
message
,
status
=
status
.
HTTP_204_NO_CONTENT
next_approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
)
level
=
str
(
next_level
),
form_code
=
form_code
,
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
archived_at
=
None
instance
=
self
.
queryset
.
filter
(
)
deleted_at
=
None
,
form_code
=
str
(
self
.
kwargs
.
get
(
'form_code'
))
if
action
.
lower
()
==
'approved'
:
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
return
Response
(
serializer
.
data
)
Q
(
archived_at
=
None
)
&
Q
(
level
=
str
(
next_level
))
)
.
update
(
@
action
(
detail
=
True
,
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
methods
=
[
'get'
],
)
url_path
=
'history'
,
name
=
"CR History"
)
# EMAIL CODE FOR REQUESTOR
def
list_cr_history
(
self
,
request
,
form_code
=
None
,
**
kwargs
):
requestor_notification_msg
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
1
]
form_code
=
self
.
kwargs
[
'form_code'
]
form_code_list
=
[]
# EMAIL CODE FOR APPROVER
form_code_list
.
append
(
form_code
)
notification_msg
=
APPROVER_MESSAGE
.
split
(
';'
)[
0
]
email_code
=
APPROVER_MESSAGE
.
split
(
';'
)[
1
]
for
frmitem
in
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
old_form_code__ne
=
None
)
.
order_by
(
'created'
):
send_mail_requestor
(
if
frmitem
.
form_code
==
form_code
:
current_user
,
form_code
,
delegation
,
form_code_list
.
append
(
frmitem
.
old_form_code
)
requestor_notification_msg
,
action
,
requestor_email_code
,
form_code
=
frmitem
.
old_form_code
remarks
,
level
)
# remove duplicates
mylist
=
list
(
dict
.
fromkeys
(
form_code_list
))
for
n_approver
in
next_approver
:
print
(
mylist
)
print
(
n_approver
.
user
)
queryset
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
if
n_approver
.
delegation
.
lower
()
==
'vendor/implementor'
:
(
Q
(
action__ne
=
None
)
&
Q
(
action__ne
=
''
)),
notification_msg
=
VENDOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
form_code__in
=
mylist
)
.
order_by
(
'created'
)
email_code
=
VENDOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
1
]
self
.
serializer_class
=
serializers
.
ChangeRequestFormApproversSerializer
next_appover_email
(
n_approver
.
user
,
form_code
,
delegation
,
page
=
self
.
paginate_queryset
(
queryset
)
notification_msg
,
action
,
email_code
if
page
is
not
None
:
)
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
elif
action
.
lower
()
==
'rejected'
:
return
self
.
get_paginated_response
(
serializer
.
data
)
if
delegation
.
lower
()
==
'requestor'
:
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
class
ChangeRequestFormApproversViewset
(
meviewsets
.
ModelViewSet
):
email_code
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
queryset
=
models
.
ChangeRequestFormApprovers
.
objects
.
all
()
send_mail_vendor
(
serializer_class
=
serializers
.
ChangeRequestFormApproversSerializer
current_user
,
form_code
,
delegation
,
pagination_class
=
paginators
.
SimplePageNumberPagination
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
)
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
ObjectId
=
request
.
data
.
get
(
'id'
)
else
:
sent
=
False
# EMAIL CODE FOR REQUESTOR
if
'form_status'
in
request
.
data
:
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
# for email
if
str
(
request
.
data
[
'level'
])
==
'1'
and
request
.
data
[
'form_status'
]
.
lower
()
==
'pending'
:
send_mail_requestor
(
user
=
request
.
data
[
'user'
]
current_user
,
form_code
,
delegation
,
form_code
=
request
.
data
[
'form_code'
]
requestor_notification_msg
,
action
,
requestor_email_code
,
delegation
=
request
.
data
[
'delegation'
]
remarks
,
level
# initial_email(user, form_code, delegation)
)
# EMAIL CODE FOR APPROVER
elif
action
.
lower
()
==
'completed'
:
notification_msg
=
APPROVER_MESSAGE
.
split
(
';'
)[
0
]
email_code
=
APPROVER_MESSAGE
.
split
(
';'
)[
1
]
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
archived_at
=
None
)
&
Q
(
level
=
str
(
next_level
))
next_appover_email
(
)
.
update
(
user
,
form_code
,
delegation
,
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
notification_msg
,
'initial'
,
email_code
)
)
# EMAIL CODE FOR REQUESTOR
request
.
data
[
'date_sent'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
requestor_notification_msg
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
0
]
request
.
data
[
'created'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
#correct
requestor_email_code
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
1
]
sent
=
True
send_mail_requestor
(
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
current_user
,
form_code
,
delegation
,
serializer
.
is_valid
(
raise_exception
=
True
)
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
if
ObjectId
:
)
dbExisting
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
id
=
ObjectId
,
elif
action
.
lower
()
==
'acknowledged'
:
deleted_at
=
None
)
.
first
()
# models.ChangeRequestFormApprovers.objects.filter(
if
dbExisting
:
# level=str(next_level)
dbExisting
.
deleted_at
=
datetime
.
now
()
# ).update(
dbExisting
.
save
()
# date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# )
# x = self.perform_create(serializer)
serializer
.
id
=
None
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
x
=
serializer
.
save
()
requestor_email_code
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
1
]
if
sent
==
True
:
x
.
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
send_mail_requestor
(
x
.
created
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
#correct
current_user
,
form_code
,
delegation
,
x
.
save
()
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
headers
=
self
.
get_success_headers
(
serializer
.
data
)
)
return
Response
(
serializer
.
data
,
elif
action
.
lower
()
==
'accepted'
:
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
# EMAIL CODE FOR VENDOR
)
requestor_notification_msg
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
1
]
@
action
(
methods
=
[
'PATCH'
],
detail
=
False
,
send_mail_vendor
(
url_path
=
'approved'
,
url_name
=
'approved'
current_user
,
form_code
,
delegation
,
)
requestor_notification_msg
,
action
,
requestor_email_code
,
def
approved
(
self
,
request
,
*
args
,
**
kwargs
):
remarks
,
level
objectid
=
request
.
data
[
'id'
]
)
instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
# elif action.lower() == 'cancelled':
id
=
objectid
)
# action_cancelled(self, request, *args, **kwargs)
# .update(
# set__deleted_at=datetime.utcnow()
headers
=
self
.
get_success_headers
(
serializer
.
data
)
# )
return
Response
(
instance
=
instance
.
first
()
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
current_remarks
=
instance
.
remarks
)
print
(
current_remarks
)
#------------
instance
.
update
(
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
set__deleted_at
=
datetime
.
utcnow
()
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
return
super
(
ChangeRequestFormApproversViewset
,
self
)
.
list
(
request
)
request
.
data
[
'created'
]
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
# correct
# request.data['remarks'] = current_remarks
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
print
(
"hello"
)
serializer
=
self
.
get_serializer
(
instance
)
print
(
request
.
data
[
'remarks'
])
return
Response
(
serializer
.
data
)
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
class
ChangeRequestFormAttachmentsViewset
(
meviewsets
.
ModelViewSet
):
self
.
perform_create
(
serializer
)
queryset
=
models
.
ChangeRequestFormAttachments
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestFormAttachmentsSerializer
#------------
pagination_class
=
paginators
.
SimplePageNumberPagination
id
=
serializer
.
data
[
'id'
]
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
current_user
=
request
.
data
[
'user'
]
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
form_code
=
request
.
data
[
'form_code'
]
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
delegation
=
request
.
data
[
'delegation'
]
return
super
(
action
=
request
.
data
[
'action'
]
ChangeRequestFormAttachmentsViewset
,
self
level
=
request
.
data
[
'level'
]
)
.
list
(
request
)
next_level
=
int
(
request
.
data
[
'level'
])
+
1
remarks
=
request
.
data
[
'remarks'
]
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
attachment_no
=
request
.
data
.
get
(
'attachment_no'
)
next_approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
ObjectId
=
request
.
data
.
get
(
'id'
)
level
=
str
(
next_level
),
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
form_code
=
form_code
,
serializer
.
is_valid
(
raise_exception
=
True
)
deleted_at
=
None
)
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
if
action
.
lower
()
==
'approved'
:
id
=
ObjectId
,
archived_at
=
None
)
.
first
()
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
deleted_at
=
None
)
&
Q
(
level
=
str
(
next_level
))
if
dbExisting
:
)
.
update
(
dbExisting
.
archived_at
=
datetime
.
now
()
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
dbExisting
.
save
()
)
self
.
perform_create
(
serializer
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
0
]
if
not
attachment_no
:
requestor_email_code
=
REQUESTOR_MESSAGE
.
split
(
';'
)[
1
]
id
=
serializer
.
data
[
'id'
]
db_counter
=
models
.
ChangeRequestFormAttachments
.
objects
.
all
()
.
count
()
# EMAIL CODE FOR APPROVER
db_counter
=
db_counter
+
1
notification_msg
=
APPROVER_MESSAGE
.
split
(
';'
)[
0
]
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
id
=
id
)
.
update
(
email_code
=
APPROVER_MESSAGE
.
split
(
';'
)[
1
]
set__attachment_no
=
number_generator
(
"ATCH"
,
db_counter
send_mail_requestor
(
)
current_user
,
form_code
,
delegation
,
)
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
headers
=
self
.
get_success_headers
(
serializer
.
data
)
)
return
Response
(
serializer
.
data
,
for
n_approver
in
next_approver
:
status
=
status
.
HTTP_201_CREATED
,
print
(
n_approver
.
user
)
headers
=
headers
)
if
n_approver
.
delegation
.
lower
()
==
'vendor/implementor'
:
notification_msg
=
VENDOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
email_code
=
VENDOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
1
]
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
next_appover_email
(
return
Response
(
serializer
.
data
)
n_approver
.
user
,
form_code
,
delegation
,
notification_msg
,
action
,
email_code
)
class
ChangeRequestFormStakeHoldersViewset
(
meviewsets
.
ModelViewSet
):
elif
action
.
lower
()
==
'rejected'
:
queryset
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestFormStakeHoldersSerializer
if
delegation
.
lower
()
==
'requestor'
:
pagination_class
=
paginators
.
SimplePageNumberPagination
notification_msg
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
email_code
=
VENDOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
send_mail_vendor
(
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
current_user
,
form_code
,
delegation
,
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
requestor_notification_msg
,
action
,
requestor_email_code
,
return
super
(
ChangeRequestFormStakeHoldersViewset
,
self
)
.
list
(
request
)
remarks
,
level
)
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
ObjectId
=
request
.
data
.
get
(
'id'
)
else
:
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
# EMAIL CODE FOR REQUESTOR
serializer
.
is_valid
(
raise_exception
=
True
)
requestor_notification_msg
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_REJECT_MESSAGE
.
split
(
';'
)[
1
]
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
send_mail_requestor
(
id
=
ObjectId
,
current_user
,
form_code
,
delegation
,
archived_at
=
None
)
.
first
()
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
if
dbExisting
:
)
dbExisting
.
archived_at
=
datetime
.
now
()
dbExisting
.
save
()
elif
action
.
lower
()
==
'completed'
:
self
.
perform_create
(
serializer
)
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
deleted_at
=
None
)
&
Q
(
level
=
str
(
next_level
))
headers
=
self
.
get_success_headers
(
serializer
.
data
)
)
.
update
(
return
Response
(
date_sent
=
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d,
%
H:
%
M:
%
S'
)
serializer
.
data
,
)
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
# EMAIL CODE FOR REQUESTOR
)
requestor_notification_msg
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_COMPLETION_MESSAGE
.
split
(
';'
)[
1
]
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
send_mail_requestor
(
serializer
=
self
.
get_serializer
(
instance
)
current_user
,
form_code
,
delegation
,
return
Response
(
serializer
.
data
)
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
)
class
ChangeRequestFormDetailsViewset
(
meviewsets
.
ModelViewSet
):
elif
action
.
lower
()
==
'acknowledged'
:
queryset
=
models
.
ChangeRequestFormDetails
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestFormDetailsSerializer
# models.ChangeRequestFormApprovers.objects.filter(
pagination_class
=
paginators
.
SimplePageNumberPagination
# level=str(next_level)
# ).update(
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
# date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
# )
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
# EMAIL CODE FOR REQUESTOR
return
super
(
ChangeRequestFormDetailsViewset
,
self
)
.
list
(
request
)
requestor_notification_msg
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
0
]
requestor_email_code
=
REQUESTOR_ACKNOWLEDGE_MESSAGE
.
split
(
';'
)[
1
]
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
ObjectId
=
request
.
data
.
get
(
'id'
)
send_mail_requestor
(
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
current_user
,
form_code
,
delegation
,
serializer
.
is_valid
(
raise_exception
=
True
)
requestor_notification_msg
,
action
,
requestor_email_code
,
remarks
,
level
if
ObjectId
:
)
dbExisting
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
id
=
ObjectId
,
elif
action
.
lower
()
==
'accepted'
:
archived_at
=
None
)
.
first
()
# EMAIL CODE FOR VENDOR
if
dbExisting
:
requestor_notification_msg
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
0
]
dbExisting
.
archived_at
=
datetime
.
now
()
requestor_email_code
=
VENDOR_ACCEPTANCE_MESSAGE
.
split
(
';'
)[
1
]
dbExisting
.
save
()
send_mail_vendor
(
self
.
perform_create
(
serializer
)
current_user
,
form_code
,
delegation
,
requestor_notification_msg
,
action
,
requestor_email_code
,
headers
=
self
.
get_success_headers
(
serializer
.
data
)
remarks
,
level
return
Response
(
)
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
# elif action.lower() == 'cancelled':
headers
=
headers
)
# action_cancelled(self, request, *args, **kwargs)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
headers
=
self
.
get_success_headers
(
serializer
.
data
)
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
return
Response
(
serializer
.
data
)
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
)
class
ChangeRequestFormPost
(
APIView
):
#------------
# @transaction.atomic()
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
def
post
(
self
,
request
):
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
form_header
=
request
.
data
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
try
:
return
super
(
ChangeRequestFormApproversViewset
,
self
)
.
list
(
request
)
data_list_approver
=
[]
data_list_stake
=
[]
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
data_list_attach
=
[]
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
data_list_detail
=
[]
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
form_header_data
=
{
'requested_to_template_name'
:
form_header
[
'requested_to_template_name'
],
'requested_to_template_id'
:
form_header
[
'requested_to_template_id'
],
class
ChangeRequestFormAttachmentsViewset
(
meviewsets
.
ModelViewSet
):
'requested_to_objective'
:
form_header
[
'requested_to_objective'
],
queryset
=
models
.
ChangeRequestFormAttachments
.
objects
.
all
()
'requested_to_target_date'
:
form_header
[
'requested_to_target_date'
],
serializer_class
=
serializers
.
ChangeRequestFormAttachmentsSerializer
'requested_to_priority'
:
form_header
[
'requested_to_priority'
],
pagination_class
=
paginators
.
SimplePageNumberPagination
'description'
:
form_header
[
'description'
],
'status'
:
form_header
[
'status'
],
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
'company_desc'
:
form_header
[
'company_desc'
],
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
'department_desc'
:
form_header
[
'department_desc'
],
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
'requested_desc'
:
form_header
[
'requested_desc'
],
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
'old_form_code'
:
form_header
[
'old_form_code'
],
return
super
(
'requested_by_department'
:
form_header
[
'requested_by_department'
],
ChangeRequestFormAttachmentsViewset
,
self
'requested_by_user'
:
form_header
[
'requested_by_user'
],
)
.
list
(
request
)
'requested_to_company'
:
form_header
[
'requested_to_company'
],
'requested_to_department'
:
form_header
[
'requested_to_department'
],
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
'requested_to_user'
:
form_header
[
'requested_to_user'
],
attachment_no
=
request
.
data
.
get
(
'attachment_no'
)
'template_no'
:
form_header
[
'template_no'
]
ObjectId
=
request
.
data
.
get
(
'id'
)
}
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
frm_approvers
=
form_header
[
'frm_approvers'
]
frm_stakes
=
form_header
[
'frm_stakes'
]
if
ObjectId
:
frm_attachments
=
form_header
[
'frm_attachments'
]
dbExisting
=
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
frm_details
=
form_header
[
'frm_details'
]
id
=
ObjectId
,
deleted_at
=
None
)
.
first
()
# sp1 = transaction.savepoint() # nothing will save to db
if
dbExisting
:
serializer
=
serializers
.
ChangeRequestFormHeaderSerializer
(
dbExisting
.
deleted_at
=
datetime
.
now
()
data
=
form_header_data
)
dbExisting
.
save
()
if
serializer
.
is_valid
(
raise_exception
=
True
):
self
.
perform_create
(
serializer
)
serializer
.
save
()
if
not
attachment_no
:
template_no
=
serializer
.
data
[
'template_no'
]
id
=
serializer
.
data
[
'id'
]
db_counter
=
models
.
ChangeRequestFormAttachments
.
objects
.
all
()
.
count
()
tmp_counter
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
db_counter
=
db_counter
+
1
template_no
=
template_no
)
.
count
()
models
.
ChangeRequestFormAttachments
.
objects
.
filter
(
id
=
id
)
.
update
(
# tmp_counter = tmp_counter + 1
set__attachment_no
=
number_generator
(
CR_Prefix
=
serializer
.
data
[
'requested_to_template_id'
]
"ATCH"
,
db_counter
)
generate_tmp
=
number_generator
(
CR_Prefix
,
tmp_counter
)
)
frm_id
=
serializer
.
data
[
'form_code'
]
headers
=
self
.
get_success_headers
(
serializer
.
data
)
print
(
frm_id
)
return
Response
(
serializer
.
data
,
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
status
=
status
.
HTTP_201_CREATED
,
form_code
=
frm_id
)
.
update
(
headers
=
headers
requested_to_template_id
=
generate_tmp
)
)
# create template approvers
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
for
frm_approver
in
frm_approvers
:
serializer
=
self
.
get_serializer
(
instance
)
frm_approver
[
'form_code'
]
=
frm_id
return
Response
(
serializer
.
data
)
data_list_approver
.
append
(
frm_approver
)
serializerApprover
=
serializers
.
ChangeRequestFormApproversSerializer
(
class
ChangeRequestFormStakeHoldersViewset
(
meviewsets
.
ModelViewSet
):
data
=
data_list_approver
,
many
=
True
)
queryset
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
all
()
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
serializer_class
=
serializers
.
ChangeRequestFormStakeHoldersSerializer
serializerApprover
.
save
()
pagination_class
=
paginators
.
SimplePageNumberPagination
# create template stakes
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
for
frm_stake
in
frm_stakes
:
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
frm_stake
[
'form_code'
]
=
frm_id
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
data_list_stake
.
append
(
frm_stake
)
return
super
(
ChangeRequestFormStakeHoldersViewset
,
self
)
.
list
(
request
)
serializerStake
=
serializers
.
ChangeRequestFormStakeHoldersSerializer
(
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
data
=
data_list_stake
,
many
=
True
)
ObjectId
=
request
.
data
.
get
(
'id'
)
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
if
serializerStake
.
is_valid
(
raise_exception
=
True
):
serializer
.
is_valid
(
raise_exception
=
True
)
serializerStake
.
save
()
if
ObjectId
:
# create template attachments
dbExisting
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
id
=
ObjectId
,
for
frm_attachment
in
frm_attachments
:
deleted_at
=
None
)
.
first
()
frm_attachment
[
'form_code'
]
=
frm_id
data_list_attach
.
append
(
frm_attachment
)
if
dbExisting
:
dbExisting
.
deleted_at
=
datetime
.
now
()
serializerAttach
=
serializers
.
ChangeRequestFormAttachmentsSerializer
(
dbExisting
.
save
()
data
=
data_list_attach
,
many
=
True
)
self
.
perform_create
(
serializer
)
if
serializerAttach
.
is_valid
(
raise_exception
=
True
):
serializerAttach
.
save
()
headers
=
self
.
get_success_headers
(
serializer
.
data
)
return
Response
(
# create template details
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
for
frm_detail
in
frm_details
:
headers
=
headers
frm_detail
[
'form_code'
]
=
frm_id
)
data_list_detail
.
append
(
frm_detail
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
serializerDetail
=
serializers
.
ChangeRequestFormDetailsSerializer
(
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
data
=
data_list_detail
,
many
=
True
)
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
if
serializerDetail
.
is_valid
(
raise_exception
=
True
):
serializerDetail
.
save
()
class
ChangeRequestFormDetailsViewset
(
meviewsets
.
ModelViewSet
):
message
=
{
'code'
:
201
,
queryset
=
models
.
ChangeRequestFormDetails
.
objects
.
all
()
'status'
:
'success'
,
serializer_class
=
serializers
.
ChangeRequestFormDetailsSerializer
'message'
:
'Form Details successfully saved!'
,
pagination_class
=
paginators
.
SimplePageNumberPagination
'results'
:
serializer
.
data
}
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
self
.
queryset
=
QuerySetHelper
.
Filter
(
self
)
except
ValidationError
as
e
:
return
super
(
ChangeRequestFormDetailsViewset
,
self
)
.
list
(
request
)
# transaction.savepoint_rollback(sp1)
message
=
{
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
'code'
:
400
,
ObjectId
=
request
.
data
.
get
(
'id'
)
'status'
:
'failed'
,
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
'message'
:
str
(
e
),
serializer
.
is_valid
(
raise_exception
=
True
)
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
if
ObjectId
:
dbExisting
=
models
.
ChangeRequestFormDetails
.
objects
.
filter
(
except
Exception
as
e
:
id
=
ObjectId
,
# transaction.savepoint_rollback(sp1)
deleted_at
=
None
)
.
first
()
message
=
{
'code'
:
500
,
if
dbExisting
:
'status'
:
'failed'
,
dbExisting
.
deleted_at
=
datetime
.
now
()
'message'
:
'Request was not able to process'
+
str
(
e
),
dbExisting
.
save
()
}
return
Response
(
message
,
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
deleted_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
class
ChangeRequestFormPost
(
APIView
):
# @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'
],
'requested_to_objective'
:
form_header
[
'requested_to_objective'
],
'requested_to_target_date'
:
form_header
[
'requested_to_target_date'
],
'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'
],
'old_form_code'
:
form_header
[
'old_form_code'
],
'requested_by_department'
:
form_header
[
'requested_by_department'
],
'requested_by_user'
:
form_header
[
'requested_by_user'
],
'requested_to_company'
:
form_header
[
'requested_to_company'
],
'requested_to_department'
:
form_header
[
'requested_to_department'
],
'requested_to_user'
:
form_header
[
'requested_to_user'
],
'template_no'
:
form_header
[
'template_no'
]
}
frm_approvers
=
form_header
[
'frm_approvers'
]
frm_stakes
=
form_header
[
'frm_stakes'
]
frm_attachments
=
form_header
[
'frm_attachments'
]
frm_details
=
form_header
[
'frm_details'
]
# sp1 = transaction.savepoint() # nothing will save to db
serializer
=
serializers
.
ChangeRequestFormHeaderSerializer
(
data
=
form_header_data
)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
()
frm_id
=
serializer
.
data
[
'form_code'
]
print
(
frm_id
)
# create template approvers
for
frm_approver
in
frm_approvers
:
frm_approver
[
'form_code'
]
=
frm_id
data_list_approver
.
append
(
frm_approver
)
serializerApprover
=
serializers
.
ChangeRequestFormApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
serializerApprover
.
save
()
# create template stakes
for
frm_stake
in
frm_stakes
:
frm_stake
[
'form_code'
]
=
frm_id
data_list_stake
.
append
(
frm_stake
)
serializerStake
=
serializers
.
ChangeRequestFormStakeHoldersSerializer
(
data
=
data_list_stake
,
many
=
True
)
if
serializerStake
.
is_valid
(
raise_exception
=
True
):
serializerStake
.
save
()
# create template attachments
for
frm_attachment
in
frm_attachments
:
frm_attachment
[
'form_code'
]
=
frm_id
data_list_attach
.
append
(
frm_attachment
)
serializerAttach
=
serializers
.
ChangeRequestFormAttachmentsSerializer
(
data
=
data_list_attach
,
many
=
True
)
if
serializerAttach
.
is_valid
(
raise_exception
=
True
):
serializerAttach
.
save
()
# create template details
for
frm_detail
in
frm_details
:
frm_detail
[
'form_code'
]
=
frm_id
data_list_detail
.
append
(
frm_detail
)
serializerDetail
=
serializers
.
ChangeRequestFormDetailsSerializer
(
data
=
data_list_detail
,
many
=
True
)
if
serializerDetail
.
is_valid
(
raise_exception
=
True
):
serializerDetail
.
save
()
message
=
{
'code'
:
201
,
'status'
:
'success'
,
'message'
:
'Form Details successfully saved!'
,
'results'
:
serializer
.
data
}
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
except
ValidationError
as
e
:
# transaction.savepoint_rollback(sp1)
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)
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
\ No newline at end of file
app/applicationlayer/cms/template/serializers.py
0 → 100644
View file @
4695d626
from
app.entities
import
models
from
rest_framework
import
serializers
from
django.db.models
import
Q
from
drf_writable_nested
import
WritableNestedModelSerializer
class
ChangeRequestTemplateApproversSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateApprovers
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
class
ChangeRequestTemplateStakeHoldersSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateStakeHolders
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
class
ChangeRequestTemplateAttachmentsSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateAttachments
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
class
ChangeRequestTemplateDetailsSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
models
.
ChangeRequestTemplateDetails
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'archived_at'
,
'code'
]
# comment
class
ChangeRequestTemplatesSerializer
(
WritableNestedModelSerializer
):
tmp_approvers
=
ChangeRequestTemplateApproversSerializer
(
many
=
True
,
required
=
False
)
tmp_stakes
=
ChangeRequestTemplateStakeHoldersSerializer
(
many
=
True
,
required
=
False
)
tmp_attachments
=
ChangeRequestTemplateAttachmentsSerializer
(
many
=
True
,
required
=
False
)
tmp_details
=
ChangeRequestTemplateDetailsSerializer
(
many
=
True
,
required
=
False
)
class
Meta
:
model
=
models
.
ChangeRequestTemplateHeader
# fields = '__all__'
fields
=
(
'template_no'
,
'requested_to_template_name'
,
'requested_to_objective'
,
'requested_to_target_date'
,
'requested_to_priority'
,
'description'
,
'created'
,
'requested_to_template_id'
,
'requested_to_company'
,
'requested_to_department'
,
'requested_to_user'
,
'created_by_user'
,
'created_by_department'
,
'tmp_approvers'
,
'tmp_stakes'
,
'tmp_attachments'
,
'tmp_details'
)
read_only_fields
=
[
'created'
,
'archived_at'
,
'template_no'
]
\ No newline at end of file
app/applicationlayer/cms/template/views.py
0 → 100644
View file @
4695d626
from
django.shortcuts
import
render
from
rest_framework
import
viewsets
as
meviewsets
from
rest_framework.views
import
APIView
from
app.applicationlayer.cms.template
import
serializers
from
app.entities
import
models
from
app.applicationlayer
import
paginators
from
datetime
import
datetime
from
datetime
import
timedelta
from
rest_framework.response
import
Response
from
rest_framework
import
status
,
views
from
rest_framework.decorators
import
action
from
django.http
import
Http404
from
django.db.models
import
Q
import
requests
from
django.conf
import
settings
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.cms.utils_cr
import
number_generator
,
crhistory_save
from
django.shortcuts
import
get_object_or_404
from
rest_framework.generics
import
GenericAPIView
from
rest_framework.mixins
import
UpdateModelMixin
from
django.forms.models
import
model_to_dict
from
app.entities
import
enums
class
ChangeRequestTemplatesViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateHeader
.
objects
.
all
()
lookup_field
=
'template_no'
serializer_class
=
serializers
.
ChangeRequestTemplatesSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
order_by
(
'-created'
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplatesViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
template_no
=
str
(
self
.
kwargs
.
get
(
'template_no'
))
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
template_no
=
self
.
kwargs
[
'template_no'
]
instance
=
models
.
ChangeRequestTemplateHeader
.
objects
.
filter
(
Q
(
template_no
=
template_no
)
&
Q
(
archived_at
=
None
)
)
.
update
(
archived_at
=
datetime
.
now
())
return
Response
({
"message"
:
"Deleted"
},
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
return
Response
(
e
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
@
transaction
.
atomic
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
template_no
=
kwargs
[
'template_no'
]
tmp_no_exists
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
template_no
=
template_no
)
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
# print(new_instance)
crhistory_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
CREntitiesEnum
.
CR_TMP_HEADER
.
value
,
new_instance
[
'template_no'
],
old_instance
,
new_instance
)
return
Response
(
serializer
.
data
)
return
Response
(
"Unable to edit due to existing transaction"
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'archived'
,
url_name
=
'archived'
)
def
archived
(
self
,
request
,
*
args
,
**
kwargs
):
template_no
=
kwargs
[
'template_no'
]
tmp_no_exists
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
template_no
=
template_no
)
if
not
tmp_no_exists
:
models
.
ChangeRequestTemplateDetails
.
objects
.
filter
(
template_no
=
template_no
)
.
update
(
archived_at
=
datetime
.
now
())
models
.
ChangeRequestTemplateAttachments
.
objects
.
filter
(
template_no
=
template_no
)
.
update
(
archived_at
=
datetime
.
now
())
models
.
ChangeRequestTemplateHeader
.
objects
.
filter
(
template_no
=
template_no
)
.
update
(
archived_at
=
datetime
.
now
())
models
.
ChangeRequestTemplateApprovers
.
objects
.
filter
(
template_no
=
template_no
)
.
update
(
archived_at
=
datetime
.
now
())
models
.
ChangeRequestTemplateStakeHolders
.
objects
.
filter
(
template_no
=
template_no
)
.
update
(
archived_at
=
datetime
.
now
())
return
Response
(
"Template successfully archived"
,
status
=
status
.
HTTP_200_OK
)
return
Response
(
"Unable to archive due to existing transaction"
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
class
ChangeRequestTemplatePost
(
APIView
):
@
transaction
.
atomic
()
def
post
(
self
,
request
):
template_header
=
request
.
data
try
:
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'
],
'requested_to_objective'
:
template_header
[
'requested_to_objective'
],
'requested_to_target_date'
:
template_header
[
'requested_to_target_date'
],
'requested_to_priority'
:
template_header
[
'requested_to_priority'
],
'description'
:
template_header
[
'description'
],
'created_by_department'
:
template_header
[
'created_by_department'
],
'created_by_user'
:
template_header
[
'created_by_user'
],
'requested_to_company'
:
template_header
[
'requested_to_company'
],
'requested_to_department'
:
template_header
[
'requested_to_department'
],
'requested_to_user'
:
template_header
[
'requested_to_user'
]
}
tmp_approvers
=
template_header
[
'tmp_approvers'
]
tmp_stakes
=
template_header
[
'tmp_stakes'
]
tmp_attachments
=
template_header
[
'tmp_attachments'
]
tmp_details
=
template_header
[
'tmp_details'
]
sp1
=
transaction
.
savepoint
()
# nothing will save to db
serializer
=
serializers
.
ChangeRequestTemplatesSerializer
(
data
=
template_header_data
)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
()
tmp_id
=
serializer
.
data
[
'template_no'
]
# create template approvers
for
tmp_approver
in
tmp_approvers
:
tmp_approver
[
'template_no'
]
=
tmp_id
data_list_approver
.
append
(
tmp_approver
)
serializerApprover
=
serializers
.
ChangeRequestTemplateApproversSerializer
(
data
=
data_list_approver
,
many
=
True
)
if
serializerApprover
.
is_valid
(
raise_exception
=
True
):
serializerApprover
.
save
()
# create template stakes
for
tmp_stake
in
tmp_stakes
:
tmp_stake
[
'template_no'
]
=
tmp_id
data_list_stake
.
append
(
tmp_stake
)
serializerStake
=
serializers
.
ChangeRequestTemplateStakeHoldersSerializer
(
data
=
data_list_stake
,
many
=
True
)
if
serializerStake
.
is_valid
(
raise_exception
=
True
):
serializerStake
.
save
()
# create template attachments
for
tmp_attachment
in
tmp_attachments
:
tmp_attachment
[
'template_no'
]
=
tmp_id
data_list_attach
.
append
(
tmp_attachment
)
serializerAttach
=
serializers
.
ChangeRequestTemplateAttachmentsSerializer
(
data
=
data_list_attach
,
many
=
True
)
if
serializerAttach
.
is_valid
(
raise_exception
=
True
):
serializerAttach
.
save
()
# create template details
for
tmp_detail
in
tmp_details
:
tmp_detail
[
'template_no'
]
=
tmp_id
data_list_detail
.
append
(
tmp_detail
)
serializerDetail
=
serializers
.
ChangeRequestTemplateDetailsSerializer
(
data
=
data_list_detail
,
many
=
True
)
if
serializerDetail
.
is_valid
(
raise_exception
=
True
):
serializerDetail
.
save
()
message
=
{
'code'
:
201
,
'status'
:
'success'
,
'message'
:
'Template Details successfully saved!'
,
'results'
:
serializer
.
data
}
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
except
ValidationError
as
e
:
transaction
.
savepoint_rollback
(
sp1
)
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
)
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
class
ChangeRequestTemplateApproversViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateApprovers
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestTemplateApproversSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplateApproversViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
class
ChangeRequestTemplateAttachmentsViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateAttachments
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestTemplateAttachmentsSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplateAttachmentsViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
class
ChangeRequestTemplateStakeHoldersViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateStakeHolders
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestTemplateStakeHoldersSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplateStakeHoldersViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
class
ChangeRequestTemplateDetailsViewset
(
meviewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestTemplateDetails
.
objects
.
all
()
serializer_class
=
serializers
.
ChangeRequestTemplateDetailsSerializer
pagination_class
=
paginators
.
SimplePageNumberPagination
lookup_field
=
"code"
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
queryset
=
self
.
queryset
.
filter
(
archived_at
=
None
)
self
.
queryset
=
QuerySetHelper
.
Sort
(
self
)
return
super
(
ChangeRequestTemplateDetailsViewset
,
self
)
.
list
(
request
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
queryset
.
filter
(
archived_at
=
None
)
.
first
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
\ No newline at end of file
app/applicationlayer/cms/user_privilege/serializers.py
0 → 100644
View file @
4695d626
app/applicationlayer/cms/user_privilege/views.py
0 → 100644
View file @
4695d626
app/applicationlayer/
management/changerequest
/utils_cr.py
→
app/applicationlayer/
cms
/utils_cr.py
View file @
4695d626
from
datetime
import
datetime
from
datetime
import
datetime
from
django.db.models.functions
import
Lower
from
django.db.models.functions
import
Lower
from
functools
import
wraps
from
functools
import
wraps
from
django.conf
import
settings
from
django.conf
import
settings
import
requests
import
requests
from
app.entities
import
models
from
app.entities
import
models
from
datetime
import
timedelta
from
datetime
import
timedelta
from
django.db.models
import
Q
from
django.db.models
import
Q
# from dateutil import parser
# from dateutil import parser
# EMAIL = settings.EMAIL
# EMAIL = settings.EMAIL
# ACCOUNTS = settings.ACCOUNTS
# ACCOUNTS = settings.ACCOUNTS
# GROUPS = settings.GROUPS
# GROUPS = settings.GROUPS
# COMPANIES = settings.COMPANIES
# COMPANIES = settings.COMPANIES
# ALLOWED_COMPANY = settings.ALLOWED_COMPANY
# ALLOWED_COMPANY = settings.ALLOWED_COMPANY
# CR_FRONT_LINK = settings.CR_FRONT_LINK
# CR_FRONT_LINK = settings.CR_FRONT_LINK
# NOTIFICATION = settings.NOTIFICATION
# NOTIFICATION = settings.NOTIFICATION
def
get_group_details
(
group_no
):
def
get_group_details
(
group_no
):
return
requests
.
get
(
f
'{GROUPS}?group_no={group_no}'
)
.
json
()[
'results'
][
0
]
return
requests
.
get
(
f
'{GROUPS}?group_no={group_no}'
)
.
json
()[
'results'
][
0
]
def
get_companies_details
(
slug
):
def
get_companies_details
(
slug
):
return
requests
.
get
(
f
'{COMPANIES}?slug={slug}'
)
.
json
()[
'results'
][
0
]
return
requests
.
get
(
f
'{COMPANIES}?slug={slug}'
)
.
json
()[
'results'
][
0
]
def
get_account_details
(
id_number
):
def
get_account_details
(
id_number
):
return
requests
.
get
(
f
'{ACCOUNTS}?id_number={id_number}'
)
.
json
()[
'results'
][
0
]
return
requests
.
get
(
f
'{ACCOUNTS}?id_number={id_number}'
)
.
json
()[
'results'
][
0
]
def
get_allowed_company
(
id_number
):
def
get_allowed_company
(
id_number
):
return
requests
.
get
(
f
'{ALLOWED_COMPANY}?id_number={id_number}'
)
return
requests
.
get
(
f
'{ALLOWED_COMPANY}?id_number={id_number}'
)
class
QuerySetHelper
:
class
QuerySetHelper
:
@
staticmethod
@
staticmethod
def
Sort
(
context
):
def
Sort
(
context
):
sort_field
=
context
.
request
.
query_params
.
get
(
'sort_field'
)
sort_field
=
context
.
request
.
query_params
.
get
(
'sort_field'
)
sort_order
=
context
.
request
.
query_params
.
get
(
'sort_order'
)
sort_order
=
context
.
request
.
query_params
.
get
(
'sort_order'
)
if
sort_field
and
sort_order
:
if
sort_field
and
sort_order
:
if
sort_order
.
lower
()
==
'asc'
:
if
sort_order
.
lower
()
==
'asc'
:
context
.
queryset
=
context
.
queryset
.
order_by
(
sort_field
)
context
.
queryset
=
context
.
queryset
.
order_by
(
sort_field
)
else
:
else
:
context
.
queryset
=
context
.
queryset
.
order_by
(
f
"-{sort_field}"
)
context
.
queryset
=
context
.
queryset
.
order_by
(
f
"-{sort_field}"
)
return
context
.
queryset
return
context
.
queryset
@
staticmethod
@
staticmethod
def
Search
(
context
):
def
Search
(
context
):
search_field
=
context
.
request
.
query_params
.
get
(
'search-field'
)
search_field
=
context
.
request
.
query_params
.
get
(
'search-field'
)
search_key
=
context
.
request
.
query_params
.
get
(
'search-key'
)
search_key
=
context
.
request
.
query_params
.
get
(
'search-key'
)
if
search_field
and
search_key
:
if
search_field
and
search_key
:
context
.
queryset
=
context
.
queryset
(
context
.
queryset
=
context
.
queryset
(
__raw__
=
{
f
"{search_field}"
:
{
"$regex"
:
f
".*{search_key.lower()}.*"
}}
__raw__
=
{
f
"{search_field}"
:
{
"$regex"
:
f
".*{search_key.lower()}.*"
}}
)
)
return
context
.
queryset
return
context
.
queryset
@
staticmethod
@
staticmethod
def
SearchDynamic
(
base_queryset
,
def
SearchDynamic
(
base_queryset
,
):
):
search_field
=
context
.
request
.
query_params
.
get
(
'search-field'
)
search_field
=
context
.
request
.
query_params
.
get
(
'search-field'
)
search_key
=
context
.
request
.
query_params
.
get
(
'search-key'
)
search_key
=
context
.
request
.
query_params
.
get
(
'search-key'
)
if
search_field
and
search_key
:
if
search_field
and
search_key
:
context
.
queryset
=
context
.
queryset
(
context
.
queryset
=
context
.
queryset
(
__raw__
=
{
f
"{search_field}"
:
{
"$regex"
:
f
".*{search_key.lower()}.*"
}}
__raw__
=
{
f
"{search_field}"
:
{
"$regex"
:
f
".*{search_key.lower()}.*"
}}
)
)
return
context
.
queryset
return
context
.
queryset
# if self.request.query_params.get('search'):
# if self.request.query_params.get('search'):
# search_key = self.request.query_params.get('search')
# search_key = self.request.query_params.get('search')
# self.queryset = self.queryset.filter(
# self.queryset = self.queryset.filter(
# Q(requested_to_template_name__icontains=search_key.lower()) |
# Q(requested_to_template_name__icontains=search_key.lower()) |
# Q(requested_to_template_id__icontains=search_key.lower())
# Q(requested_to_template_id__icontains=search_key.lower())
# )
# )
# self.queryset = QuerySetHelper.Sort(self)
# self.queryset = QuerySetHelper.Sort(self)
@
staticmethod
@
staticmethod
def
Filter
(
context
):
def
Filter
(
context
):
if
int
(
len
(
context
.
request
.
query_params
))
>
0
:
if
int
(
len
(
context
.
request
.
query_params
))
>
0
:
filtering_kwargs
=
{}
filtering_kwargs
=
{}
with_params
=
[]
with_params
=
[]
common_params
=
(
common_params
=
(
'page'
,
'page-size'
,
'page_size'
,
'sort_order'
,
'sort_field'
'page'
,
'page-size'
,
'page_size'
,
'sort_order'
,
'sort_field'
)
)
for
field
,
value
in
context
.
request
.
GET
.
items
():
for
field
,
value
in
context
.
request
.
GET
.
items
():
filtering_kwargs
=
{}
filtering_kwargs
=
{}
if
value
and
field
.
lower
()
not
in
common_params
:
if
value
and
field
.
lower
()
not
in
common_params
:
filtering_kwargs
[
field
]
=
{
"$regex"
:
f
".*{value.lower()}.*"
}
filtering_kwargs
[
field
]
=
{
"$regex"
:
f
".*{value.lower()}.*"
}
filtering_kwargs
[
field
]
=
{
"$regex"
:
f
".*{value}.*"
}
filtering_kwargs
[
field
]
=
{
"$regex"
:
f
".*{value}.*"
}
# filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"}
# filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"}
with_params
.
append
(
filtering_kwargs
)
with_params
.
append
(
filtering_kwargs
)
raw_query
=
{
"$or"
:
with_params
}
raw_query
=
{
"$or"
:
with_params
}
context
.
queryset
=
context
.
queryset
(
__raw__
=
raw_query
)
context
.
queryset
=
context
.
queryset
(
__raw__
=
raw_query
)
return
context
.
queryset
return
context
.
queryset
def
ApproverStatus
(
status
):
def
ApproverStatus
(
status
):
choices
=
[
"pending"
,
"rejected"
,
"approved"
,
"completed"
,
"cancelled"
,
'acknowledged'
,
'accepted'
]
choices
=
[
"pending"
,
"rejected"
,
"approved"
,
"completed"
,
"cancelled"
,
'acknowledged'
,
'accepted'
]
if
status
not
in
choices
:
if
status
not
in
choices
:
return
False
return
False
else
:
else
:
return
True
return
True
def
number_generator
(
prefix
,
id
):
def
number_generator
(
prefix
,
id
):
date
=
'{:
%
Y
%
m
%
d}'
.
format
(
datetime
.
now
())
date
=
'{:
%
Y
%
m
%
d}'
.
format
(
datetime
.
now
())
id_num
=
'{:07}'
.
format
(
id
)
id_num
=
'{:07}'
.
format
(
id
)
autogenerated_no
=
prefix
+
'-'
+
date
+
'-'
+
id_num
autogenerated_no
=
prefix
+
'-'
+
date
+
'-'
+
id_num
return
autogenerated_no
return
autogenerated_no
def
logged_user
(
self
):
def
logged_user
(
self
):
# return self.request.META.get('HTTP_ACCOUNT_NO')
# return self.request.META.get('HTTP_ACCOUNT_NO')
return
self
.
request
.
user
return
self
.
request
.
user
def
receiver_body
(
def
receiver_body
(
sender_account_no
,
receiver_account_no
,
sender_account_no
,
receiver_account_no
,
email_code
,
email_recipient
,
email_code
,
email_recipient
,
app
,
sent
,
name
,
routing_level
,
app
,
sent
,
name
,
routing_level
,
status
,
cr_number
,
cr_name
,
status
,
cr_number
,
cr_name
,
company_requestedto
,
company_requestedto
,
department_requestedto
,
department_requestedto
,
priority_level
,
url
priority_level
,
url
):
):
receiver_data
=
{
receiver_data
=
{
"sender_account_no"
:
sender_account_no
,
"sender_account_no"
:
sender_account_no
,
"receiver_account_no"
:
receiver_account_no
,
"receiver_account_no"
:
receiver_account_no
,
"email_code"
:
email_code
,
"email_code"
:
email_code
,
"email_recipient"
:
email_recipient
,
"email_recipient"
:
email_recipient
,
"app"
:
app
,
"app"
:
app
,
"sent"
:
"False"
,
"sent"
:
"False"
,
"name"
:
name
,
"name"
:
name
,
"routing_level"
:
routing_level
,
"routing_level"
:
routing_level
,
"status"
:
status
,
"status"
:
status
,
"cr_number"
:
cr_number
,
"cr_number"
:
cr_number
,
"cr_name"
:
cr_name
,
"cr_name"
:
cr_name
,
"company_requestedto"
:
company_requestedto
,
"company_requestedto"
:
company_requestedto
,
"department_requestedto"
:
department_requestedto
,
"department_requestedto"
:
department_requestedto
,
"priority_level"
:
priority_level
,
"priority_level"
:
priority_level
,
"url"
:
url
"url"
:
url
}
}
return
receiver_data
return
receiver_data
def
get_template_instance
(
form_code
):
def
get_template_instance
(
form_code
):
template_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
template_instance
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
Q
(
form_code
=
form_code
)
&
Q
(
form_code
=
form_code
)
&
Q
(
deleted_at
=
None
)
Q
(
archived_at
=
None
)
)
.
first
()
)
.
first
()
return
template_instance
return
template_instance
def
send_notification
(
def
send_notification
(
form_code
,
cr_number
,
user_id_number
,
form_code
,
cr_number
,
user_id_number
,
user_name
,
message
,
app
,
user_name
,
message
,
app
,
sender_id_number
,
sender_name
sender_id_number
,
sender_name
):
):
notification_data
=
{
notification_data
=
{
"slug"
:
form_code
,
"slug"
:
form_code
,
"change_request_template_code"
:
cr_number
,
"change_request_template_code"
:
cr_number
,
# (OPENING TAG) receiver credential
# (OPENING TAG) receiver credential
"account_no"
:
user_id_number
,
"account_no"
:
user_id_number
,
"user"
:
user_name
,
"user"
:
user_name
,
# (CLOSING TAG) receiver credential
# (CLOSING TAG) receiver credential
"notif_type"
:
"ACTIVITY"
,
"notif_type"
:
"ACTIVITY"
,
"message"
:
message
,
"message"
:
message
,
"is_read"
:
False
,
"is_read"
:
False
,
"app"
:
app
,
"app"
:
app
,
"sender_account_no"
:
sender_id_number
,
"sender_account_no"
:
sender_id_number
,
"createdby"
:
sender_name
"createdby"
:
sender_name
}
}
notification
=
requests
.
post
(
NOTIFICATION
,
data
=
notification_data
)
notification
=
requests
.
post
(
NOTIFICATION
,
data
=
notification_data
)
# return notification.status
# return notification.status
return
notification
return
notification
def
send_mail_vendor
(
receiver
,
def
send_mail_vendor
(
receiver
,
form_code
,
form_code
,
delegation
,
delegation
,
msg
,
msg
,
action
,
action
,
code
,
code
,
remarks
,
remarks
,
routing_level
):
routing_level
):
app
=
'cms'
app
=
'cms'
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
template_instance
=
get_template_instance
(
form_code
)
template_instance
=
get_template_instance
(
form_code
)
cr_number
=
template_instance
.
requested_to_template_id
cr_number
=
template_instance
.
requested_to_template_id
template_name
=
template_instance
.
requested_to_template_name
template_name
=
template_instance
.
requested_to_template_name
requested_to_company
=
template_instance
.
requested_to_company
requested_to_company
=
template_instance
.
requested_to_company
requested_to_department
=
template_instance
.
requested_to_department
requested_to_department
=
template_instance
.
requested_to_department
requested_by_user
=
template_instance
.
requested_by_user
requested_by_user
=
template_instance
.
requested_by_user
created
=
template_instance
.
created
created
=
template_instance
.
created
requested_to_priority
=
template_instance
.
requested_to_priority
requested_to_priority
=
template_instance
.
requested_to_priority
vendor_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
vendor_instance
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
delegation
=
"Vendor/Implementor"
)
&
Q
(
delegation
=
"Vendor/Implementor"
)
&
Q
(
form_code
=
form_code
)
Q
(
form_code
=
form_code
)
)
.
first
()
)
.
first
()
# receiver details
# receiver details
vendor
=
get_account_details
(
vendor_instance
.
user
)
vendor
=
get_account_details
(
vendor_instance
.
user
)
requestor_name
=
vendor
[
'name'
]
requestor_name
=
vendor
[
'name'
]
requestor_email
=
vendor
[
'email'
]
requestor_email
=
vendor
[
'email'
]
requestor_account_id
=
vendor
[
'id_number'
]
requestor_account_id
=
vendor
[
'id_number'
]
# sender details
# sender details
sender_instance
=
get_account_details
(
receiver
)
sender_instance
=
get_account_details
(
receiver
)
sender_account_username
=
sender_instance
[
'username'
]
sender_account_username
=
sender_instance
[
'username'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_name
=
sender_instance
[
'name'
]
sender_name
=
sender_instance
[
'name'
]
group
=
get_group_details
(
requested_to_department
)
group
=
get_group_details
(
requested_to_department
)
group_name
=
group
[
'name'
]
group_name
=
group
[
'name'
]
company
=
get_companies_details
(
requested_to_company
)
company
=
get_companies_details
(
requested_to_company
)
company_name
=
company
[
'name'
]
company_name
=
company
[
'name'
]
container
=
receiver_body
(
container
=
receiver_body
(
sender_account_id
,
requestor_account_id
,
code
,
sender_account_id
,
requestor_account_id
,
code
,
requestor_email
,
app
,
"False"
,
requestor_name
,
routing_level
,
requestor_email
,
app
,
"False"
,
requestor_name
,
routing_level
,
action
,
cr_number
,
template_name
,
company_name
,
group_name
,
action
,
cr_number
,
template_name
,
company_name
,
group_name
,
requested_to_priority
,
cr_link
requested_to_priority
,
cr_link
)
)
if
action
.
lower
()
==
'rejected'
:
if
action
.
lower
()
==
'rejected'
:
new_body
=
{
"rejected_by"
:
requestor_name
,
new_body
=
{
"rejected_by"
:
requestor_name
,
"remarks"
:
remarks
}
"remarks"
:
remarks
}
elif
action
.
lower
()
==
'accepted'
:
elif
action
.
lower
()
==
'accepted'
:
new_body
=
{
"approved_by"
:
requestor_name
}
new_body
=
{
"approved_by"
:
requestor_name
}
data
=
{
**
container
,
**
new_body
}
data
=
{
**
container
,
**
new_body
}
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
message
=
f
"{sender_name} {msg} ({template_name})"
message
=
f
"{sender_name} {msg} ({template_name})"
send_notification
(
send_notification
(
form_code
,
cr_number
,
form_code
,
cr_number
,
requestor_account_id
,
requestor_name
,
requestor_account_id
,
requestor_name
,
message
,
app
,
message
,
app
,
sender_account_id
,
sender_account_username
sender_account_id
,
sender_account_username
)
)
def
send_mail_requestor
(
receiver
,
def
send_mail_requestor
(
receiver
,
form_code
,
form_code
,
delegation
,
delegation
,
msg
,
msg
,
action
,
action
,
code
,
code
,
remarks
,
remarks
,
routing_level
):
routing_level
):
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
template_instance
=
get_template_instance
(
form_code
)
template_instance
=
get_template_instance
(
form_code
)
app
=
'cms'
app
=
'cms'
cr_number
=
template_instance
.
requested_to_template_id
cr_number
=
template_instance
.
requested_to_template_id
template_name
=
template_instance
.
requested_to_template_name
template_name
=
template_instance
.
requested_to_template_name
requested_to_company
=
template_instance
.
requested_to_company
requested_to_company
=
template_instance
.
requested_to_company
requested_to_department
=
template_instance
.
requested_to_department
requested_to_department
=
template_instance
.
requested_to_department
requested_by_user
=
template_instance
.
requested_by_user
requested_by_user
=
template_instance
.
requested_by_user
created
=
template_instance
.
created
created
=
template_instance
.
created
requested_to_priority
=
template_instance
.
requested_to_priority
requested_to_priority
=
template_instance
.
requested_to_priority
# receiver details --------------------------------------------------
# receiver details --------------------------------------------------
requestor_instance
=
get_account_details
(
requested_by_user
)
requestor_instance
=
get_account_details
(
requested_by_user
)
requestor_name
=
requestor_instance
[
'name'
]
requestor_name
=
requestor_instance
[
'name'
]
requestor_email
=
requestor_instance
[
'email'
]
requestor_email
=
requestor_instance
[
'email'
]
requestor_account_id
=
requestor_instance
[
'id_number'
]
requestor_account_id
=
requestor_instance
[
'id_number'
]
# sender details --------------------------------------------------
# sender details --------------------------------------------------
sender_instance
=
get_account_details
(
receiver
)
sender_instance
=
get_account_details
(
receiver
)
sender_account_username
=
sender_instance
[
'username'
]
sender_account_username
=
sender_instance
[
'username'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_name
=
sender_instance
[
'name'
]
sender_name
=
sender_instance
[
'name'
]
group
=
get_group_details
(
requested_to_department
)
group
=
get_group_details
(
requested_to_department
)
group_name
=
group
[
'name'
]
group_name
=
group
[
'name'
]
company
=
get_companies_details
(
requested_to_company
)
company
=
get_companies_details
(
requested_to_company
)
company_name
=
company
[
'name'
]
company_name
=
company
[
'name'
]
data
=
receiver_body
(
data
=
receiver_body
(
sender_account_id
,
requestor_account_id
,
code
,
sender_account_id
,
requestor_account_id
,
code
,
requestor_email
,
app
,
"False"
,
requestor_name
,
routing_level
,
requestor_email
,
app
,
"False"
,
requestor_name
,
routing_level
,
action
,
cr_number
,
template_name
,
company_name
,
group_name
,
action
,
cr_number
,
template_name
,
company_name
,
group_name
,
requested_to_priority
,
cr_link
requested_to_priority
,
cr_link
)
)
if
action
.
lower
()
==
'approved'
:
if
action
.
lower
()
==
'approved'
:
new_body
=
{
"approved_by"
:
sender_name
}
new_body
=
{
"approved_by"
:
sender_name
}
elif
action
.
lower
()
==
'rejected'
:
elif
action
.
lower
()
==
'rejected'
:
new_body
=
{
"rejected_by"
:
sender_name
,
new_body
=
{
"rejected_by"
:
sender_name
,
"remarks"
:
remarks
}
"remarks"
:
remarks
}
elif
action
.
lower
()
==
'completed'
:
elif
action
.
lower
()
==
'completed'
:
new_body
=
{
"completed_by"
:
sender_name
}
new_body
=
{
"completed_by"
:
sender_name
}
elif
action
.
lower
()
==
'acknowledged'
:
elif
action
.
lower
()
==
'acknowledged'
:
new_body
=
{
"acknowledge_by"
:
sender_name
}
new_body
=
{
"acknowledge_by"
:
sender_name
}
data
=
{
**
data
,
**
new_body
}
data
=
{
**
data
,
**
new_body
}
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
message
=
f
"{sender_name} {msg} ({template_name})"
message
=
f
"{sender_name} {msg} ({template_name})"
notif
=
send_notification
(
notif
=
send_notification
(
form_code
,
cr_number
,
form_code
,
cr_number
,
requestor_account_id
,
requestor_name
,
requestor_account_id
,
requestor_name
,
message
,
app
,
message
,
app
,
sender_account_id
,
sender_account_username
sender_account_id
,
sender_account_username
)
)
def
next_appover_email
(
receiver
,
form_code
,
delegation
,
msg
,
action
,
code
):
def
next_appover_email
(
receiver
,
form_code
,
delegation
,
msg
,
action
,
code
):
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
cr_link
=
f
'{CR_FRONT_LINK}/{form_code}'
template_instance
=
get_template_instance
(
form_code
)
template_instance
=
get_template_instance
(
form_code
)
app
=
'cms'
app
=
'cms'
cr_number
=
template_instance
.
requested_to_template_id
cr_number
=
template_instance
.
requested_to_template_id
template_name
=
template_instance
.
requested_to_template_name
template_name
=
template_instance
.
requested_to_template_name
requested_to_company
=
template_instance
.
requested_to_company
requested_to_company
=
template_instance
.
requested_to_company
requested_to_department
=
template_instance
.
requested_to_department
requested_to_department
=
template_instance
.
requested_to_department
requested_by_user
=
template_instance
.
requested_by_user
requested_by_user
=
template_instance
.
requested_by_user
created
=
template_instance
.
created
created
=
template_instance
.
created
requested_to_priority
=
template_instance
.
requested_to_priority
requested_to_priority
=
template_instance
.
requested_to_priority
# for rec in receiver:
# for rec in receiver:
# receiver details
# receiver details
# if action == 'initial':
# if action == 'initial':
receiver_instance
=
get_account_details
(
receiver
)
receiver_instance
=
get_account_details
(
receiver
)
# else:
# else:
# receiver_instance = get_account_details(receiver.user)
# receiver_instance = get_account_details(receiver.user)
receiver_name
=
receiver_instance
[
'name'
]
receiver_name
=
receiver_instance
[
'name'
]
receiver_email
=
receiver_instance
[
'email'
]
receiver_email
=
receiver_instance
[
'email'
]
receiver_account_id
=
receiver_instance
[
'id_number'
]
receiver_account_id
=
receiver_instance
[
'id_number'
]
# sender details
# sender details
sender_instance
=
get_account_details
(
requested_by_user
)
sender_instance
=
get_account_details
(
requested_by_user
)
sender_account_username
=
sender_instance
[
'username'
]
sender_account_username
=
sender_instance
[
'username'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_account_id
=
sender_instance
[
'id_number'
]
sender_name
=
sender_instance
[
'name'
]
sender_name
=
sender_instance
[
'name'
]
group
=
get_group_details
(
requested_to_department
)
group
=
get_group_details
(
requested_to_department
)
group_name
=
group
[
'name'
]
group_name
=
group
[
'name'
]
company
=
get_companies_details
(
requested_to_company
)
company
=
get_companies_details
(
requested_to_company
)
company_name
=
company
[
'name'
]
company_name
=
company
[
'name'
]
data
=
receiver_body
(
data
=
receiver_body
(
sender_account_id
,
receiver_account_id
,
code
,
sender_account_id
,
receiver_account_id
,
code
,
receiver_email
,
app
,
"False"
,
receiver_name
,
1
,
receiver_email
,
app
,
"False"
,
receiver_name
,
1
,
"Pending"
,
cr_number
,
template_name
,
company_name
,
group_name
,
"Pending"
,
cr_number
,
template_name
,
company_name
,
group_name
,
requested_to_priority
,
cr_link
requested_to_priority
,
cr_link
)
)
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
email_status
=
requests
.
post
(
EMAIL
,
data
=
data
)
message
=
f
"{sender_name} {msg} ({template_name})"
message
=
f
"{sender_name} {msg} ({template_name})"
notif
=
send_notification
(
notif
=
send_notification
(
form_code
,
cr_number
,
form_code
,
cr_number
,
receiver_account_id
,
receiver_name
,
receiver_account_id
,
receiver_name
,
message
,
app
,
message
,
app
,
sender_account_id
,
sender_account_username
sender_account_id
,
sender_account_username
)
)
return
True
return
True
def
cancel_overdue
(
request
):
def
cancel_overdue
(
request
):
date_submitted
=
datetime
.
now
()
date_submitted
=
datetime
.
now
()
requestor
=
request
.
data
[
'requested_by_user'
]
requestor
=
request
.
data
[
'requested_by_user'
]
requestor
=
requests
.
get
(
f
'{ACCOUNTS}{requestor}/'
)
requestor
=
requests
.
get
(
f
'{ACCOUNTS}{requestor}/'
)
requestor
=
requestor
.
json
()[
'results'
]
requestor
=
requestor
.
json
()[
'results'
]
cancel_date
=
date_submitted
+
timedelta
(
days
=
30
)
cancel_date
=
date_submitted
+
timedelta
(
days
=
30
)
cancel_date
=
cancel_date
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
)
cancel_date
=
cancel_date
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
)
request
.
data
[
'date_submitted'
]
=
date_submitted
request
.
data
[
'date_submitted'
]
=
date_submitted
request
.
data
[
'cancel_date'
]
=
cancel_date
request
.
data
[
'cancel_date'
]
=
cancel_date
email_content_cancel
=
{
email_content_cancel
=
{
"sender_account_no"
:
requestor
[
'id_number'
],
"sender_account_no"
:
requestor
[
'id_number'
],
"receiver_account_no"
:
requestor
[
'id_number'
],
"receiver_account_no"
:
requestor
[
'id_number'
],
"email_code"
:
"RMS-CRCANCELLED"
,
"email_code"
:
"RMS-CRCANCELLED"
,
"email_recipient"
:
requestor
[
'email'
],
"email_recipient"
:
requestor
[
'email'
],
"app"
:
"CMS"
,
"app"
:
"CMS"
,
"sent"
:
"False"
,
"sent"
:
"False"
,
"name"
:
requestor
[
'name'
],
"name"
:
requestor
[
'name'
],
"status"
:
"Pending"
,
"status"
:
"Pending"
,
"auto_cancel_date"
:
cancel_date
,
"auto_cancel_date"
:
cancel_date
,
"cr_number"
:
request
.
data
[
'requested_to_template_id'
],
"cr_number"
:
request
.
data
[
'requested_to_template_id'
],
"cr_name"
:
request
.
data
[
'requested_to_template_name'
],
"cr_name"
:
request
.
data
[
'requested_to_template_name'
],
"company_requestedto"
:
request
.
data
[
'requested_to_company'
],
"company_requestedto"
:
request
.
data
[
'requested_to_company'
],
"department_requestedto"
:
request
.
data
[
'requested_to_department'
],
"department_requestedto"
:
request
.
data
[
'requested_to_department'
],
"priority_level"
:
request
.
data
[
'requested_to_priority'
],
"priority_level"
:
request
.
data
[
'requested_to_priority'
],
"url"
:
"http://devweb.rms.oneberrysystem.com/login"
"url"
:
"http://devweb.rms.oneberrysystem.com/login"
}
}
exist_cancel_template
=
models
.
CancelDateCR
.
objects
.
filter
(
exist_cancel_template
=
models
.
CancelDateCR
.
objects
.
filter
(
cr_number
=
request
.
data
[
'requested_to_template_id'
]
cr_number
=
request
.
data
[
'requested_to_template_id'
]
)
)
if
exist_cancel_template
:
if
exist_cancel_template
:
exist_cancel_template
.
delete
()
exist_cancel_template
.
delete
()
models
.
CancelDateCR
.
objects
.
create
(
models
.
CancelDateCR
.
objects
.
create
(
cr_number
=
request
.
data
[
'requested_to_template_id'
],
cr_number
=
request
.
data
[
'requested_to_template_id'
],
trigger_date
=
cancel_date
,
trigger_date
=
cancel_date
,
email_content
=
email_content_cancel
email_content
=
email_content_cancel
)
)
requested_to_target_date
=
parser
.
parse
(
requested_to_target_date
=
parser
.
parse
(
request
.
data
[
'requested_to_target_date'
]
request
.
data
[
'requested_to_target_date'
]
)
)
email_content_cancel
[
'email_code'
]
=
"RMS-CROVERDUE"
email_content_cancel
[
'email_code'
]
=
"RMS-CROVERDUE"
email_content_cancel
[
'target_date'
]
=
requested_to_target_date
email_content_cancel
[
'target_date'
]
=
requested_to_target_date
overdue
=
requested_to_target_date
+
timedelta
(
days
=
30
)
overdue
=
requested_to_target_date
+
timedelta
(
days
=
30
)
overdue
=
overdue
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
)
overdue
=
overdue
.
strftime
(
'
%
Y-
%
m-
%
d 00:00:00.000'
)
models
.
TargetDateOverdue
.
objects
.
create
(
models
.
TargetDateOverdue
.
objects
.
create
(
cr_number
=
form_code
,
cr_number
=
form_code
,
trigger_date
=
overdue
,
trigger_date
=
overdue
,
email_content
=
email_content_cancel
email_content
=
email_content_cancel
)
)
return
True
return
True
def
crhistory_save
(
action
,
entity
,
form_code
,
fromValue
,
toValue
):
models
.
ChangeRequestHistory
.
objects
.
create
(
action
=
action
,
entity
=
entity
,
form_code
=
form_code
,
fromValue
=
fromValue
,
toValue
=
toValue
)
return
True
\ No newline at end of file
app/applicationlayer/urls_cms.py
View file @
4695d626
...
@@ -3,27 +3,28 @@ from rest_framework import routers
...
@@ -3,27 +3,28 @@ from rest_framework import routers
from
django.conf.urls
import
url
from
django.conf.urls
import
url
from
app.applicationlayer.management.notification.views
import
NotificationsViewset
from
app.applicationlayer.management.notification.views
import
NotificationsViewset
from
app.applicationlayer.management.changerequest
import
views
as
crviews
from
app.applicationlayer.cms.template
import
views
as
crtemplate_views
from
app.applicationlayer.cms.form
import
views
as
crform_views
router
=
routers
.
DefaultRouter
()
router
=
routers
.
DefaultRouter
()
router
.
register
(
r'notifications'
,
NotificationsViewset
)
router
.
register
(
r'notifications'
,
NotificationsViewset
)
router
.
register
(
r'template'
,
crviews
.
ChangeRequestTemplatesViewset
)
router
.
register
(
r'template'
,
cr
template_
views
.
ChangeRequestTemplatesViewset
)
router
.
register
(
r'template-approvers'
,
crviews
.
ChangeRequestTemplateApproversViewset
)
router
.
register
(
r'template-approvers'
,
cr
template_
views
.
ChangeRequestTemplateApproversViewset
)
router
.
register
(
r'template-attachments'
,
crviews
.
ChangeRequestTemplateAttachmentsViewset
)
router
.
register
(
r'template-attachments'
,
cr
template_
views
.
ChangeRequestTemplateAttachmentsViewset
)
router
.
register
(
r'template-stakeholders'
,
crviews
.
ChangeRequestTemplateStakeHoldersViewset
)
router
.
register
(
r'template-stakeholders'
,
cr
template_
views
.
ChangeRequestTemplateStakeHoldersViewset
)
router
.
register
(
r'template-details'
,
crviews
.
ChangeRequestTemplateDetailsViewset
)
router
.
register
(
r'template-details'
,
cr
template_
views
.
ChangeRequestTemplateDetailsViewset
)
router
.
register
(
r'form'
,
crviews
.
ChangeRequestFormsViewset
)
router
.
register
(
r'form'
,
cr
form_
views
.
ChangeRequestFormsViewset
)
router
.
register
(
r'form-approvers'
,
crviews
.
ChangeRequestFormApproversViewset
)
router
.
register
(
r'form-approvers'
,
cr
form_
views
.
ChangeRequestFormApproversViewset
)
router
.
register
(
r'form-stakeholders'
,
crviews
.
ChangeRequestFormStakeHoldersViewset
)
router
.
register
(
r'form-stakeholders'
,
cr
form_
views
.
ChangeRequestFormStakeHoldersViewset
)
router
.
register
(
r'form-attachments'
,
crviews
.
ChangeRequestFormAttachmentsViewset
)
router
.
register
(
r'form-attachments'
,
cr
form_
views
.
ChangeRequestFormAttachmentsViewset
)
router
.
register
(
r'form-details'
,
crviews
.
ChangeRequestFormDetailsViewset
)
router
.
register
(
r'form-details'
,
cr
form_
views
.
ChangeRequestFormDetailsViewset
)
urlpatterns
=
(
urlpatterns
=
(
path
(
''
,
include
(
router
.
urls
)),
path
(
''
,
include
(
router
.
urls
)),
path
(
'template-post/'
,
crviews
.
ChangeRequestTemplatePost
.
as_view
()),
path
(
'template-post/'
,
cr
template_
views
.
ChangeRequestTemplatePost
.
as_view
()),
path
(
'form-post/'
,
crviews
.
ChangeRequestFormPost
.
as_view
()),
path
(
'form-post/'
,
cr
form_
views
.
ChangeRequestFormPost
.
as_view
()),
)
)
app/businesslayer/changerequest/change_request.py
View file @
4695d626
...
@@ -22,19 +22,19 @@ def list_by_user(user_id_number):
...
@@ -22,19 +22,19 @@ def list_by_user(user_id_number):
approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
approver
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
user
=
user_id_number
)
&
Q
(
user
=
user_id_number
)
&
Q
(
delet
ed_at
=
None
)
Q
(
archiv
ed_at
=
None
)
)
)
approver
=
[
data
.
form_code
for
data
in
approver
]
approver
=
[
data
.
form_code
for
data
in
approver
]
stake
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
stake
=
models
.
ChangeRequestFormStakeHolders
.
objects
.
filter
(
Q
(
user
=
user_id_number
)
&
Q
(
user
=
user_id_number
)
&
Q
(
delet
ed_at
=
None
)
Q
(
archiv
ed_at
=
None
)
)
)
stake
=
[
data
.
form_code
for
data
in
stake
]
stake
=
[
data
.
form_code
for
data
in
stake
]
headers
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
headers
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
delet
ed_at
=
None
,
archiv
ed_at
=
None
,
requested_by_user
=
user_id_number
requested_by_user
=
user_id_number
)
)
headers
=
[
data
.
form_code
for
data
in
headers
]
headers
=
[
data
.
form_code
for
data
in
headers
]
...
@@ -52,7 +52,7 @@ def list_by_user(user_id_number):
...
@@ -52,7 +52,7 @@ def list_by_user(user_id_number):
# priviledgedList = models.ChangeRequestFormHeader.objects.filter(
# priviledgedList = models.ChangeRequestFormHeader.objects.filter(
# requested_to_department__in=crViews,
# requested_to_department__in=crViews,
#
delet
ed_at=None,
#
archiv
ed_at=None,
# )
# )
# priviledgedCrs = [data['form_code'] for data in priviledgedList]
# priviledgedCrs = [data['form_code'] for data in priviledgedList]
...
@@ -62,7 +62,7 @@ def list_by_user(user_id_number):
...
@@ -62,7 +62,7 @@ def list_by_user(user_id_number):
return_queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
return_queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
filter
(
form_code__in
=
form_code
,
form_code__in
=
form_code
,
delet
ed_at
=
None
,
archiv
ed_at
=
None
,
)
)
exclude
=
return_queryset
.
filter
(
exclude
=
return_queryset
.
filter
(
status__iexact
=
'Draft'
,
status__iexact
=
'Draft'
,
...
@@ -179,28 +179,12 @@ def filter_overdue(base_queryset):
...
@@ -179,28 +179,12 @@ def filter_overdue(base_queryset):
overdue
=
[]
overdue
=
[]
for
query
in
return_queryset
:
for
query
in
return_queryset
:
if
(
query
.
requested_to_target_date
<
now
):
try
:
overdue
.
append
(
query
.
form_code
)
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
)
return_queryset
return_queryset
=
return_queryset
.
filter
(
form_code__in
=
overdue
)
except
Exception
as
e
:
except
Exception
as
e
:
pass
pass
...
@@ -236,19 +220,25 @@ def filter_awaiting(base_queryset,
...
@@ -236,19 +220,25 @@ def filter_awaiting(base_queryset,
try
:
try
:
awaiting_included
=
[]
awaiting_included
=
[]
for
query
in
return_queryset
:
for
query
in
return_queryset
:
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
query
.
form_code
)
&
Q
(
form_code
=
query
.
form_code
)
&
Q
(
deleted_at
=
None
)
&
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
(
Q
(
action
=
''
)
|
Q
(
action
=
None
))
)
.
order_by
(
'level'
)
)
.
order_by
(
'level'
)
if
current_level
:
if
current_level
:
first_level
=
current_level
.
first
()
if
current_level
[
0
][
'user'
]
==
user_id_number
:
first_user
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
awaiting_included
.
append
(
query
.
form_code
)
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
)
return_queryset
=
return_queryset
.
filter
(
form_code__in
=
awaiting_included
)
...
...
app/entities/migrations/0007_auto_20190911_1102.py
0 → 100644
View file @
4695d626
# Generated by Django 2.2 on 2019-09-11 11:02
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0006_emaillogs_is_sent'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequestformheader'
,
name
=
'requested_to_template_id'
,
field
=
models
.
CharField
(
max_length
=
255
),
),
]
app/entities/migrations/0008_auto_20190911_1715.py
0 → 100644
View file @
4695d626
# Generated by Django 2.2 on 2019-09-11 17:15
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0007_auto_20190911_1102'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequesthistory'
,
name
=
'form_code'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
255
,
null
=
True
),
),
]
app/entities/migrations/0009_auto_20190911_1845.py
0 → 100644
View file @
4695d626
# Generated by Django 2.2 on 2019-09-11 18:45
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0008_auto_20190911_1715'
),
]
operations
=
[
migrations
.
RenameField
(
model_name
=
'changerequestformapprovers'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequestformattachments'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequestformdetails'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequestformheader'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequestformstakeholders'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequesttemplateapprovers'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequesttemplateattachments'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequesttemplatedetails'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequesttemplateheader'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
migrations
.
RenameField
(
model_name
=
'changerequesttemplatestakeholders'
,
old_name
=
'deleted_at'
,
new_name
=
'archived_at'
,
),
]
app/entities/migrations/0010_auto_20190913_1143.py
0 → 100644
View file @
4695d626
# Generated by Django 2.2 on 2019-09-13 11:43
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0009_auto_20190911_1845'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'changerequestformapprovers'
,
name
=
'archived_at'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformattachments'
,
name
=
'archived_at'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformdetails'
,
name
=
'archived_at'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformheader'
,
name
=
'archived_at'
,
),
migrations
.
RemoveField
(
model_name
=
'changerequestformstakeholders'
,
name
=
'archived_at'
,
),
]
app/entities/models.py
View file @
4695d626
...
@@ -354,8 +354,7 @@ class BaseHeader(models.Model):
...
@@ -354,8 +354,7 @@ class BaseHeader(models.Model):
to_field
=
'code'
)
to_field
=
'code'
)
requested_to_template_name
=
models
.
CharField
(
max_length
=
255
)
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
(
requested_to_objective
=
models
.
CharField
(
max_length
=
255
,
max_length
=
255
,
blank
=
True
,
blank
=
True
,
...
@@ -374,10 +373,6 @@ class BaseHeader(models.Model):
...
@@ -374,10 +373,6 @@ class BaseHeader(models.Model):
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
abstract
=
True
abstract
=
True
...
@@ -399,9 +394,6 @@ class BaseApprover(models.Model):
...
@@ -399,9 +394,6 @@ class BaseApprover(models.Model):
created
=
models
.
DateTimeField
(
created
=
models
.
DateTimeField
(
blank
=
True
,
blank
=
True
,
null
=
True
)
null
=
True
)
deleted_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
abstract
=
True
abstract
=
True
...
@@ -421,9 +413,6 @@ class BaseStakeholder(models.Model):
...
@@ -421,9 +413,6 @@ class BaseStakeholder(models.Model):
created
=
models
.
DateTimeField
(
created
=
models
.
DateTimeField
(
blank
=
True
,
blank
=
True
,
null
=
True
)
null
=
True
)
deleted_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
abstract
=
True
abstract
=
True
...
@@ -452,9 +441,6 @@ class BaseAttachment(models.Model):
...
@@ -452,9 +441,6 @@ class BaseAttachment(models.Model):
created
=
models
.
DateTimeField
(
created
=
models
.
DateTimeField
(
blank
=
True
,
blank
=
True
,
null
=
True
)
null
=
True
)
deleted_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
abstract
=
True
abstract
=
True
...
@@ -469,9 +455,6 @@ class BaseDetails(models.Model):
...
@@ -469,9 +455,6 @@ class BaseDetails(models.Model):
created
=
models
.
DateTimeField
(
created
=
models
.
DateTimeField
(
blank
=
True
,
blank
=
True
,
null
=
True
)
null
=
True
)
deleted_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
abstract
=
True
abstract
=
True
...
@@ -487,6 +470,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
...
@@ -487,6 +470,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
template_no
=
models
.
CharField
(
template_no
=
models
.
CharField
(
unique
=
True
,
unique
=
True
,
max_length
=
255
)
max_length
=
255
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
,
unique
=
True
)
created_by_user
=
models
.
ForeignKey
(
created_by_user
=
models
.
ForeignKey
(
User
,
User
,
...
@@ -500,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
...
@@ -500,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
to_field
=
'code'
,
to_field
=
'code'
,
related_name
=
'created_by_department'
)
related_name
=
'created_by_department'
)
archived_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_headers'
db_table
=
'change_request_template_headers'
...
@@ -515,7 +506,7 @@ class ChangeRequestTemplateHeader(BaseHeader):
...
@@ -515,7 +506,7 @@ class ChangeRequestTemplateHeader(BaseHeader):
self
.
save
()
self
.
save
()
def
delete
(
self
):
def
delete
(
self
):
self
.
delet
ed_at
=
datetime
.
utcnow
self
.
archiv
ed_at
=
datetime
.
utcnow
self
.
save
()
self
.
save
()
...
@@ -528,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
...
@@ -528,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
on_delete
=
models
.
DO_NOTHING
,
on_delete
=
models
.
DO_NOTHING
,
to_field
=
'template_no'
,
to_field
=
'template_no'
,
related_name
=
'tmp_approvers'
)
related_name
=
'tmp_approvers'
)
archived_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_approvers'
db_table
=
'change_request_template_approvers'
...
@@ -544,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover):
...
@@ -544,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover):
self
.
created
=
datetime
.
now
()
self
.
created
=
datetime
.
now
()
self
.
save
()
self
.
save
()
def
delete
(
self
):
self
.
archived_at
=
datetime
.
utcnow
self
.
save
()
class
ChangeRequestTemplateStakeHolders
(
BaseStakeholder
):
class
ChangeRequestTemplateStakeHolders
(
BaseStakeholder
):
code
=
models
.
CharField
(
code
=
models
.
CharField
(
unique
=
True
,
unique
=
True
,
...
@@ -553,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
...
@@ -553,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
on_delete
=
models
.
DO_NOTHING
,
on_delete
=
models
.
DO_NOTHING
,
to_field
=
'template_no'
,
to_field
=
'template_no'
,
related_name
=
'tmp_stakes'
)
related_name
=
'tmp_stakes'
)
archived_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_stakeholders'
db_table
=
'change_request_template_stakeholders'
...
@@ -568,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
...
@@ -568,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
self
.
code
=
code
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
created
=
datetime
.
now
()
self
.
save
()
self
.
save
()
def
delete
(
self
):
self
.
archived_at
=
datetime
.
utcnow
self
.
save
()
class
ChangeRequestTemplateAttachments
(
BaseAttachment
):
class
ChangeRequestTemplateAttachments
(
BaseAttachment
):
...
@@ -579,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
...
@@ -579,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
on_delete
=
models
.
DO_NOTHING
,
on_delete
=
models
.
DO_NOTHING
,
to_field
=
'template_no'
,
to_field
=
'template_no'
,
related_name
=
'tmp_attachments'
)
related_name
=
'tmp_attachments'
)
archived_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_attachments'
db_table
=
'change_request_template_attachments'
...
@@ -594,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
...
@@ -594,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
self
.
code
=
code
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
created
=
datetime
.
now
()
self
.
save
()
self
.
save
()
def
delete
(
self
):
self
.
archived_at
=
datetime
.
utcnow
self
.
save
()
class
ChangeRequestTemplateDetails
(
BaseDetails
):
class
ChangeRequestTemplateDetails
(
BaseDetails
):
...
@@ -605,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails):
...
@@ -605,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails):
on_delete
=
models
.
DO_NOTHING
,
on_delete
=
models
.
DO_NOTHING
,
to_field
=
'template_no'
,
to_field
=
'template_no'
,
related_name
=
'tmp_details'
)
related_name
=
'tmp_details'
)
archived_at
=
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_details'
db_table
=
'change_request_template_details'
...
@@ -620,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails):
...
@@ -620,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails):
self
.
code
=
code
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
created
=
datetime
.
now
()
self
.
save
()
self
.
save
()
def
delete
(
self
):
self
.
archived_at
=
datetime
.
utcnow
self
.
save
()
'''
'''
*****
*****
...
@@ -666,6 +685,8 @@ class ChangeRequestFormHeader(BaseHeader):
...
@@ -666,6 +685,8 @@ class ChangeRequestFormHeader(BaseHeader):
max_length
=
255
,
max_length
=
255
,
null
=
True
,
null
=
True
,
blank
=
True
)
blank
=
True
)
requested_to_template_id
=
models
.
CharField
(
max_length
=
255
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_form_headers'
db_table
=
'change_request_form_headers'
...
@@ -840,7 +861,10 @@ class ChangeRequestHistory(AuditClass):
...
@@ -840,7 +861,10 @@ class ChangeRequestHistory(AuditClass):
(
tag
.
value
,
tag
.
value
)
for
tag
in
enums
.
CREntitiesEnum
],
(
tag
.
value
,
tag
.
value
)
for
tag
in
enums
.
CREntitiesEnum
],
default
=
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
default
=
enums
.
CREntitiesEnum
.
CR_FRM_HEADER
.
value
,
max_length
=
50
)
max_length
=
50
)
form_code
=
models
.
IntegerField
()
form_code
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
,
null
=
True
)
fromValue
=
models
.
TextField
(
blank
=
True
,
null
=
True
)
fromValue
=
models
.
TextField
(
blank
=
True
,
null
=
True
)
toValue
=
models
.
TextField
(
blank
=
True
,
null
=
True
)
toValue
=
models
.
TextField
(
blank
=
True
,
null
=
True
)
...
...
requirements/RMSv2.postman_collection_091319
0 → 100644
View file @
4695d626
{
"info": {
"_postman_id": "8f54e04b-ae4d-49cc-a560-1e7f94f5313d",
"name": "RMSv2",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Access Token",
"item": [
{
"name": "current-user",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "e53b51ddf459852812a56435aaea934d107cde82",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/auth/current-user/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"current-user",
""
]
}
},
"response": []
},
{
"name": "Login",
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTU2OTM5MDI4LCJlbWFpbCI6IiJ9.eAA6vSTOhrto5yfy3IQsCdR7iaZxfApNcvdJsFdFmsc",
"type": "text",
"disabled": true
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "username",
"value": "superuser",
"type": "text"
},
{
"key": "password",
"value": "password123",
"type": "text"
}
]
},
"url": {
"raw": "http://localhost:8000/api/v1/auth/login/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"login",
""
]
}
},
"response": []
}
]
},
{
"name": "Management",
"item": [
{
"name": "Application Management",
"item": [
{
"name": "List of Applications",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
""
]
}
},
"response": []
},
{
"name": "View Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Assets Management System\",\n\t\"app_code\": \"AMS\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
""
]
}
},
"response": []
},
{
"name": "Edit Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"rms2\",\n\t\"app_code\": \"rms\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"1",
""
]
}
},
"response": []
},
{
"name": "Delete Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"rms2\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"3",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Companies Management",
"item": [
{
"name": "List of Companies",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
""
]
}
},
"response": []
},
{
"name": "View Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Oneberry\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
""
]
}
},
"response": []
},
{
"name": "Edit Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"TIR2\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/4/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"4",
""
]
}
},
"response": []
},
{
"name": "Delete Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"TIR2\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/4/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"4",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Department Management",
"item": [
{
"name": "List of Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
""
]
}
},
"response": []
},
{
"name": "View Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Super User\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
""
]
}
},
"response": []
},
{
"name": "Edit Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Business Developments\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/2/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"2",
""
]
}
},
"response": []
},
{
"name": "Delete Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Business Developments\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/2/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"2",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Module Management",
"item": [
{
"name": "List of Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
""
]
}
},
"response": []
},
{
"name": "View Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/5/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"5",
""
]
}
},
"response": []
},
{
"name": "Create Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"User Management\",\n \"parent\": 0,\n \"sort_id\": 6,\n \"application\": 1\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
""
]
}
},
"response": []
},
{
"name": "Edit Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Assets NVM\",\n \"parent\": 10,\n \"sort_id\": 1,\n \"application\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/12/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"12",
""
]
}
},
"response": []
},
{
"name": "Edit Module Copy",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Assets NVM\",\n \"parent\": 10,\n \"sort_id\": 1,\n \"application\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/12/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"12",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "User",
"item": [
{
"name": "List of Users",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/users/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"users",
""
]
}
},
"response": []
},
{
"name": "View Users",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Create User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Kath\",\r\n\t\"username\": \"kath\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/users/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"users",
""
]
}
},
"response": []
},
{
"name": "Edit User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Ritas\",\r\n\t\"username\": \"OBRITA\",\r\n\t\"password\": \"password123\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Change Password",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Ritas\",\r\n\t\"username\": \"OBRITA\",\r\n\t\"password\": \"password123\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Delete User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
]
},
{
"name": "Change Request",
"item": [
{
"name": "CR Templates",
"item": [
{
"name": "CR Template Header",
"item": [
{
"name": "Template Header Post",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"requested_to_template_name\": \"Sample Template\",\r\n\t\"requested_to_template_id\": \"JTC\",\r\n\t\"requested_to_objective\": \"Sample Objective\",\r\n\t\"requested_to_target_date\": \"10\",\r\n\t\"requested_to_priority\": \"High\",\r\n\t\"description\": \"sample description\",\r\n\t\"created_by_department\": \"Super User\",\r\n\t\"created_by_user\": \"USER-20190913-0000006\",\r\n\t\"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n\t\"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n\t\"requested_to_user\": \"USER-20190913-0000007\",\r\n\t\r\n\t\r\n\t\"tmp_approvers\": [{\r\n\t\t\t\"level\": \"1\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"level\": \"2\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_stakes\": [{\r\n\t\t\t\"delegation\": \"Mandatory Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"delegation\": \"Stake Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_attachments\": [{\r\n\t\t\t\"attachment_type\": \"Hello\",\r\n\t\t\t\"attachment_name\": \"heyu\",\r\n\t\t\t\"file_name\": \"Sample\",\r\n\t\t\t\"description\": \"Sameple Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"Hello\",\r\n\t\t\t\"attachment_name\": \"heyu\",\r\n\t\t\t\"file_name\": \"Sample\",\r\n\t\t\t\"description\": \"Sameple Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_details\": [{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\"\r\n\t\t}\r\n\t]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-post/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-post",
""
]
}
},
"response": []
},
{
"name": "List of Templates",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
""
]
}
},
"response": []
},
{
"name": "View Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190911-0000001",
""
]
}
},
"response": []
},
{
"name": "Edit Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"template_no\": \"TMP-20190911-0000001\",\r\n \"requested_to_template_name\": \"Sample Template\",\r\n \"requested_to_objective\": \"hello objective\",\r\n \"requested_to_target_date\": \"2019-09-03T13:59:29.694560\",\r\n \"requested_to_priority\": \"High\",\r\n \"description\": \"sample description\",\r\n \"archived_at\": \"2019-09-11T18:59:09.296883\",\r\n \"requested_to_template_id\": \"temp\",\r\n \"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n \"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n \"requested_to_user\": \"USER-20190909-0000005\",\r\n \"created_by_user\": \"USER-20190909-0000005\",\r\n \"created_by_department\": \"admin\",\r\n \r\n \"tmp_approvers\": [\r\n {\r\n \"id\": 1,\r\n \"level\": \"1\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-11T18:59:09.509901\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPAPR-20190911-0000001\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"level\": \"2\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-11T18:59:09.607909\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPAPR-20190911-0000002\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_stakes\": [\r\n {\r\n \"id\": 1,\r\n \"delegation\": \"Mandatory Approver\",\r\n \"created\": \"2019-09-11T18:59:09.618924\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPSTK-20190911-0000001\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"delegation\": \"Stake Approver\",\r\n \"created\": \"2019-09-11T18:59:09.619886\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPSTK-20190911-0000002\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_attachments\": [\r\n {\r\n \"id\": 1,\r\n \"attachment_type\": \"Hello\",\r\n \"attachment_name\": \"heyu\",\r\n \"file_name\": \"Sample\",\r\n \"description\": \"Sameple Desc\",\r\n \"file_upload\": null,\r\n \"created\": \"2019-09-11T18:59:09.631923\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPATCH-20190911-0000001\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"attachment_type\": \"Hello\",\r\n \"attachment_name\": \"heyu\",\r\n \"file_name\": \"Sample\",\r\n \"description\": \"Sameple Desc\",\r\n \"file_upload\": null,\r\n \"created\": \"2019-09-11T18:59:09.674881\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPATCH-20190911-0000002\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_details\": [\r\n {\r\n \"id\": 1,\r\n \"field_idx\": \"Hello\",\r\n \"field_ref\": \"heyu\",\r\n \"field_val\": \"Sample\",\r\n \"field_props\": \"Sameple Desc\",\r\n \"created\": \"2019-09-11T18:59:09.684922\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPDETAIL-20190911-0000001\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"field_idx\": \"Hello\",\r\n \"field_ref\": \"heyu\",\r\n \"field_val\": \"Sample\",\r\n \"field_props\": \"Sameple Desc\",\r\n \"created\": \"2019-09-11T18:59:09.685887\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPDETAIL-20190911-0000002\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190911-0000001",
""
]
}
},
"response": []
},
{
"name": "Archive Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/archived/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"archived",
""
]
}
},
"response": []
},
{
"name": "Retrieve Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190909-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190909-0000002",
""
]
}
},
"response": []
},
{
"name": "Delete Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "9a1e3cb331a5191193365413058dcec1ad8fb42a",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190909-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190909-0000002",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Approver",
"item": [
{
"name": "List of Approvers",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-approvers/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-approvers",
""
]
}
},
"response": []
},
{
"name": "View Approver",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-approvers/TMPAPR-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-approvers",
"TMPAPR-20190911-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Stakeholder",
"item": [
{
"name": "List of Stakeholders",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-stakeholders/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-stakeholders",
""
]
}
},
"response": []
},
{
"name": "View Stakeholder",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-stakeholders/TMPSTK-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-stakeholders",
"TMPSTK-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Attachment",
"item": [
{
"name": "List of Attachments",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-attachments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-attachments",
""
]
}
},
"response": []
},
{
"name": "View Attachment",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-attachments/TMPATCH-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-attachments",
"TMPATCH-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Detail",
"item": [
{
"name": "List of Details",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-details/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-details",
""
]
}
},
"response": []
},
{
"name": "View Detail",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-details/TMPDETAIL-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-details",
"TMPDETAIL-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Forms",
"item": [
{
"name": "CR Form Header",
"item": [
{
"name": "Create Form Header",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"requested_to_template_name\": \"Sample Template\",\r\n\t\"requested_to_template_id\": \"gg\",\r\n\t\"requested_to_objective\": \"hello objective\",\r\n\t\"requested_to_target_date\": \"2019-09-03 13:59:29.694560\",\r\n\t\"requested_to_priority\": \"High\",\r\n\t\"description\": \"sample description\",\r\n\t\"status\": \"Pending\",\r\n\t\"company_desc\": \"Oneberry\",\r\n\t\"department_desc\": \"Oneberry Superuser\",\r\n\t\"requested_desc\": \"Super User\",\r\n\t\"old_form_code\": \"\",\r\n\t\"requested_by_department\": \"admin\",\r\n\t\"requested_by_user\": \"USER-20190911-0000005\",\r\n\t\"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n\t\"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n\t\"requested_to_user\": \"USER-20190911-0000005\",\r\n\t\"template_no\": \"TMP-20190911-0000003\",\r\n\t\r\n\t\"frm_approvers\": [{\r\n\t\t\t\"level\": \"1\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"remarks\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"action\": \"Approved\",\r\n\t\t\t\"date_sent\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"tmp_approver\": \"TMPAPR-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"level\": \"2\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"remarks\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"action\": \"Approved\",\r\n\t\t\t\"date_sent\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"tmp_approver\": \"TMPAPR-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_stakes\": [{\r\n\t\t\t\"date_added\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"delegation\": \"Mandatory Stakeholder\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_stake\": \"TMPSTK-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"date_added\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"delegation\": \"Mandatory Stakeholder\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_stake\": \"TMPSTK-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_attachments\": [{\r\n\t\t\t\"attachment_type\": \"Mandatory Attache\",\r\n\t\t\t\"attachment_name\": \"Mandatory Stakeholder\",\r\n\t\t\t\"file_name\": \"sss\",\r\n\t\t\t\"description\": \"Sample Desc 1\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_attach\": \"TMPATCH-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"Mandatory Attache 2\",\r\n\t\t\t\"attachment_name\": \"Mandatory Stakeholder\",\r\n\t\t\t\"file_name\": \"Sample Desc 2\",\r\n\t\t\t\"description\": \"Sample Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_attach\": \"TMPATCH-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_details\": [{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\",\r\n\t\t\t\"tmp_detail\": \"TMPDETAIL-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\",\r\n\t\t\t\"tmp_detail\": \"TMPDETAIL-20190911-0000006\"\r\n\t\t}\r\n\t]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-post/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-post",
""
]
}
},
"response": []
},
{
"name": "List of Forms",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "f19b85056e3e3e7c095239f6701cb2ef4f7eeb09",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
""
]
}
},
"response": []
},
{
"name": "View Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
""
]
}
},
"response": []
},
{
"name": "Edit Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"requested_to_template_name\": \"Sample Templates\",\r\n \"requested_to_template_id\": \"Samp\",\r\n \"requested_to_objective\": \"hello objective\",\r\n \"requested_to_target_date\": \"2019-09-03T13:59:29.694560\",\r\n \"requested_to_priority\": \"High\",\r\n \"description\": \"sample description\",\r\n \"form_code\": \"FRM-20190909-0000006\",\r\n \"cancel_date\": null,\r\n \"status\": \"Pending\",\r\n \"company_desc\": \"Oneberry\",\r\n \"department_desc\": \"Oneberry Superuser\",\r\n \"requested_desc\": \"Super User\",\r\n \"old_form_code\": \"\",\r\n \"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n \"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n \"requested_to_user\": \"USER-20190909-0000005\",\r\n \"requested_by_user\": \"USER-20190909-0000005\",\r\n \"requested_by_department\": \"admin\",\r\n \"template_no\": \"TMP-20190909-0000001\",\r\n \"action\": \"No\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190909-0000006/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190909-0000006",
""
]
}
},
"response": []
},
{
"name": "Delete Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190909-0000006/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190909-0000006",
""
]
}
},
"response": []
},
{
"name": "Re Route for Approval",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "67f8d147a33e90055f19a47bc60ad559e4b556e7",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/re_route/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
"re_route",
""
]
}
},
"response": []
},
{
"name": "Resubmit",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "22259ad4dd11ee87dd0735366694979dc419228f",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/re_submit/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
"re_submit",
""
]
}
},
"response": []
},
{
"name": "CR Action",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "6fb3fbceeab432bbe8102481c2fdf11db55dbf72",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"id\": 1,\r\n \"level\": \"1\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-10T17:21:10.794834\",\r\n \"deleted_at\": null,\r\n \"code\": \"FRMAPR-20190910-0000001\",\r\n \"remarks\": \"Approver\",\r\n \"action\": \"Approved\",\r\n \"date_sent\": \"2019-09-03T13:59:29.694560\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"form_code\": \"FRM-20190910-0000001\",\r\n \"tmp_approver\": \"TMPAPR-20190910-0000001\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/approved/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
"approved",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Approver",
"item": [
{
"name": "List of Approvers",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "6fb3fbceeab432bbe8102481c2fdf11db55dbf72",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
""
]
}
},
"response": []
},
{
"name": "View Approver",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/TMPAPR-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
"TMPAPR-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Stakeholder",
"item": [
{
"name": "List of Stakeholders",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-stakeholders/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-stakeholders",
""
]
}
},
"response": []
},
{
"name": "View Stakeholder",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-stakeholders/TMPSTK-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-stakeholders",
"TMPSTK-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Attachment",
"item": [
{
"name": "List of Attachments",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-attachments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-attachments",
""
]
}
},
"response": []
},
{
"name": "View Attachment",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"attachment_type\": \"Mandatory Attached\",\r\n \"attachment_name\": \"Mandatory Stakeholder\",\r\n \"file_name\": \"USER-20190909-0000005\",\r\n \"description\": \"Sample Desc 1\",\r\n \"file_upload\": null,\r\n \"code\": \"FRMATCH-20190909-0000001\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"form_code\": \"FRM-20190909-0000005\",\r\n \"tmp_attach\": \"TMPATCH-20190909-0000001\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-attachments/FRMATCH-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-attachments",
"FRMATCH-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Detail",
"item": [
{
"name": "List of Details",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-details/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-details",
""
]
}
},
"response": []
},
{
"name": "View Detail",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-details/FRMDETAIL-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-details",
"FRMDETAIL-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
],
"_postman_isSubFolder": true
}
]
},
{
"name": "Notifications",
"item": [
{
"name": "List Notifications by account_no",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://localhost:8000/api/v1/management/notifications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"notifications",
""
]
}
},
"response": []
},
{
"name": "Create Notification",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "37d5c7c08f82cc0f8a3a73634d3b6a78ead3da37",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"form_header_code\": \"FRM-20190902-000001\",\n \"notif_type\": \"ACTIVITY\",\n \"message\": \"Oneberry CCTV Replacement Request due in 5 days\",\n \"is_read\": false,\n \"app\": \"APP-20190903-0000002\",\n \"account_no\": \"USER-20190904-0000002\",\n \"sender_account_no\": \"USER-20190904-0000002\"\n}"
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com:7020/api/v1/notifications/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"port": "7020",
"path": [
"api",
"v1",
"notifications",
""
]
}
},
"response": []
},
{
"name": "Update Read Status by ids",
"request": {
"auth": {
"type": "basic",
"basic": [
{
"key": "password",
"value": "password123",
"type": "string"
},
{
"key": "username",
"value": "admin",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"ids\": [8]\n}"
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com/api/v1/notifications/USER-20190903-0000002/seen/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"path": [
"api",
"v1",
"notifications",
"USER-20190903-0000002",
"seen",
""
]
}
},
"response": []
},
{
"name": "Update Read Status by account_no",
"request": {
"auth": {
"type": "basic",
"basic": [
{
"key": "password",
"value": "password123",
"type": "string"
},
{
"key": "username",
"value": "admin",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com/api/v1/notifications/USER-20190903-0000002/seenall/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"path": [
"api",
"v1",
"notifications",
"USER-20190903-0000002",
"seenall",
""
]
}
},
"response": []
}
]
}
]
}
\ No newline at end of file
requirements/local.txt
View file @
4695d626
...
@@ -19,6 +19,7 @@ Django==2.2
...
@@ -19,6 +19,7 @@ Django==2.2
django-cors-headers==2.5.2
django-cors-headers==2.5.2
django-filter==2.1.0
django-filter==2.1.0
djangorestframework==3.9.2
djangorestframework==3.9.2
drf-writable-nested==0.5.1
gevent==1.4.0
gevent==1.4.0
greenlet==0.4.15
greenlet==0.4.15
hiredis==1.0.0
hiredis==1.0.0
...
...
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