Commit 5712a025 authored by John Red Medrano's avatar John Red Medrano

added new endpoint list of temlates filter by allowed companies

parent 6d1813c4
from cms.entities import models
from rest_framework_mongoengine import serializers
class headers(serializers.DocumentSerializer):
def to_representation(self, instance):
setattr(instance, 'action', 'wew')
return super().to_representation(instance)
class Meta:
model = models.ChangeRequestFormHeader
fields = (
'requested_to_template_name',
'company_desc',
'department_desc',
'requested_desc',
'status',
'requested_to_priority',
'created',
'requested_to_target_date'
)
from rest_framework_mongoengine import viewsets as meviewsets
from rest_framework_mongoengine.viewsets import ReadOnlyModelViewSet
from drf_renderer_xlsx.mixins import XLSXFileMixin
from drf_renderer_xlsx.renderers import XLSXRenderer
from cms.entities.models import (
ChangeRequestFormHeader,
ChangeRequestFormApprovers,
ChangeRequestFormStakeHolders
)
from cms.applicationlayer.download.change_request_download import headers
from django.db.models import CharField, Value
from mongoengine.queryset.visitor import Q
from rest_framework.response import Response
from cms.applicationlayer.utilities import logged_user
class DownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
queryset = ChangeRequestFormHeader.objects.all()
serializer_class = headers
renderer_classes = (XLSXRenderer,)
filename = 'Change Request Form.xlsx'
def list(self, request, *args, **kwargs):
# id_number = self.request.META.get('HTTP_ACCOUNT_NO')
id_number = 'USER-20190923-0000001'
# id_number = self.request.query_params.get('id_number')
approver = ChangeRequestFormApprovers.objects.filter(
Q(user=id_number) &
Q(deleted_at=None)
)
approver = [data['form_code'] for data in approver]
stake = ChangeRequestFormStakeHolders.objects.filter(
Q(user=id_number) &
Q(deleted_at=None)
)
stake = [data['form_code'] for data in stake]
headers = ChangeRequestFormHeader.objects.filter(
deleted_at=None,
requested_by_user=id_number
)
headers = [data['form_code'] for data in headers]
form_code = stake + approver + headers
self.queryset = ChangeRequestFormHeader.objects.filter(
form_code__in=form_code,
deleted_at=None,
)
exclude = self.queryset.filter(
status='DRAFT',
requested_by_user__ne=id_number
)
exclude = [data['form_code'] for data in exclude]
self.queryset = self.queryset.filter(
form_code__nin=exclude
)
serializer = self.get_serializer(self.queryset, many=True)
return Response(serializer.data)
column_header = {
'titles': [
"Name",
"Company Request To",
"Department Requested To",
"Requested By",
"Status",
"Priority Level",
"Action"
"Date Modified",
"Date Required"
],
'column_width': [17, 30, 17],
'height': 25,
'style': {
'alignment': {
'horizontal': 'center',
'vertical': 'center',
'wrapText': False,
'shrink_to_fit': True,
},
'border_side': {
'border_style': 'thin',
'color': 'FF000000',
},
'font': {
'name': 'Arial',
'size': 14,
'bold': True,
'color': 'FF000000',
},
},
}
from app.entities import models
from rest_framework import serializers
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateHeader
fields = '__all__'
\ No newline at end of file
from rest_framework import viewsets, status
from rest_framework.response import Response
from app.entities.models import ChangeRequestTemplateHeader, AllowedCompany
from app.applicationlayer.cms.master.template_list.serializers import ChangeRequestTemplatesSerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from rest_framework.exceptions import ParseError
class ChangeRequestTemplateHeaderMaster(viewsets.ModelViewSet):
queryset = ChangeRequestTemplateHeader.objects.all()
serializer_class = ChangeRequestTemplatesSerializer
pagination_class = CustomPagination
lookup_field = 'template_no'
def list(self, request, *args, **kwargs):
if "department_code" not in request.query_params:
raise ParseError('department_code is expected at query params')
department = request.query_params['department_code']
# queryset = self.filter_queryset(self.get_queryset())
permit = AllowedCompany.objects.filter(
group_pivots=department
).count()
if permit <= 0:
raise ParseError('This department is not allowed')
else:
queryset = ChangeRequestTemplateHeader.objects.filter(
created_by_department=department
).order_by('requested_to_template_name')
# queryset = queryset.filter
# self.serializer_class = ChangeRequestTemplatesSerializerList
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 Templates 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
)
......@@ -11,6 +11,7 @@ from app.applicationlayer.cms.allowed_company import views as allowed
from app.applicationlayer.cms.master.company.views import ChangeRequestCompanyViewSet
from app.applicationlayer.cms.master.department.views import ChangeRequestDepartmentViewSet
from app.applicationlayer.cms.master.account.views import UserList
from app.applicationlayer.cms.master.template_list.views import ChangeRequestTemplateHeaderMaster
# MASTERS
# TEMPLATE
......@@ -44,6 +45,7 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
# filter endpoints under Allowed Companies table
router.register(r'companies', ChangeRequestCompanyViewSet)
router.register(r'departments', ChangeRequestDepartmentViewSet)
router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster)
# filter endpoints under Allowed Companies table
......
......@@ -136,7 +136,8 @@ REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.AdminRenderer',
'rest_framework.renderers.BrowsableAPIRenderer'
'rest_framework.renderers.BrowsableAPIRenderer',
'drf_renderer_xlsx.renderers.XLSXRenderer',
],
'DEFAULT_PERMISSION_CLASSES': (
......
......@@ -19,7 +19,9 @@ Django==2.2
django-cors-headers==2.5.2
django-filter==2.1.0
djangorestframework==3.9.2
drf-renderer-xlsx==0.3.3
drf-writable-nested==0.5.1
et-xmlfile==1.0.1
gevent==1.4.0
greenlet==0.4.15
hiredis==1.0.0
......@@ -27,11 +29,13 @@ hyperlink==19.0.0
idna==2.8
incremental==17.5.0
isort==4.3.17
jdcal==1.4.1
lazy-object-proxy==1.3.1
Markdown==3.1
mccabe==0.6.1
msgpack==0.6.1
mysqlclient==1.4.2.post1
openpyxl==3.0.0
pep8==1.7.1
Pillow==6.0.0
pycparser==2.19
......
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