from rest_framework import viewsets from rest_framework.filters import SearchFilter, OrderingFilter from django_filters.rest_framework import DjangoFilterBackend from .models import ( EventStatus, ActivityType, Event, EventOrganizer, EventDetail, EventParticipant, MethodicalFile, RelevantMethodicalFile, ) from .serializers import ( EventStatusSerializer, ActivityTypeSerializer, EventSerializer, EventOrganizerSerializer, EventDetailSerializer, EventParticipantSerializer, MethodicalFileSerializer, RelevantMethodicalFileSerializer, ) from .filters import ( EventFilter, EventParticipantFilter, MethodicalFileFilter, ) # Фильтры будут добавлены позже class EventStatusViewSet(viewsets.ModelViewSet): queryset = EventStatus.objects.all() serializer_class = EventStatusSerializer filter_backends = [SearchFilter, OrderingFilter] search_fields = ["name"] ordering_fields = ["name"] class ActivityTypeViewSet(viewsets.ModelViewSet): queryset = ActivityType.objects.all() serializer_class = ActivityTypeSerializer filter_backends = [SearchFilter, OrderingFilter] search_fields = ["name"] ordering_fields = ["name"] class EventViewSet(viewsets.ModelViewSet): queryset = Event.objects.all() serializer_class = EventSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = EventFilter search_fields = ["name", "location", "description"] ordering_fields = ["date", "name"] class EventOrganizerViewSet(viewsets.ModelViewSet): queryset = EventOrganizer.objects.all() serializer_class = EventOrganizerSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ["employee", "event"] search_fields = ["employee__account__first_name", "employee__account__last_name"] ordering_fields = ["employee", "event"] class EventDetailViewSet(viewsets.ModelViewSet): queryset = EventDetail.objects.all() serializer_class = EventDetailSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ["activity_type", "event"] search_fields = ["activity_type__name"] ordering_fields = ["activity_type", "event"] class EventParticipantViewSet(viewsets.ModelViewSet): queryset = EventParticipant.objects.all() serializer_class = EventParticipantSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = EventParticipantFilter search_fields = ["student__account__first_name", "student__account__last_name"] ordering_fields = ["event", "student", "points"] class MethodicalFileViewSet(viewsets.ModelViewSet): queryset = MethodicalFile.objects.all() serializer_class = MethodicalFileSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = MethodicalFileFilter search_fields = ["name", "specialty__name"] ordering_fields = ["specialty", "name", "upload_date"] class RelevantMethodicalFileViewSet(viewsets.ModelViewSet): queryset = RelevantMethodicalFile.objects.all() serializer_class = RelevantMethodicalFileSerializer filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_fields = ["methodical_file", "activity_type"] search_fields = ["methodical_file__name", "activity_type__name"] ordering_fields = ["methodical_file", "activity_type"]