common api

This commit is contained in:
Mikan
2025-05-19 17:10:30 +03:00
parent 59df2c55d9
commit a0a337045b
13 changed files with 659 additions and 6 deletions

View File

@@ -1,3 +1,97 @@
from django.shortcuts import render
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,
) # Фильтры будут добавлены позже
# Create your views here.
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"]