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
125712fa
You need to sign in or sign up before continuing.
Commit
125712fa
authored
Nov 12, 2019
by
John Red Medrano
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'RMSv2' of
http://42.61.118.105:7990/scm/rms/api-main-service
into red-develop
parents
5d5bd544
b66982e3
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
293 additions
and
45 deletions
+293
-45
app/applicationlayer/cms/master/template/default_approver/serializer.py
...nlayer/cms/master/template/default_approver/serializer.py
+21
-0
app/applicationlayer/cms/master/template/default_approver/table_filter.py
...ayer/cms/master/template/default_approver/table_filter.py
+11
-0
app/applicationlayer/cms/master/template/default_approver/views.py
...cationlayer/cms/master/template/default_approver/views.py
+53
-0
app/applicationlayer/cms/urls_cms.py
app/applicationlayer/cms/urls_cms.py
+2
-0
app/applicationlayer/management/delegation/views.py
app/applicationlayer/management/delegation/views.py
+87
-35
app/applicationlayer/master/department/views.py
app/applicationlayer/master/department/views.py
+4
-4
app/entities/migrations/0034_auto_20191108_1924.py
app/entities/migrations/0034_auto_20191108_1924.py
+18
-0
app/entities/migrations/0035_changerequesttemplateapprovers_is_default.py
...rations/0035_changerequesttemplateapprovers_is_default.py
+18
-0
app/entities/migrations/0036_auto_20191111_1549.py
app/entities/migrations/0036_auto_20191111_1549.py
+18
-0
app/entities/migrations/0037_auto_20191112_1403.py
app/entities/migrations/0037_auto_20191112_1403.py
+24
-0
app/entities/migrations/0038_auto_20191112_1457.py
app/entities/migrations/0038_auto_20191112_1457.py
+24
-0
app/entities/models.py
app/entities/models.py
+13
-6
No files found.
app/applicationlayer/cms/master/template/default_approver/serializer.py
0 → 100644
View file @
125712fa
from
rest_framework
import
serializers
from
app.entities.models
import
User
from
app.applicationlayer.utils
import
model_to_dict
class
DefaultApproverSerializer
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
ret
[
'department'
]
=
model_to_dict
(
instance
.
department
)
ret
[
'company'
]
=
model_to_dict
(
instance
.
department
.
company
)
return
ret
class
Meta
:
model
=
User
fields
=
(
'id'
,
'code'
,
'name'
,
'contact_no'
,
'email'
,
'department'
)
# fields = '__all__'
read_only_fields
=
(
'created'
,
'createdby'
,
'modified'
,
'modifiedby'
,
'code'
,
)
\ No newline at end of file
app/applicationlayer/cms/master/template/default_approver/table_filter.py
0 → 100644
View file @
125712fa
from
django_filters
import
rest_framework
as
filters
from
django.db.models
import
Count
from
app.entities.models
import
User
from
django.db.models
import
Q
class
DefaultApproverFilterSet
(
filters
.
FilterSet
):
class
Meta
:
model
=
User
fields
=
'__all__'
app/applicationlayer/cms/master/template/default_approver/views.py
0 → 100644
View file @
125712fa
from
rest_framework
import
viewsets
,
status
from
rest_framework.response
import
Response
from
app.applicationlayer.utils
import
model_to_dict
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
User
,
AllowedCompany
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
)
from
django_filters.rest_framework
import
DjangoFilterBackend
from
app.applicationlayer.cms.master.template.default_approver
import
serializer
from
app.applicationlayer.cms.master.template.default_approver.table_filter
import
(
DefaultApproverFilterSet
)
from
app.helper.decorators
import
rms
from
django.db.models
import
Q
from
rest_framework.exceptions
import
ParseError
class
DefaultApproverViewSet
(
viewsets
.
ModelViewSet
):
queryset
=
User
.
objects
.
all
()
serializer_class
=
serializer
.
DefaultApproverSerializer
pagination_class
=
CustomPagination
lookup_field
=
'code'
filter_backends
=
(
DjangoFilterBackend
,
SearchFilter
,
OrderingFilter
)
filterset_class
=
DefaultApproverFilterSet
ordering_fields
=
'__all__'
search_fields
=
(
'name'
,
'department__name'
,
'code'
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
department
=
self
.
request
.
query_params
[
'department_code'
]
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
default_user
=
AllowedCompany
.
objects
.
filter
(
Q
(
group_pivots
=
department
)
&
Q
(
approve_cr
=
True
)
)
.
values
(
'id_number'
)
queryset
=
queryset
.
filter
(
code__in
=
default_user
)
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 Default Approvers found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
)
app/applicationlayer/cms/urls_cms.py
View file @
125712fa
...
@@ -12,6 +12,7 @@ from app.applicationlayer.cms.master.template.company.views import ChangeRequest
...
@@ -12,6 +12,7 @@ from app.applicationlayer.cms.master.template.company.views import ChangeRequest
from
app.applicationlayer.cms.master.template.department.views
import
ChangeRequestDepartmentTemplateViewSet
from
app.applicationlayer.cms.master.template.department.views
import
ChangeRequestDepartmentTemplateViewSet
from
app.applicationlayer.cms.master.template.account.views
import
UserListTemplate
from
app.applicationlayer.cms.master.template.account.views
import
UserListTemplate
from
app.applicationlayer.cms.master.template_list.views
import
ChangeRequestTemplateHeaderMaster
from
app.applicationlayer.cms.master.template_list.views
import
ChangeRequestTemplateHeaderMaster
from
app.applicationlayer.cms.master.template.default_approver.views
import
DefaultApproverViewSet
# MASTERS Form
# MASTERS Form
...
@@ -69,6 +70,7 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
...
@@ -69,6 +70,7 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
router
.
register
(
r'template-companies'
,
ChangeRequestCompanyTemplateViewSet
)
router
.
register
(
r'template-companies'
,
ChangeRequestCompanyTemplateViewSet
)
router
.
register
(
r'template-departments'
,
ChangeRequestDepartmentTemplateViewSet
)
router
.
register
(
r'template-departments'
,
ChangeRequestDepartmentTemplateViewSet
)
router
.
register
(
r'allowed-templates'
,
ChangeRequestTemplateHeaderMaster
)
router
.
register
(
r'allowed-templates'
,
ChangeRequestTemplateHeaderMaster
)
router
.
register
(
r'default-approvers'
,
DefaultApproverViewSet
)
# filter endpoints under Allowed Companies table
# filter endpoints under Allowed Companies table
# filter endpoints under Allowed Companies table
# filter endpoints under Allowed Companies table
...
...
app/applicationlayer/management/delegation/views.py
View file @
125712fa
...
@@ -5,7 +5,7 @@ from rest_framework.response import Response
...
@@ -5,7 +5,7 @@ from rest_framework.response import Response
from
app.applicationlayer.utils
import
model_to_dict
from
app.applicationlayer.utils
import
model_to_dict
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
django_filters
import
rest_framework
as
filters
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
Delegation
from
app.entities.models
import
Delegation
,
Department
from
app.applicationlayer.utils
import
(
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
,
log_save
CustomPagination
,
status_message_response
,
log_save
)
)
...
@@ -64,49 +64,101 @@ class DelegationViewSet(viewsets.ModelViewSet):
...
@@ -64,49 +64,101 @@ class DelegationViewSet(viewsets.ModelViewSet):
@
transaction
.
atomic
@
transaction
.
atomic
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
#
instance = self.get_object()
new_instance
=
model_to_dict
(
instance
)
#
new_instance = model_to_dict(instance)
# restrictions
message
=
{
if
(
new_instance
[
'name'
]
.
lower
()
==
'head of department'
or
'code'
:
400
,
new_instance
[
'name'
]
.
lower
()
==
'sd/od'
or
'status'
:
'failed'
,
new_instance
[
'name'
]
.
lower
()
==
'change control board'
or
'message'
:
'Delegation/s cannot delete, Please update instead'
new_instance
[
'name'
]
.
lower
()
==
'approver'
or
}
new_instance
[
'name'
]
.
lower
()
==
'vendor/implementor'
or
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
new_instance
[
'name'
]
.
lower
()
==
'requestor'
):
print
(
"hello"
)
# exist_in_dept = instance.departments.all(
)
self
.
perform_destroy
(
instance
)
# restrictions
# if not exist_in_dept.count() > 0:
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
# print(exist_in_dept)
enums
.
LogEntitiesEnum
.
DELEGATION
.
value
,
new_instance
[
'id'
],
# if not (new_instance['name'].lower() == 'head of department' or
new_instance
,
# new_instance['name'].lower() == 'sd/od' or
''
# new_instance['name'].lower() == 'change control board' or
)
# new_instance['name'].lower() == 'approver' or
# new_instance['name'].lower() == 'vendor/implementor' or
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
# new_instance['name'].lower() == 'requestor'):
# self.perform_destroy(instance)
# log_save(
# enums.LogEnum.DELETED.value,
# enums.LogEntitiesEnum.DELEGATION.value,
# new_instance['id'],
# new_instance,
# ''
# )
# message = {
# 'code': 200,
# 'status': 'success',
# 'message': 'Delegation Successfully deleted'
# }
# return Response(message, status=status.HTTP_200_OK)
# else:
# message = {
# 'code': 400,
# 'status': 'failed',
# 'message': 'Default delegation cannot delete'
# }
# return Response(message, status=status.HTTP_400_BAD_REQUEST)
# else:
# message = {
# 'code': 400,
# 'status': 'failed',
# 'message': 'Cannot delete this delegation due to existing record in department'
# }
# return Response(message, status=status.HTTP_400_BAD_REQUEST)
@
transaction
.
atomic
@
transaction
.
atomic
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
partial
=
kwargs
.
pop
(
'partial'
,
Fals
e
)
partial
=
kwargs
.
pop
(
'partial'
,
Tru
e
)
instance
=
self
.
get_object
()
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
,
data
=
request
.
data
,
partial
=
partial
)
serializer
=
self
.
get_serializer
(
instance
,
data
=
request
.
data
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
# restrictions
if
not
(
old_instance
[
'name'
]
.
lower
()
==
'head of department'
or
log_save
(
old_instance
[
'name'
]
.
lower
()
==
'sd/od'
or
enums
.
LogEnum
.
DELETED
.
value
,
old_instance
[
'name'
]
.
lower
()
==
'change control board'
or
enums
.
LogEntitiesEnum
.
DELEGATION
.
value
,
old_instance
[
'name'
]
.
lower
()
==
'approver'
or
old_instance
[
'id'
],
old_instance
[
'name'
]
.
lower
()
==
'vendor/implementor'
or
old_instance
,
old_instance
[
'name'
]
.
lower
()
==
'requestor'
):
new_instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
DELEGATION
.
value
,
old_instance
[
'id'
],
old_instance
,
new_instance
)
return
Response
(
serializer
.
data
)
else
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
'Default delegation cannot edit'
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
return
Response
(
serializer
.
data
)
app/applicationlayer/master/department/views.py
View file @
125712fa
...
@@ -56,14 +56,14 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet):
...
@@ -56,14 +56,14 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet):
return
Response
(
message
)
return
Response
(
message
)
@
action
(
detail
=
True
,
@
action
(
detail
=
True
,
methods
=
[
'get'
],
methods
=
[
'get'
],
url_path
=
'delegations'
,
url_path
=
'delegations'
,
name
=
"Delegation Filtered List"
)
name
=
"Delegation Filtered List"
)
def
delegations
(
self
,
request
,
*
args
,
**
kwargs
):
def
delegations
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
try
:
dept_code
=
kwargs
[
'code'
]
dept_code
=
kwargs
[
'code'
]
queryset
=
Delegation
.
objects
.
filter
(
department__code
=
dept_code
)
queryset
=
Delegation
.
objects
.
filter
(
department
s
__code
=
dept_code
)
page
=
self
.
paginate_queryset
(
queryset
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
if
page
is
not
None
:
...
...
app/entities/migrations/0034_auto_20191108_1924.py
0 → 100644
View file @
125712fa
# Generated by Django 2.2 on 2019-11-08 19:24
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0033_merge_20191108_1725'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'allowedcompany'
,
name
=
'approve_cr'
,
field
=
models
.
BooleanField
(
default
=
False
),
),
]
app/entities/migrations/0035_changerequesttemplateapprovers_is_default.py
0 → 100644
View file @
125712fa
# Generated by Django 2.2 on 2019-11-11 10:42
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0034_auto_20191108_1924'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'changerequesttemplateapprovers'
,
name
=
'is_default'
,
field
=
models
.
BooleanField
(
default
=
False
),
),
]
app/entities/migrations/0036_auto_20191111_1549.py
0 → 100644
View file @
125712fa
# Generated by Django 2.2 on 2019-11-11 15:49
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0035_changerequesttemplateapprovers_is_default'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'department'
,
name
=
'delegation'
,
field
=
models
.
ManyToManyField
(
related_name
=
'departments'
,
to
=
'entities.Delegation'
),
),
]
app/entities/migrations/0037_auto_20191112_1403.py
0 → 100644
View file @
125712fa
# Generated by Django 2.2 on 2019-11-12 14:03
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0036_auto_20191111_1549'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequestformapprovers'
,
name
=
'delegation'
,
field
=
models
.
ForeignKey
(
blank
=
True
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
DO_NOTHING
,
to
=
'entities.Delegation'
,
to_field
=
'code'
),
),
migrations
.
AlterField
(
model_name
=
'changerequesttemplateapprovers'
,
name
=
'delegation'
,
field
=
models
.
ForeignKey
(
blank
=
True
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
DO_NOTHING
,
to
=
'entities.Delegation'
,
to_field
=
'code'
),
),
]
app/entities/migrations/0038_auto_20191112_1457.py
0 → 100644
View file @
125712fa
# Generated by Django 2.2 on 2019-11-12 14:57
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0037_auto_20191112_1403'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'changerequestformapprovers'
,
name
=
'delegation'
,
field
=
models
.
ForeignKey
(
blank
=
True
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
to
=
'entities.Delegation'
,
to_field
=
'code'
),
),
migrations
.
AlterField
(
model_name
=
'changerequesttemplateapprovers'
,
name
=
'delegation'
,
field
=
models
.
ForeignKey
(
blank
=
True
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
to
=
'entities.Delegation'
,
to_field
=
'code'
),
),
]
app/entities/models.py
View file @
125712fa
...
@@ -91,7 +91,7 @@ class Delegation(AuditClass):
...
@@ -91,7 +91,7 @@ class Delegation(AuditClass):
max_length
=
255
max_length
=
255
)
)
name
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
name
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
class
Meta
:
class
Meta
:
db_table
=
'delegations'
db_table
=
'delegations'
...
@@ -100,9 +100,12 @@ class Delegation(AuditClass):
...
@@ -100,9 +100,12 @@ class Delegation(AuditClass):
def
save
(
self
,
*
args
,
**
kwargs
):
def
save
(
self
,
*
args
,
**
kwargs
):
super
(
Delegation
,
self
)
.
save
(
*
args
,
**
kwargs
)
super
(
Delegation
,
self
)
.
save
(
*
args
,
**
kwargs
)
code
=
enums
.
GenerateCode
.
DELEGATION
.
value
code
=
number_generator
(
enums
.
GenerateCode
.
DELEGATION
.
value
,
self
.
id
)
code
=
number_generator
(
enums
.
GenerateCode
.
DELEGATION
.
value
,
self
.
id
)
Delegation
.
objects
.
filter
(
id
=
self
.
id
)
.
update
(
code
=
code
)
if
self
.
code
==
''
:
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
save
()
class
Company
(
AuditClass
):
class
Company
(
AuditClass
):
...
@@ -149,7 +152,8 @@ class Department(AuditClass):
...
@@ -149,7 +152,8 @@ class Department(AuditClass):
)
)
name
=
models
.
CharField
(
max_length
=
255
)
name
=
models
.
CharField
(
max_length
=
255
)
delegation
=
models
.
ManyToManyField
(
delegation
=
models
.
ManyToManyField
(
Delegation
Delegation
,
related_name
=
'departments'
)
)
class
Meta
:
class
Meta
:
...
@@ -454,7 +458,7 @@ class BaseApprover(models.Model):
...
@@ -454,7 +458,7 @@ class BaseApprover(models.Model):
Delegation
,
Delegation
,
blank
=
True
,
blank
=
True
,
null
=
True
,
null
=
True
,
on_delete
=
models
.
PROTECT
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
)
to_field
=
'code'
)
created
=
models
.
DateTimeField
(
created
=
models
.
DateTimeField
(
blank
=
True
,
blank
=
True
,
...
@@ -609,6 +613,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
...
@@ -609,6 +613,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
null
=
True
,
null
=
True
,
on_delete
=
models
.
PROTECT
,
on_delete
=
models
.
PROTECT
,
to_field
=
'code'
)
to_field
=
'code'
)
is_default
=
models
.
BooleanField
(
default
=
False
)
class
Meta
:
class
Meta
:
db_table
=
'change_request_template_approvers'
db_table
=
'change_request_template_approvers'
...
@@ -1062,7 +1069,7 @@ class AllowedCompany(models.Model):
...
@@ -1062,7 +1069,7 @@ class AllowedCompany(models.Model):
create_change_request
=
models
.
BooleanField
(
default
=
True
)
create_change_request
=
models
.
BooleanField
(
default
=
True
)
create_change_request_template
=
models
.
BooleanField
(
default
=
True
)
create_change_request_template
=
models
.
BooleanField
(
default
=
True
)
view_all_change_request
=
models
.
BooleanField
(
default
=
True
)
view_all_change_request
=
models
.
BooleanField
(
default
=
True
)
approve_cr
=
models
.
BooleanField
(
default
=
Tru
e
)
approve_cr
=
models
.
BooleanField
(
default
=
Fals
e
)
created_at
=
models
.
DateTimeField
(
auto_now_add
=
True
)
created_at
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
...
...
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