Commit 1bb598e2 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #437 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit '28a5cdec':
  delegation maintenance
parents 9d740042 28a5cdec
...@@ -31,17 +31,17 @@ class ChangeRequestFormApproversSerializer( ...@@ -31,17 +31,17 @@ class ChangeRequestFormApproversSerializer(
if instance.form_code.status == 'Draft': if instance.form_code.status == 'Draft':
if instance.tmp_approver: if instance.tmp_approver:
if instance.tmp_approver.user or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.user or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['editable_user'] = False ret['editable_user'] = False
else: else:
ret['editable_user'] = True ret['editable_user'] = True
if instance.tmp_approver.company or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.company or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['editable_comp'] = False ret['editable_comp'] = False
else: else:
ret['editable_comp'] = True ret['editable_comp'] = True
if instance.tmp_approver.department or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.department or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['editable_dept'] = False ret['editable_dept'] = False
else: else:
ret['editable_dept'] = True ret['editable_dept'] = True
...@@ -61,13 +61,13 @@ class ChangeRequestFormApproversSerializer( ...@@ -61,13 +61,13 @@ class ChangeRequestFormApproversSerializer(
if instance.form_code.status == 'Draft': if instance.form_code.status == 'Draft':
if instance.tmp_approver: if instance.tmp_approver:
if instance.tmp_approver.user or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.user or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['editable_user'] = False ret['editable_user'] = False
else: else:
ret['user'] = None ret['user'] = None
ret['editable_user'] = True ret['editable_user'] = True
if instance.tmp_approver.company or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.company or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['company'] = { ret['company'] = {
"id": instance.tmp_approver.company.id, "id": instance.tmp_approver.company.id,
"code": instance.tmp_approver.company.code, "code": instance.tmp_approver.company.code,
...@@ -79,7 +79,7 @@ class ChangeRequestFormApproversSerializer( ...@@ -79,7 +79,7 @@ class ChangeRequestFormApproversSerializer(
ret['company'] = None ret['company'] = None
ret['editable_comp'] = True ret['editable_comp'] = True
if instance.tmp_approver.department or instance.tmp_approver.delegation.lower() == 'requestor': if instance.tmp_approver.department or instance.tmp_approver.delegation.name.lower() == 'requestor':
ret['department'] = { ret['department'] = {
"id": instance.tmp_approver.department.id, "id": instance.tmp_approver.department.id,
"code": instance.tmp_approver.department.code, "code": instance.tmp_approver.department.code,
......
...@@ -48,18 +48,31 @@ class ChangeRequestTemplateApproversSerializer( ...@@ -48,18 +48,31 @@ class ChangeRequestTemplateApproversSerializer(
else: else:
ret['editable_user'] = True ret['editable_user'] = True
if instance.delegation.lower() == 'requestor': if instance.delegation:
ret['delegation'] = {
"id": instance.delegation.id,
"code": instance.delegation.code,
"name": instance.delegation.name
}
ret['editable_deleg'] = False
else:
ret['editable_deleg'] = True
if instance.delegation.name.lower() == 'requestor':
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
except Exception as e: except Exception as e:
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
return ret return ret
......
...@@ -29,7 +29,7 @@ class ApplicationViewSet(viewsets.ModelViewSet): ...@@ -29,7 +29,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
@decorators.rms.application_crate @decorators.rms.application_crate
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data) serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
self.perform_create(serializer) self.perform_create(serializer)
......
from rest_framework import serializers
from app.entities.models import Delegation
class DelegationSerializer(serializers.ModelSerializer):
class Meta:
model = Delegation
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from django_filters import rest_framework as filters
from app.entities.models import Delegation
class DelegationFilterSet(filters.FilterSet):
class Meta:
model = Delegation
fields = '__all__'
from app.entities import enums
from django.db import transaction
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 Delegation
from app.applicationlayer.utils import (
CustomPagination, status_message_response, log_save
)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.delegation import serializer
from app.applicationlayer.management.delegation.table_filters import DelegationFilterSet
from app.helper import decorators
class DelegationViewSet(viewsets.ModelViewSet):
queryset = Delegation.objects.all().order_by('-created')
serializer_class = serializer.DelegationSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = DelegationFilterSet
ordering_fields = '__all__'
search_fields = ('name')
@transaction.atomic
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Delegation created', serializer.data
)
return Response(
message
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_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 Delegation found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
@decorators.error_safe
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
new_instance = model_to_dict(instance)
self.perform_destroy(instance)
log_save(
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.DELEGATION.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
@transaction.atomic
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
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
log_save(
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.DELEGATION.value,
old_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
...@@ -16,7 +16,7 @@ class SubModuleField(serializers.Field): ...@@ -16,7 +16,7 @@ class SubModuleField(serializers.Field):
class ModuleSerializer(serializers.ModelSerializer): class ModuleSerializer(serializers.ModelSerializer):
sub_module = SubModuleField(source='*', read_only=True) sub_module = SubModuleField(source='*', read_only=True)
def to_representation(self, instance): def to_representation(self, instance):
application_name = Application.objects.filter( application_name = Application.objects.filter(
id=instance.application.id id=instance.application.id
......
...@@ -93,7 +93,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet): ...@@ -93,7 +93,7 @@ class UsersManagementViewSet(viewsets.ModelViewSet):
createdUser = models.User.objects.filter(id=pk).first() createdUser = models.User.objects.filter(id=pk).first()
createdUser.set_password(settings.USER_DEFAULT_PASSWORD) createdUser.set_password(settings.USER_DEFAULT_PASSWORD)
createdUser.save() createdUser.save()
# LOG ADD # LOG ADD
log_save.log_save( log_save.log_save(
enums.LogEnum.ADD.value, enums.LogEnum.ADD.value,
......
...@@ -9,6 +9,7 @@ from app.applicationlayer.management.module.views import ModuleViewSet ...@@ -9,6 +9,7 @@ from app.applicationlayer.management.module.views import ModuleViewSet
from app.applicationlayer.management.account.views import UserViewSet from app.applicationlayer.management.account.views import UserViewSet
from app.businesslayer.company.views import AdminCompanyViewSet from app.businesslayer.company.views import AdminCompanyViewSet
from app.applicationlayer.management.notification.views import NotificationsViewset from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.management.delegation.views import DelegationViewSet
from app.applicationlayer.download.accounts.views import UserDownloadRequest from app.applicationlayer.download.accounts.views import UserDownloadRequest
from app.applicationlayer.download.department.views import DepartmentDownloadRequest from app.applicationlayer.download.department.views import DepartmentDownloadRequest
...@@ -26,6 +27,7 @@ router.register(r'notifications', NotificationsViewset) ...@@ -26,6 +27,7 @@ router.register(r'notifications', NotificationsViewset)
router.register(r'user-download', UserDownloadRequest) router.register(r'user-download', UserDownloadRequest)
router.register(r'department-download', DepartmentDownloadRequest) router.register(r'department-download', DepartmentDownloadRequest)
router.register(r'company-download', CompanyDownloadRequest) router.register(r'company-download', CompanyDownloadRequest)
router.register(r'delegations', DelegationViewSet)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
......
...@@ -29,6 +29,7 @@ class GenerateCode(Enum): ...@@ -29,6 +29,7 @@ class GenerateCode(Enum):
COMPANY = 'COMPANY' COMPANY = 'COMPANY'
DEPARTMENT = 'DEPARTMENT' DEPARTMENT = 'DEPARTMENT'
USER = 'USER' USER = 'USER'
DELEGATION = 'DELEGATION'
NOTIFICATION = 'NOTIF' NOTIFICATION = 'NOTIF'
TEMPLATE = 'TMP' TEMPLATE = 'TMP'
TMP_APPROVER = 'TMPAPR' TMP_APPROVER = 'TMPAPR'
...@@ -62,6 +63,7 @@ class LogEntitiesEnum(Enum): ...@@ -62,6 +63,7 @@ class LogEntitiesEnum(Enum):
COMPANY = "COMPANY" COMPANY = "COMPANY"
DEPARTMENT = "DEPARTMENT" DEPARTMENT = "DEPARTMENT"
MODULE = "MODULE" MODULE = "MODULE"
DELEGATION = "DELEGATION"
ChangeRequestTemplateHeader = "ChangeRequestTemplateHeader" ChangeRequestTemplateHeader = "ChangeRequestTemplateHeader"
ChangeRequestTemplateApprovers = "ChangeRequestTemplateApprovers" ChangeRequestTemplateApprovers = "ChangeRequestTemplateApprovers"
ChangeRequestTemplateStakeHolders = "ChangeRequestTemplateStakeHolders" ChangeRequestTemplateStakeHolders = "ChangeRequestTemplateStakeHolders"
......
# Generated by Django 2.2 on 2019-11-07 12:39
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0030_auto_20191104_1507'),
]
operations = [
migrations.CreateModel(
name='Delegation',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('createdby', models.CharField(max_length=255)),
('modified', models.DateTimeField(auto_now=True)),
('modifiedby', models.CharField(max_length=255)),
('code', models.CharField(max_length=255, unique=True)),
('name', models.CharField(max_length=255, unique=True)),
],
options={
'db_table': 'delegations',
},
),
migrations.AlterField(
model_name='changerequestformapprovers',
name='delegation',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, 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.PROTECT, to='entities.Delegation', to_field='code'),
),
migrations.AddField(
model_name='department',
name='delegation',
field=models.ManyToManyField(to='entities.Delegation'),
),
]
...@@ -84,6 +84,26 @@ class Module(AuditClass): ...@@ -84,6 +84,26 @@ class Module(AuditClass):
Module.objects.filter(id=self.id).update(code=code) Module.objects.filter(id=self.id).update(code=code)
class Delegation(AuditClass):
code = models.CharField(
unique=True,
max_length=255
)
name = models.CharField(unique=True, max_length=255)
class Meta:
db_table = 'delegations'
def __str__(self):
return f'{self.name}'
def save(self, *args, **kwargs):
super(Delegation, self).save(*args, **kwargs)
code = enums.GenerateCode.DELEGATION.value
code = number_generator(enums.GenerateCode.DELEGATION.value, self.id)
Delegation.objects.filter(id=self.id).update(code=code)
class Company(AuditClass): class Company(AuditClass):
code = models.CharField( code = models.CharField(
unique=True, unique=True,
...@@ -127,6 +147,9 @@ class Department(AuditClass): ...@@ -127,6 +147,9 @@ class Department(AuditClass):
default='dept' default='dept'
) )
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
delegation = models.ManyToManyField(
Delegation
)
class Meta: class Meta:
db_table = 'departments' db_table = 'departments'
...@@ -414,7 +437,13 @@ class BaseApprover(models.Model): ...@@ -414,7 +437,13 @@ class BaseApprover(models.Model):
on_delete=models.PROTECT, on_delete=models.PROTECT,
to_field='code') to_field='code')
delegation = models.CharField(max_length=50, blank=True, null=True) # delegation = models.CharField(max_length=50, blank=True, null=True)
delegation = models.ForeignKey(
Delegation,
blank=True,
null=True,
on_delete=models.PROTECT,
to_field='code')
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
......
This diff is collapsed.
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