Files
ProFi/outreach/views.py
2025-05-19 17:10:30 +03:00

73 lines
2.6 KiB
Python

from rest_framework import viewsets
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from .models import (
InstitutionType,
Representative,
School,
Partner,
PartnerRepresentative,
SchoolResponsibility,
)
from .serializers import (
InstitutionTypeSerializer,
RepresentativeSerializer,
SchoolSerializer,
PartnerSerializer,
PartnerRepresentativeSerializer,
SchoolResponsibilitySerializer,
)
from .filters import (
SchoolFilter,
SchoolResponsibilityFilter,
) # Фильтры будут добавлены позже
class InstitutionTypeViewSet(viewsets.ModelViewSet):
queryset = InstitutionType.objects.all()
serializer_class = InstitutionTypeSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["name"]
ordering_fields = ["name"]
class RepresentativeViewSet(viewsets.ModelViewSet):
queryset = Representative.objects.all()
serializer_class = RepresentativeSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["first_name", "last_name", "position"]
ordering_fields = ["position"]
class SchoolViewSet(viewsets.ModelViewSet):
queryset = School.objects.all()
serializer_class = SchoolSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = SchoolFilter
search_fields = ["name", "address"]
ordering_fields = ["institution_type", "name"]
class PartnerViewSet(viewsets.ModelViewSet):
queryset = Partner.objects.all()
serializer_class = PartnerSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["name", "description"]
ordering_fields = ["name"]
class PartnerRepresentativeViewSet(viewsets.ModelViewSet):
queryset = PartnerRepresentative.objects.all()
serializer_class = PartnerRepresentativeSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["representative", "partner"]
search_fields = ["representative__first_name", "partner__name"]
ordering_fields = ["partner", "representative"]
class SchoolResponsibilityViewSet(viewsets.ModelViewSet):
queryset = SchoolResponsibility.objects.all()
serializer_class = SchoolResponsibilitySerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = SchoolResponsibilityFilter
search_fields = ["school__name", "responsible__account__first_name"]
ordering_fields = ["academic_year", "responsible", "school"]