Commit ea0a8da6 authored by Gladys Forte's avatar Gladys Forte

filtered delegation

parent 1bb598e2
...@@ -28,6 +28,11 @@ class ChangeRequestFormApproversSerializer( ...@@ -28,6 +28,11 @@ class ChangeRequestFormApproversSerializer(
"contact_no": instance.user.contact_no "contact_no": instance.user.contact_no
} }
ret['user'] = user_object ret['user'] = user_object
ret['delegation'] = {
"id": instance.delegation.id,
"code": instance.delegation.code,
"name": instance.delegation.name
}
if instance.form_code.status == 'Draft': if instance.form_code.status == 'Draft':
if instance.tmp_approver: if instance.tmp_approver:
...@@ -46,14 +51,21 @@ class ChangeRequestFormApproversSerializer( ...@@ -46,14 +51,21 @@ class ChangeRequestFormApproversSerializer(
else: else:
ret['editable_dept'] = True ret['editable_dept'] = True
if instance.tmp_approver.delegation or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['editable_deleg'] = False
else:
ret['editable_deleg'] = True
else: else:
ret['editable_user'] = True ret['editable_user'] = True
ret['editable_comp'] = True ret['editable_comp'] = True
ret['editable_dept'] = True ret['editable_dept'] = True
ret['editable_deleg'] = True
else: else:
ret['editable_user'] = False ret['editable_user'] = False
ret['editable_comp'] = False ret['editable_comp'] = False
ret['editable_dept'] = False ret['editable_dept'] = False
ret['editable_deleg'] = False
return ret return ret
...@@ -90,6 +102,17 @@ class ChangeRequestFormApproversSerializer( ...@@ -90,6 +102,17 @@ class ChangeRequestFormApproversSerializer(
ret['department'] = None ret['department'] = None
ret['editable_dept'] = True ret['editable_dept'] = True
if instance.tmp_approver.delegation or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['delegation'] = {
"id": instance.tmp_approver.delegation.id,
"code": instance.tmp_approver.delegation.code,
"name": instance.tmp_approver.delegation.name
}
ret['editable_deleg'] = False
else:
ret['delegation'] = None
ret['editable_deleg'] = True
else: else:
ret['editable_user'] = True ret['editable_user'] = True
ret['editable_comp'] = True ret['editable_comp'] = True
......
...@@ -3,7 +3,7 @@ from rest_framework.response import Response ...@@ -3,7 +3,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 Department, AllowedCompany from app.entities.models import Department, AllowedCompany, Delegation
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
CustomPagination, status_message_response CustomPagination, status_message_response
) )
...@@ -53,3 +53,8 @@ class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet): ...@@ -53,3 +53,8 @@ class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
serializer = self.get_serializer(queryset, many=True) serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data) return Response(serializer.data)
...@@ -66,6 +66,17 @@ class DelegationViewSet(viewsets.ModelViewSet): ...@@ -66,6 +66,17 @@ class DelegationViewSet(viewsets.ModelViewSet):
instance = self.get_object() instance = self.get_object()
new_instance = model_to_dict(instance) new_instance = model_to_dict(instance)
# restrictions
if (new_instance['name'].lower() == 'head of department' or
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
new_instance['name'].lower() == 'requestor'):
print("hello")
self.perform_destroy(instance) self.perform_destroy(instance)
log_save( log_save(
......
from rest_framework import serializers from rest_framework import serializers
from app.entities.models import Department from app.entities.models import Department, Delegation
from app.applicationlayer.utils import model_to_dict from app.applicationlayer.utils import model_to_dict
...@@ -16,3 +16,12 @@ class AdminDepartmentSerializer(serializers.ModelSerializer): ...@@ -16,3 +16,12 @@ class AdminDepartmentSerializer(serializers.ModelSerializer):
read_only_fields = ( read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code', 'created', 'createdby', 'modified', 'modifiedby', 'code',
) )
class DelegationSerializer(serializers.ModelSerializer):
class Meta:
model = Delegation
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
\ No newline at end of file
...@@ -3,20 +3,23 @@ from rest_framework.response import Response ...@@ -3,20 +3,23 @@ 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 Department from app.entities.models import Department, Delegation
from app.applicationlayer.utils import ( from app.applicationlayer.utils import (
CustomPagination, status_message_response CustomPagination, status_message_response
) )
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer from app.applicationlayer.master.department.serializer import (
AdminDepartmentSerializer,
DelegationSerializer)
from app.applicationlayer.management.department.table_filters import DepartmentFilterSet from app.applicationlayer.management.department.table_filters import DepartmentFilterSet
from app.helper.decorators import rms from app.helper.decorators import rms
from rest_framework.decorators import action
class AdminDepartmentViewSet(viewsets.ModelViewSet): class AdminDepartmentViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all().order_by('-created') queryset = Department.objects.all().order_by('-created')
serializer_class = serializer.AdminDepartmentSerializer serializer_class = AdminDepartmentSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
lookup_field = 'code' lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
...@@ -44,7 +47,6 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet): ...@@ -44,7 +47,6 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet):
) )
return self.get_paginated_response(message) return self.get_paginated_response(message)
except Exception as e: except Exception as e:
# serializer = self.get_serializer(queryset, many=True)
message = status_message_response( message = status_message_response(
400, 400,
'failed', 'failed',
...@@ -52,3 +54,34 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet): ...@@ -52,3 +54,34 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet):
'' ''
) )
return Response(message) return Response(message)
@action(detail=True,
methods=['get'],
url_path='delegations',
name="Delegation Filtered List")
def delegations(self, request, *args, **kwargs):
try:
dept_code = kwargs['code']
queryset = Delegation.objects.filter(department__code=dept_code)
page = self.paginate_queryset(queryset)
if page is not None:
self.serializer_class = DelegationSerializer
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of filtered delegations found',
serializer.data
)
return self.get_paginated_response(message)
except Exception as e:
message = status_message_response(
400,
'failed',
str(e),
''
)
return Response(message)
\ No newline at end of file
# Generated by Django 2.2 on 2019-11-08 11:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0031_auto_20191107_1239'),
]
operations = [
migrations.AddField(
model_name='allowedcompany',
name='approve_cr',
field=models.BooleanField(default=True),
),
migrations.AlterField(
model_name='entitylog',
name='entity',
field=models.CharField(choices=[('USER', 'USER'), ('APPLICATION', 'APPLICATION'), ('COMPANY', 'COMPANY'), ('DEPARTMENT', 'DEPARTMENT'), ('MODULE', 'MODULE'), ('DELEGATION', 'DELEGATION'), ('ChangeRequestTemplateHeader', 'ChangeRequestTemplateHeader'), ('ChangeRequestTemplateApprovers', 'ChangeRequestTemplateApprovers'), ('ChangeRequestTemplateStakeHolders', 'ChangeRequestTemplateStakeHolders'), ('ChangeRequestTemplateAttachments', 'ChangeRequestTemplateAttachments'), ('ChangeRequestTemplateDetails', 'ChangeRequestTemplateDetails'), ('ChangeRequestFormHeader', 'ChangeRequestFormHeader'), ('ChangeRequestFormApprovers', 'ChangeRequestFormApprovers'), ('ChangeRequestFormStakeHolders', 'ChangeRequestFormStakeHolders'), ('ChangeRequestFormAttachments', 'ChangeRequestFormAttachments'), ('ChangeRequestFormDetails', 'ChangeRequestFormDetails')], default='Add', max_length=50),
),
]
...@@ -1050,6 +1050,7 @@ class AllowedCompany(models.Model): ...@@ -1050,6 +1050,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=True)
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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment