增加coustommixin

This commit is contained in:
caoqianming 2022-11-11 16:42:53 +08:00
parent 238e6988f4
commit 086c701cfa
1 changed files with 12 additions and 6 deletions

View File

@ -1,5 +1,6 @@
from django.shortcuts import render from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet, GenericViewSet
from rest_framework.mixins import ListModelMixin, DestroyModelMixin
from apps.exam.exports import export_question from apps.exam.exports import export_question
from apps.exam.models import Question, Questioncat, PaperQuestion from apps.exam.models import Question, Questioncat, PaperQuestion
from apps.exam.serializers import (QuestionSerializer, QuestioncatSerializer, PaperSerializer, ExamDetailSerializer, ExamRecordDetailSerializer, ExamListSerializer, from apps.exam.serializers import (QuestionSerializer, QuestioncatSerializer, PaperSerializer, ExamDetailSerializer, ExamRecordDetailSerializer, ExamListSerializer,
@ -17,6 +18,7 @@ from rest_framework.serializers import Serializer
from datetime import datetime from datetime import datetime
from apps.exam.filters import ExamRecordFilter, ExamFilter from apps.exam.filters import ExamRecordFilter, ExamFilter
from datetime import timedelta from datetime import timedelta
from apps.system.mixins import CreateUpdateCustomMixin
# Create your views here. # Create your views here.
@ -43,7 +45,7 @@ def dectry(p):
return dec_str return dec_str
class QuestioncatViewSet(ModelViewSet): class QuestioncatViewSet(CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'} perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'}
queryset = Questioncat.objects.all() queryset = Questioncat.objects.all()
serializer_class = QuestioncatSerializer serializer_class = QuestioncatSerializer
@ -51,7 +53,7 @@ class QuestioncatViewSet(ModelViewSet):
search_fields = ['name'] search_fields = ['name']
class QuestionViewSet(ModelViewSet): class QuestionViewSet(CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'} perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'}
queryset = Question.objects.all() queryset = Question.objects.all()
serializer_class = QuestionSerializer serializer_class = QuestionSerializer
@ -233,6 +235,7 @@ class PaperViewSet(ModelViewSet):
sr = PaperCreateUpdateSerializer(data=request.data) sr = PaperCreateUpdateSerializer(data=request.data)
sr.is_valid(raise_exception=True) sr.is_valid(raise_exception=True)
vdata = sr.validated_data vdata = sr.validated_data
vdata['create_by'] = request.user
questions_ = vdata.pop('questions_') questions_ = vdata.pop('questions_')
paper = Paper.objects.create(**vdata) paper = Paper.objects.create(**vdata)
q_list = [] q_list = []
@ -251,6 +254,7 @@ class PaperViewSet(ModelViewSet):
sr.is_valid(raise_exception=True) sr.is_valid(raise_exception=True)
vdata = sr.validated_data vdata = sr.validated_data
questions_ = vdata.pop('questions_') questions_ = vdata.pop('questions_')
vdata['update_by'] = request.user
Paper.objects.filter(id=paper.id).update(**vdata) Paper.objects.filter(id=paper.id).update(**vdata)
q_list = [] q_list = []
for i in questions_: for i in questions_:
@ -260,7 +264,7 @@ class PaperViewSet(ModelViewSet):
return Response() return Response()
class ExamViewSet(ModelViewSet): class ExamViewSet(CreateUpdateCustomMixin, ModelViewSet):
perms_map = {'get': '*', 'post':'exam', 'put':'exam', 'delete':'exam'} perms_map = {'get': '*', 'post':'exam', 'put':'exam', 'delete':'exam'}
queryset = Exam.objects.all().select_related('paper', 'create_by') queryset = Exam.objects.all().select_related('paper', 'create_by')
ordering = ['-id'] ordering = ['-id']
@ -322,7 +326,7 @@ class ExamViewSet(ModelViewSet):
raise ParseError('暂不支持') raise ParseError('暂不支持')
class ExamRecordViewSet(ModelViewSet): class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
""" """
考试记录列表和详情 考试记录列表和详情
""" """
@ -342,7 +346,7 @@ class ExamRecordViewSet(ModelViewSet):
def perform_destroy(self, instance): # 考试记录物理删除 def perform_destroy(self, instance): # 考试记录物理删除
instance.delete(soft=False) instance.delete(soft=False)
@action(methods=['post'], detail=True, perms_map=[{'post': '*'}], serializer_class=Serializer, permission_classes = [IsAuthenticated]) @action(methods=['post'], detail=False, perms_map=[{'post': '*'}], serializer_class=Serializer, permission_classes = [IsAuthenticated])
def clear(self, request, pk=None): def clear(self, request, pk=None):
""" """
清除七日前未提交的考试记录 清除七日前未提交的考试记录
@ -357,6 +361,8 @@ class ExamRecordViewSet(ModelViewSet):
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated]) @action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
def self(self, request, pk=None): def self(self, request, pk=None):
''' '''
个人考试记录
个人考试记录 个人考试记录
''' '''
queryset = ExamRecord.objects.filter(create_by=request.user).order_by('-update_time') queryset = ExamRecord.objects.filter(create_by=request.user).order_by('-update_time')