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
2eb8ab09
Commit
2eb8ab09
authored
Jan 15, 2020
by
John Red Medrano
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'product-dev' of
http://42.61.118.105:7990/scm/rms/api-main-service
into red-develop
parents
1d8318e4
eba39661
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
373 additions
and
58 deletions
+373
-58
app/applicationlayer/cms/form/header/views.py
app/applicationlayer/cms/form/header/views.py
+1
-58
app/applicationlayer/cms/form/onbehalf/serializers.py
app/applicationlayer/cms/form/onbehalf/serializers.py
+176
-0
app/applicationlayer/cms/form/onbehalf/table_filters.py
app/applicationlayer/cms/form/onbehalf/table_filters.py
+9
-0
app/applicationlayer/cms/form/onbehalf/views.py
app/applicationlayer/cms/form/onbehalf/views.py
+183
-0
app/applicationlayer/cms/urls_cms.py
app/applicationlayer/cms/urls_cms.py
+4
-0
No files found.
app/applicationlayer/cms/form/header/views.py
View file @
2eb8ab09
...
...
@@ -390,7 +390,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
)
# queryset = self.get_serializer_class().setup_eager_loading(self.queryset)
# models.Notification.objects.filter(
...
...
@@ -1154,63 +1154,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
@
action
(
detail
=
False
,
methods
=
[
'get'
],
url_path
=
'onbehalf'
,
name
=
"List of Actions on Behalf"
)
def
list_by_onbehalf_view
(
self
,
request
):
self
.
serializer_class
=
ChangeRequestFormHeaderSerializerList
behalf_user
=
self
.
request
.
user
.
code
user_active_included
=
[]
active_users
=
models
.
ChangeRequestSettings
.
objects
.
filter
(
behalf_user
=
behalf_user
)
for
active_user
in
active_users
:
user_active_included
.
append
(
active_user
.
active_user
.
code
)
self
.
queryset
=
change_request
.
list_by_onbehalf_without_dept
(
user_active_included
)
self
.
queryset
=
change_request
.
filter_onbehalf_crlist
(
self
.
queryset
,
user_active_included
)
self
.
queryset
=
change_request
.
filter_base
(
self
.
queryset
,
request
.
query_params
.
get
(
'company_requested_to'
),
request
.
query_params
.
get
(
'department_requested_to'
),
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
request
.
query_params
.
get
(
'form_type'
),
)
queryset
=
self
.
filter_queryset
(
self
.
queryset
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
message
=
status_message_response
(
200
,
'success'
,
'List of Change Request Forms for on behalf found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
class
ChangeRequestFormPost
(
APIView
):
...
...
app/applicationlayer/cms/form/onbehalf/serializers.py
0 → 100644
View file @
2eb8ab09
from
app.entities
import
models
from
rest_framework
import
serializers
from
app.applicationlayer.utils
import
model_to_dict
from
django.db.models
import
Q
from
app.applicationlayer.cms.form.approver.serializers
import
ChangeRequestFormApproversSerializer
from
app.applicationlayer.cms.form.stakeholder.serializers
import
ChangeRequestFormStakeHoldersSerializer
from
app.applicationlayer.cms.form.details.serializers
import
ChangeRequestFormDetailsSerializer
from
app.applicationlayer.cms.form.attachment.serializers
import
ChangeRequestFormAttachmentsSerializer
class
ChangeRequestFormHeaderSerializer
(
serializers
.
ModelSerializer
):
frm_approvers
=
ChangeRequestFormApproversSerializer
(
many
=
True
,
read_only
=
True
)
frm_stakes
=
ChangeRequestFormStakeHoldersSerializer
(
many
=
True
,
read_only
=
True
)
frm_attachments
=
ChangeRequestFormAttachmentsSerializer
(
many
=
True
,
read_only
=
True
)
frm_details
=
ChangeRequestFormDetailsSerializer
(
many
=
True
,
read_only
=
True
)
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
user
=
self
.
context
[
'request'
]
.
user
id_number
=
user
.
code
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
ret
[
'form_code'
])
&
Q
(
is_action
=
True
)
&
Q
(
user
=
id_number
)
)
.
order_by
(
'level'
)
if
current_level
.
count
()
>
0
:
# and current_level[0].user.code == id_number
if
instance
.
status
.
lower
()
==
'rejected'
:
approver
=
'No'
elif
instance
.
status
.
lower
()
==
'cancelled'
:
approver
=
'No'
elif
instance
.
status
.
lower
()
==
'completed & accepted'
:
approver
=
'No'
else
:
approver
=
'Yes'
else
:
approver
=
'No'
ret
[
'action_required'
]
=
approver
requested_to_user
=
{
"id"
:
instance
.
requested_to_user
.
id
,
"name"
:
instance
.
requested_to_user
.
name
,
"username"
:
instance
.
requested_to_user
.
username
,
"code"
:
instance
.
requested_to_user
.
code
,
"email"
:
instance
.
requested_to_user
.
email
,
"contact_no"
:
instance
.
requested_to_user
.
contact_no
}
requested_by_user
=
{
"id"
:
instance
.
requested_by_user
.
id
,
"name"
:
instance
.
requested_by_user
.
name
,
"username"
:
instance
.
requested_by_user
.
username
,
"code"
:
instance
.
requested_by_user
.
code
,
"email"
:
instance
.
requested_by_user
.
email
,
"contact_no"
:
instance
.
requested_by_user
.
contact_no
}
ret
[
'requested_to_company'
]
=
{
"id"
:
instance
.
requested_to_company
.
id
,
"code"
:
instance
.
requested_to_company
.
code
,
"name"
:
instance
.
requested_to_company
.
name
}
ret
[
'requested_to_department'
]
=
{
"id"
:
instance
.
requested_to_department
.
id
,
"code"
:
instance
.
requested_to_department
.
code
,
"name"
:
instance
.
requested_to_department
.
name
}
ret
[
'requested_to_user'
]
=
requested_to_user
ret
[
'requested_by_user'
]
=
requested_by_user
ret
[
'requested_by_department'
]
=
{
"id"
:
instance
.
requested_by_department
.
id
,
"code"
:
instance
.
requested_by_department
.
code
,
"name"
:
instance
.
requested_by_department
.
name
}
ret
[
'template_object'
]
=
model_to_dict
(
instance
.
template_no
)
return
ret
except
Exception
as
e
:
ret
[
'action_required'
]
=
"None"
ret
[
'requested_to_company'
]
=
"None"
ret
[
'requested_to_department'
]
=
"None"
ret
[
'requested_to_user'
]
=
"None"
ret
[
'requested_by_user'
]
=
"None"
ret
[
'requested_by_department'
]
=
"None"
ret
[
'template_object'
]
=
"None"
return
ret
class
Meta
:
model
=
models
.
ChangeRequestFormHeader
fields
=
(
'form_code'
,
'requested_to_template_name'
,
'requested_to_objective'
,
'requested_to_target_date'
,
'requested_to_priority'
,
'description'
,
'created'
,
'cancel_date'
,
'status'
,
'requested_to_template_id'
,
'requested_to_company'
,
'requested_to_department'
,
'requested_to_user'
,
'requested_by_user'
,
'requested_by_department'
,
'template_no'
,
'frm_approvers'
,
'frm_stakes'
,
'frm_attachments'
,
'frm_details'
)
read_only_fields
=
[
'created'
,
'form_code'
]
class
ChangeRequestFormHeaderSerializerList
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
try
:
user
=
self
.
context
[
'request'
]
.
user
id_number
=
user
.
code
current_level
=
models
.
ChangeRequestFormApprovers
.
objects
.
filter
(
Q
(
form_code
=
ret
[
'form_code'
])
&
Q
(
is_action
=
True
)
&
Q
(
user
=
id_number
)
)
.
order_by
(
'level'
)
if
current_level
.
count
()
>
0
:
if
instance
.
status
.
lower
()
==
'rejected'
:
approver
=
'No'
elif
instance
.
status
.
lower
()
==
'cancelled'
:
approver
=
'No'
elif
instance
.
status
.
lower
()
==
'completed & accepted'
:
approver
=
'No'
else
:
approver
=
'Yes'
else
:
approver
=
'No'
ret
[
'action_required'
]
=
approver
ret
[
'company'
]
=
instance
.
requested_to_company
.
name
ret
[
'department'
]
=
instance
.
requested_to_department
.
name
ret
[
'requested_by'
]
=
instance
.
requested_by_user
.
name
if
instance
.
status
.
lower
()
==
'draft'
:
existing_transaction
=
models
.
ChangeRequestHistory
.
objects
.
filter
(
form_code
=
instance
.
form_code
)
if
existing_transaction
.
count
()
>
0
:
can_delete
=
False
else
:
can_delete
=
True
# hard delete
elif
instance
.
status
.
lower
()
==
'cancelled'
:
can_delete
=
False
else
:
can_delete
=
None
ret
[
'can_delete'
]
=
can_delete
return
ret
except
Exception
as
e
:
ret
[
'action_required'
]
=
"No"
ret
[
'company'
]
=
"None"
ret
[
'department'
]
=
"None"
ret
[
'requested_by'
]
=
"None"
return
ret
class
Meta
:
model
=
models
.
ChangeRequestFormHeader
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'form_code'
]
\ No newline at end of file
app/applicationlayer/cms/form/onbehalf/table_filters.py
0 → 100644
View file @
2eb8ab09
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
ChangeRequestFormHeader
class
HeaderFilterSet
(
filters
.
FilterSet
):
class
Meta
:
model
=
ChangeRequestFormHeader
fields
=
'__all__'
\ No newline at end of file
app/applicationlayer/cms/form/onbehalf/views.py
0 → 100644
View file @
2eb8ab09
import
configparser
import
shutil
import
os
from
django.shortcuts
import
render
from
rest_framework
import
viewsets
from
rest_framework.views
import
APIView
from
app.entities
import
models
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
,
status_message_response
,
send_broadcast_message
)
from
app.businesslayer.changerequest
import
change_request
from
app.applicationlayer.cms.utils_cr
import
(
number_generator
,
send_mail_requestor
,
next_approver_email
,
crhistory_save
,
send_mail_vendor
,
get_max_batchno
,
generate_template_id
,
crhistory_create_save
,
entity_log_bulk
,
reminder_trigger_save
,
overdue_trigger_save
,
reset_autoemail_tables
)
from
app.entities
import
enums
from
app.applicationlayer.utils
import
model_to_dict
import
json
from
django.shortcuts
import
get_object_or_404
from
django.db.models
import
Min
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
)
from
rest_framework.exceptions
import
ParseError
from
app.businesslayer.changerequest.change_request
import
(
form_add_edit_delete
)
from
app.applicationlayer.cms.form.approver.serializers
import
ChangeRequestFormApproversSerializer
from
app.applicationlayer.cms.form.stakeholder.serializers
import
ChangeRequestFormStakeHoldersSerializer
from
app.applicationlayer.cms.form.details.serializers
import
ChangeRequestFormDetailsSerializer
from
app.applicationlayer.cms.form.attachment.serializers
import
(
ChangeRequestFormAttachmentsFileUploadSerializer
,
ChangeRequestFormAttachmentsSerializer
)
from
app.applicationlayer.cms.form.header.serializers
import
(
ChangeRequestFormHeaderSerializer
,
ChangeRequestFormHeaderSerializerList
)
from
app.applicationlayer.cms.form.header.table_filters
import
HeaderFilterSet
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
django_filters
import
rest_framework
as
filters
from
django_filters.rest_framework
import
DjangoFilterBackend
import
json
from
app.applicationlayer.utils
import
main_threading
from
django.core.files.base
import
ContentFile
from
django.conf
import
settings
from
io
import
BytesIO
from
django.http
import
HttpResponse
from
xhtml2pdf
import
pisa
config
=
configparser
.
ConfigParser
()
config_file
=
os
.
path
.
join
(
'./'
,
'env.ini'
)
config
.
read
(
config_file
)
APPROVER_MESSAGE
=
settings
.
APPROVER_MESSAGE
REQUESTOR_MESSAGE
=
settings
.
REQUESTOR_MESSAGE
REQUESTOR_REJECT_MESSAGE
=
settings
.
REQUESTOR_REJECT_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE
=
settings
.
VENDOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE
=
settings
.
REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_COMPLETION_MESSAGE
=
settings
.
REQUESTOR_COMPLETION_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE
=
settings
.
VENDOR_ACCEPTANCE_MESSAGE
VENDOR_REJECT_MESSAGE
=
settings
.
VENDOR_REJECT_MESSAGE
class
ChangeRequestFormsViewset
(
viewsets
.
ModelViewSet
):
queryset
=
models
.
ChangeRequestFormHeader
.
objects
.
select_related
(
'requested_by_user'
,
'requested_by_department'
,
'template_no'
)
.
all
()
serializer_class
=
ChangeRequestFormHeaderSerializer
pagination_class
=
CustomPagination
lookup_field
=
'form_code'
filter_backends
=
(
DjangoFilterBackend
,
SearchFilter
,
OrderingFilter
)
filterset_class
=
HeaderFilterSet
ordering_fields
=
(
'form_code'
,
'requested_to_template_id'
,
'requested_to_user__name'
,
'requested_to_department__company__name'
,
'requested_to_department__name'
,
'requested_by_user__name'
,
'status'
,
'requested_to_priority'
,
'created'
,
'requested_to_target_date'
)
search_fields
=
(
"form_code"
,
"status"
,
"requested_to_template_id"
,
"requested_by_user__name"
,
"requested_by_user__code"
,
"requested_by_department__name"
,
"requested_to_company__name"
,
"requested_to_department__name"
,
"requested_to_user__name"
,
"requested_to_template_name"
,
"requested_to_objective"
,
"requested_to_priority"
,
"description"
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
ChangeRequestFormHeaderSerializerList
behalf_user
=
self
.
request
.
user
.
code
user_active_included
=
[]
active_users
=
models
.
ChangeRequestSettings
.
objects
.
filter
(
behalf_user
=
behalf_user
)
for
active_user
in
active_users
:
user_active_included
.
append
(
active_user
.
active_user
.
code
)
self
.
queryset
=
change_request
.
list_by_onbehalf_without_dept
(
user_active_included
)
self
.
queryset
=
change_request
.
filter_onbehalf_crlist
(
self
.
queryset
,
user_active_included
)
self
.
queryset
=
change_request
.
filter_base
(
self
.
queryset
,
request
.
query_params
.
get
(
'company_requested_to'
),
request
.
query_params
.
get
(
'department_requested_to'
),
request
.
query_params
.
get
(
'date_modified_from'
),
request
.
query_params
.
get
(
'date_modified_to'
),
request
.
query_params
.
get
(
'date_required_from'
),
request
.
query_params
.
get
(
'date_required_to'
),
request
.
query_params
.
get
(
'form_type'
),
)
queryset
=
self
.
filter_queryset
(
self
.
queryset
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
message
=
status_message_response
(
200
,
'success'
,
'List of Change Request Forms for on behalf found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
id_number
=
self
.
request
.
user
.
code
form_code
=
kwargs
[
'form_code'
]
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
app/applicationlayer/cms/urls_cms.py
View file @
2eb8ab09
...
...
@@ -47,6 +47,8 @@ from app.applicationlayer.cms.auto_email import reminder, overdue, cancel
from
app.applicationlayer.cms.form.download
import
views
as
dl
from
app.applicationlayer.cms.form.onbehalf
import
views
as
onbehalf
router
=
routers
.
DefaultRouter
()
router
.
register
(
r'template'
,
header
.
ChangeRequestTemplatesViewset
)
...
...
@@ -63,6 +65,8 @@ router.register(r'form-details', detailsform.ChangeRequestFormDetailsViewset)
router
.
register
(
r'form-download'
,
dl
.
DownloadRequest
)
router
.
register
(
r'form-onbehalf'
,
onbehalf
.
ChangeRequestFormsViewset
)
# privilege CMS
router
.
register
(
r'allowed-companies'
,
allowed
.
AllowedCompanyViewSet
)
router
.
register
(
r'cms-settings'
,
cms_settings
.
CMSSettingsViewSet
)
...
...
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