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,117 @@
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 (
Survey,
ScoreVariable,
Statement,
QuestionPair,
AgreementQuestion,
EducationalInstitution,
Profession,
Specialty,
ProfessionSpecialtyLink,
ProfessionTestResult,
)
from .serializers import (
SurveySerializer,
ScoreVariableSerializer,
StatementSerializer,
QuestionPairSerializer,
AgreementQuestionSerializer,
EducationalInstitutionSerializer,
ProfessionSerializer,
SurveySpecialtySerializer,
ProfessionSpecialtyLinkSerializer,
ProfessionTestResultSerializer,
)
from .filters import (
QuestionPairFilter,
SpecialtyFilter,
) # Фильтры будут добавлены позже
# Create your views here.
class SurveyViewSet(viewsets.ModelViewSet):
queryset = Survey.objects.all()
serializer_class = SurveySerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["title"]
ordering_fields = ["title"]
class ScoreVariableViewSet(viewsets.ModelViewSet):
queryset = ScoreVariable.objects.all()
serializer_class = ScoreVariableSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["survey"]
search_fields = ["name", "title"]
ordering_fields = ["survey", "name"]
class StatementViewSet(viewsets.ModelViewSet):
queryset = Statement.objects.all()
serializer_class = StatementSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["score_variable"]
search_fields = ["statement"]
ordering_fields = ["statement"]
class QuestionPairViewSet(viewsets.ModelViewSet):
queryset = QuestionPair.objects.all()
serializer_class = QuestionPairSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = QuestionPairFilter
search_fields = ["statement_a__statement", "statement_b__statement"]
ordering_fields = ["survey", "statement_a", "statement_b"]
class AgreementQuestionViewSet(viewsets.ModelViewSet):
queryset = AgreementQuestion.objects.all()
serializer_class = AgreementQuestionSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["survey", "score_variable"]
search_fields = ["question"]
ordering_fields = ["survey", "question"]
class EducationalInstitutionViewSet(viewsets.ModelViewSet):
queryset = EducationalInstitution.objects.all()
serializer_class = EducationalInstitutionSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["name"]
ordering_fields = ["name"]
class ProfessionViewSet(viewsets.ModelViewSet):
queryset = Profession.objects.all()
serializer_class = ProfessionSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ["name"]
ordering_fields = ["name"]
class SpecialtyViewSet(viewsets.ModelViewSet):
queryset = Specialty.objects.all()
serializer_class = SurveySpecialtySerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = SpecialtyFilter
search_fields = ["name", "institution__name"]
ordering_fields = ["name", "institution"]
class ProfessionSpecialtyLinkViewSet(viewsets.ModelViewSet):
queryset = ProfessionSpecialtyLink.objects.all()
serializer_class = ProfessionSpecialtyLinkSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["profession", "specialty"]
search_fields = ["profession__name", "specialty__name"]
ordering_fields = ["profession", "specialty"]
class ProfessionTestResultViewSet(viewsets.ModelViewSet):
queryset = ProfessionTestResult.objects.all()
serializer_class = ProfessionTestResultSerializer
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_fields = ["profession", "survey_score_variable"]
search_fields = ["profession__name", "survey_score_variable__title"]
ordering_fields = ["profession", "survey_score_variable"]