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 ...@@ -8,7 +8,7 @@ from django.db.models import Q
from rest_framework import status from rest_framework import status
class UserList(APIView): class UserListForm(APIView):
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -17,16 +17,17 @@ class UserList(APIView): ...@@ -17,16 +17,17 @@ class UserList(APIView):
try: try:
serializer = ChangeRequestList serializer = ChangeRequestList
dept = self.request.query_params['department_code'] dept = self.request.query_params['department_code']
company = self.request.query_params['company_code'] # company = self.request.query_params['company_code']
user_list = models.AllowedCompany.objects.filter( # allowed = models.AllowedCompany.objects.filter(
Q(company_pivot=company) & # Q(group_pivots=dept) &
Q(group_pivots=dept) & # Q()
Q(id_number=request.user.code) # )
) user_list = models.User.objects.filter(
user_list = user_list.exclude(id=1).values('id_number') department=dept
queryset = models.User.objects.filter(code__in=user_list).order_by('name') ).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
page = self.paginate_queryset(queryset) print(user_list.query)
page = self.paginate_queryset(user_list)
if page is not None: if page is not None:
......
...@@ -6,14 +6,15 @@ from app.businesslayer.company.serializer import AdminCompanySerializer ...@@ -6,14 +6,15 @@ 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
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer 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 ChangeRequestCompanyFilterSet
) )
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
class ChangeRequestCompanyViewSet(viewsets.ModelViewSet): class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all() queryset = Company.objects.all()
serializer_class = AdminCompanySerializer serializer_class = AdminCompanySerializer
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet): ...@@ -27,7 +28,8 @@ class ChangeRequestCompanyViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter( 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') ).values('company_pivot')
queryset = queryset.filter(code__in=allowed) queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
......
...@@ -10,7 +10,7 @@ from app.applicationlayer.utils import ( ...@@ -10,7 +10,7 @@ from app.applicationlayer.utils import (
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer 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 ChangeRequestDepartmentFilterSet
) )
from app.helper.decorators import rms from app.helper.decorators import rms
...@@ -18,7 +18,7 @@ from django.db.models import Q ...@@ -18,7 +18,7 @@ from django.db.models import Q
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet): class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all() queryset = Department.objects.all()
serializer_class = serializer.AdminDepartmentSerializer serializer_class = serializer.AdminDepartmentSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
...@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet): ...@@ -34,7 +34,8 @@ class ChangeRequestDepartmentViewSet(viewsets.ModelViewSet):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
allowed = AllowedCompany.objects.filter( allowed = AllowedCompany.objects.filter(
Q(id_number=self.request.user.code) & Q(id_number=self.request.user.code) &
Q(company_pivot=company) Q(company_pivot=company) &
Q(create_change_request_template=True)
).values('group_pivots') ).values('group_pivots')
queryset = queryset.filter(code__in=allowed) queryset = queryset.filter(code__in=allowed)
page = self.paginate_queryset(queryset) 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 ...@@ -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.form import views as crform_views
from app.applicationlayer.cms.allowed_company import views as allowed from app.applicationlayer.cms.allowed_company import views as allowed
# MASTERS # MASTERS Form
from app.applicationlayer.cms.master.company.views import ChangeRequestCompanyViewSet from app.applicationlayer.cms.master.template.company.views import ChangeRequestCompanyTemplateViewSet
from app.applicationlayer.cms.master.department.views import ChangeRequestDepartmentViewSet from app.applicationlayer.cms.master.template.department.views import ChangeRequestDepartmentTemplateViewSet
from app.applicationlayer.cms.master.account.views import UserList 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
# 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 # TEMPLATE
from app.applicationlayer.cms.template.header import views as header from app.applicationlayer.cms.template.header import views as header
...@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet) ...@@ -54,18 +61,24 @@ router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
# privilege CMS # privilege CMS
# filter endpoints under Allowed Companies table # filter endpoints under Allowed Companies table
router.register(r'companies', ChangeRequestCompanyViewSet) router.register(r'template-companies', ChangeRequestCompanyTemplateViewSet)
router.register(r'departments', ChangeRequestDepartmentViewSet) router.register(r'template-departments', ChangeRequestDepartmentTemplateViewSet)
router.register(r'allowed-templates', ChangeRequestTemplateHeaderMaster) router.register(r'template-allowed-templates', ChangeRequestTemplateHeaderMaster)
# filter endpoints under Allowed Companies table # 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 = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', header.ChangeRequestTemplatePost.as_view()), path('template-post/', header.ChangeRequestTemplatePost.as_view()),
path('form-post/', headerform.ChangeRequestFormPost.as_view()), path('form-post/', headerform.ChangeRequestFormPost.as_view()),
# filter endpoints under Allowed Companies table # 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 # 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