Commit c4c8a822 authored by John Red Medrano's avatar John Red Medrano

added new endpoint for list of companies, department and user for template and form

parent fc506ac5
......@@ -8,7 +8,7 @@ from django.db.models import Q
from rest_framework import status
class UserList(APIView):
class UserListForm(APIView):
pagination_class = CustomPagination
......@@ -17,16 +17,17 @@ class UserList(APIView):
try:
serializer = ChangeRequestList
dept = self.request.query_params['department_code']
company = self.request.query_params['company_code']
user_list = models.AllowedCompany.objects.filter(
Q(company_pivot=company) &
Q(group_pivots=dept) &
Q(id_number=request.user.code)
)
user_list = user_list.exclude(id=1).values('id_number')
queryset = models.User.objects.filter(code__in=user_list).order_by('name')
page = self.paginate_queryset(queryset)
# company = self.request.query_params['company_code']
# allowed = models.AllowedCompany.objects.filter(
# Q(group_pivots=dept) &
# Q()
# )
user_list = models.User.objects.filter(
department=dept
).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
if page is not None:
......
......@@ -6,14 +6,15 @@ from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer
from app.applicationlayer.cms.master.company.table_filters import (
from app.applicationlayer.cms.master.form.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
......@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
id_number=self.request.user.code
Q(id_number=self.request.user.code) &
Q(create_change_request_template=True)
).values('company_pivot')
queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset)
......
......@@ -10,7 +10,7 @@ from app.applicationlayer.utils import (
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer
from app.applicationlayer.cms.master.department.table_filters import (
from app.applicationlayer.cms.master.form.department.table_filters import (
ChangeRequestDepartmentFilterSet
)
from app.helper.decorators import rms
......@@ -18,7 +18,7 @@ from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
......@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(company_pivot=company)
Q(company_pivot=company) &
Q(create_change_request_template=True)
).values('group_pivots')
queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset)
......
from rest_framework.views import APIView
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from app.applicationlayer.management.account.serializer import ChangeRequestList
from app.entities import models
from rest_framework.response import Response
from django.db.models import Q
from rest_framework import status
class UserListTemplate(APIView):
pagination_class = CustomPagination
def get(self, request, *args, **kwargs):
try:
serializer = ChangeRequestList
dept = self.request.query_params['department_code']
# company = self.request.query_params['company_code']
user_list = models.User.objects.filter(
department=dept
).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
if page is not None:
serializer = ChangeRequestList(page, many=True)
message = status_message_response(
200,
'success',
'list of User found',
serializer.data
)
return self.get_paginated_response(message)
except Exception as e:
return Response(
{"message": "this endpoint expect a query params department_id"},
status=status.HTTP_400_BAD_REQUEST
)
@property
def paginator(self):
"""
The paginator instance associated with the view, or `None`.
"""
if not hasattr(self, '_paginator'):
if self.pagination_class is None:
self._paginator = None
else:
self._paginator = self.pagination_class()
return self._paginator
def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination is disabled.
"""
if self.paginator is None:
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)
def get_paginated_response(self, data):
"""
Return a paginated style `Response` object for the given output data.
"""
assert self.paginator is not None
return self.paginator.get_paginated_response(data)
\ No newline at end of file
from rest_framework import serializers
from app.entities.models import Company
class AdminCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Company
from django.db.models import Q
class ChangeRequestCompanyFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(Companyname__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
class Meta:
model = Company
fields = '__all__'
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Company, AllowedCompany
from rest_framework import viewsets, status
from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer
from app.applicationlayer.cms.master.template.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
class ChangeRequestCompanyTemplateViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = AdminCompanySerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ChangeRequestCompanyFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(create_change_request_template=True)
).values('company_pivot')
queryset = queryset.filter(code__in=allowed)
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)
from rest_framework import serializers
from app.entities.models import Department
from django.forms.models import model_to_dict
class AdminDepartmentSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['company'] = model_to_dict(instance.company)
return ret
class Meta:
model = Department
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Department
from django.db.models import Q
class ChangeRequestDepartmentFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(Companyname__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
class Meta:
model = Department
fields = '__all__'
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, AllowedCompany
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer
from app.applicationlayer.cms.master.template.department.table_filters import (
ChangeRequestDepartmentFilterSet
)
from app.helper.decorators import rms
from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentTemplateViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ChangeRequestDepartmentFilterSet
ordering_fields = '__all__'
search_fields = ('name', 'company__name', 'code')
# @rms.department_list
def list(self, request, *args, **kwargs):
company = self.request.query_params['company_code']
queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) &
Q(company_pivot=company) &
Q(create_change_request_template=True)
).values('group_pivots')
queryset = queryset.filter(code__in=allowed)
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 Department found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
......@@ -7,12 +7,19 @@ from rest_framework.urlpatterns import format_suffix_patterns
from app.applicationlayer.cms.form import views as crform_views
from app.applicationlayer.cms.allowed_company import views as allowed
# MASTERS
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
# MASTERS Form
from app.applicationlayer.cms.master.template.company.views import ChangeRequestCompanyTemplateViewSet
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_list.views import ChangeRequestTemplateHeaderMaster
# MASTERS
# MASTERS Form
# MASTERS Template
from app.applicationlayer.cms.master.form.company.views import ChangeRequestCompanyFormViewSet
from app.applicationlayer.cms.master.form.department.views import ChangeRequestDepartmentFormViewSet
from app.applicationlayer.cms.master.form.account.views import UserListForm
# MASTERS Template
# TEMPLATE
from app.applicationlayer.cms.template.header import views as header
......@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
# privilege CMS
# filter endpoints under Allowed Companies table
router.register(r'companies', ChangeRequestCompanyViewSet)
router.register(r'departments', ChangeRequestDepartmentViewSet)
router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster)
router.register(r'template-companies', ChangeRequestCompanyTemplateViewSet)
router.register(r'template-departments', ChangeRequestDepartmentTemplateViewSet)
router.register(r'template-allowed-templates', ChangeRequestTemplateHeaderMaster)
# filter endpoints under Allowed Companies table
# filter endpoints under Allowed Companies table
router.register(r'form-companies', ChangeRequestCompanyFormViewSet)
router.register(r'form-departments', ChangeRequestDepartmentFormViewSet)
# filter endpoints under Allowed Companies table
urlpatterns = [
path('', include(router.urls)),
path('template-post/', header.ChangeRequestTemplatePost.as_view()),
path('form-post/', headerform.ChangeRequestFormPost.as_view()),
# filter endpoints under Allowed Companies table
path('user-list/', UserList.as_view(), name="User List"),
# path('template-user-list/', UserList.as_view(), name="User TemplateList"),
path('form-user-list/', UserListForm.as_view(), name="User List"),
path('template-user-list/', UserListTemplate.as_view(), name="User List"),
# filter endpoints under Allowed Companies table
]
......
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