from rest_framework import viewsets from rest_framework.filters import SearchFilter, OrderingFilter from django_filters.rest_framework import DjangoFilterBackend from .models import AcademicYear, Department, DepartmentHead, Specialty, Group, Student from .serializers import ( AcademicYearSerializer, StudyDepartmentSerializer, StudyDepartmentHeadSerializer, SpecialtySerializer, GroupSerializer, StudentSerializer, ) from .filters import ( AcademicYearFilter, DepartmentFilter, DepartmentHeadFilter, SpecialtyFilter, GroupFilter, StudentFilter, ) class AcademicYearViewSet(viewsets.ModelViewSet): queryset = AcademicYear.objects.all() serializer_class = AcademicYearSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = AcademicYearFilter search_fields = ["year"] ordering_fields = ["year"] class DepartmentViewSet(viewsets.ModelViewSet): queryset = Department.objects.all() serializer_class = StudyDepartmentSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = DepartmentFilter search_fields = ["name"] ordering_fields = ["name"] class DepartmentHeadViewSet(viewsets.ModelViewSet): queryset = DepartmentHead.objects.all() serializer_class = StudyDepartmentHeadSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = DepartmentHeadFilter search_fields = ["department__name", "head__first_name"] ordering_fields = ["department", "head"] class SpecialtyViewSet(viewsets.ModelViewSet): queryset = Specialty.objects.all() serializer_class = SpecialtySerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = SpecialtyFilter search_fields = ["name", "code", "department__name"] ordering_fields = ["name", "code"] class GroupViewSet(viewsets.ModelViewSet): queryset = Group.objects.all() serializer_class = GroupSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = GroupFilter search_fields = ["name", "curator__first_name", "specialty__name"] ordering_fields = ["name", "specialty"] class StudentViewSet(viewsets.ModelViewSet): queryset = Student.objects.all() serializer_class = StudentSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = StudentFilter search_fields = ["account__first_name", "account__last_name", "group__name"] ordering_fields = ["group", "account__last_name"]