2025-05-19 17:10:30 +03:00
|
|
|
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,
|
|
|
|
|
) # Фильтры будут добавлены позже
|
2025-05-18 21:29:04 +03:00
|
|
|
|
2025-05-19 17:10:30 +03:00
|
|
|
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"]
|