Commit 125712fa authored by John Red Medrano's avatar John Red Medrano

Merge branch 'RMSv2' of http://42.61.118.105:7990/scm/rms/api-main-service into red-develop

parents 5d5bd544 b66982e3
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
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__'
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)
...@@ -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
......
...@@ -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,45 +64,88 @@ class DelegationViewSet(viewsets.ModelViewSet): ...@@ -64,45 +64,88 @@ 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
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) message = {
'code': 400,
'status': 'failed',
'message': 'Delegation/s cannot delete, Please update instead'
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
log_save( # exist_in_dept = instance.departments.all()
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.DELEGATION.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT) # restrictions
# if not exist_in_dept.count() > 0:
# print(exist_in_dept)
# if not (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'):
# 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', False) partial = kwargs.pop('partial', True)
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)
# restrictions
if not (old_instance['name'].lower() == 'head of department' or
old_instance['name'].lower() == 'sd/od' or
old_instance['name'].lower() == 'change control board' or
old_instance['name'].lower() == 'approver' or
old_instance['name'].lower() == 'vendor/implementor' or
old_instance['name'].lower() == 'requestor'):
self.perform_update(serializer) self.perform_update(serializer)
new_instance = serializer.data new_instance = serializer.data
log_save( log_save(
enums.LogEnum.DELETED.value, enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.DELEGATION.value, enums.LogEntitiesEnum.DELEGATION.value,
old_instance['id'], old_instance['id'],
old_instance, old_instance,
...@@ -110,3 +153,12 @@ class DelegationViewSet(viewsets.ModelViewSet): ...@@ -110,3 +153,12 @@ class DelegationViewSet(viewsets.ModelViewSet):
) )
return Response(serializer.data) return Response(serializer.data)
else:
message = {
'code': 400,
'status': 'failed',
'message': 'Default delegation cannot edit'
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
...@@ -63,7 +63,7 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet): ...@@ -63,7 +63,7 @@ class AdminDepartmentViewSet(viewsets.ModelViewSet):
try: try:
dept_code = kwargs['code'] dept_code = kwargs['code']
queryset = Delegation.objects.filter(department__code=dept_code) queryset = Delegation.objects.filter(departments__code=dept_code)
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
if page is not None: if page is not None:
......
# 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),
),
]
# 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),
),
]
# 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'),
),
]
# 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'),
),
]
# 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'),
),
]
...@@ -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=True) approve_cr = models.BooleanField(default=False)
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