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