Commit 36503d67 authored by John Red Medrano's avatar John Red Medrano

endpoint for filters

parent 395e14bf
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 Company, AllowedCompany from app.entities.models import (
Company, AllowedCompany,
ChangeRequestFormHeader, AllowedCompany
)
from rest_framework import viewsets, status from rest_framework import viewsets, status
from app.businesslayer.company.serializer import AdminCompanySerializer from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response from app.applicationlayer.utils import CustomPagination, status_message_response
...@@ -12,6 +15,7 @@ from app.applicationlayer.cms.master.form.company.table_filters import ( ...@@ -12,6 +15,7 @@ from app.applicationlayer.cms.master.form.company.table_filters import (
from app.helper.decorators import rms from app.helper.decorators import rms
from rest_framework.response import Response from rest_framework.response import Response
from django.db.models import Q from django.db.models import Q
from rest_framework.decorators import action
class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet): class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
...@@ -47,3 +51,55 @@ class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet): ...@@ -47,3 +51,55 @@ class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
serializer = self.get_serializer(queryset, many=True) serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data) return Response(serializer.data)
@action(
methods=['GET'], detail=False,
url_path='filter', url_name='filter'
)
def filter(self, request, *args, **kwargs):
# instance = self.get_object()
# list_his = []
queryset = self.filter_queryset(self.get_queryset())
id_number = request.user.code
forms = ChangeRequestFormHeader.objects.filter(
Q(frm_approvers__user__code=id_number) |
Q(requested_by_user=id_number) |
Q(frm_stakes__user__code=id_number)
).values()
# print(id_number)
# print(forms)
allowed = AllowedCompany.objects.filter(
id_number=id_number
).values().distinct()
forms = [data['requested_to_company_id'] for data in forms]
allowed = [data['company_pivot_id'] for data in allowed]
forms = forms + allowed
if len(forms) == 0:
queryset = queryset.filter(id=0)
else:
queryset = queryset.filter(code__in=forms)
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 Company found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
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