117 lines
4.1 KiB
Python
117 lines
4.1 KiB
Python
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"] |