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, ) # Фильтры будут добавлены позже 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"]