增加coustommixin
This commit is contained in:
parent
238e6988f4
commit
086c701cfa
|
@ -1,5 +1,6 @@
|
|||
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.models import Question, Questioncat, PaperQuestion
|
||||
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 apps.exam.filters import ExamRecordFilter, ExamFilter
|
||||
from datetime import timedelta
|
||||
from apps.system.mixins import CreateUpdateCustomMixin
|
||||
|
||||
# Create your views here.
|
||||
|
||||
|
@ -43,7 +45,7 @@ def dectry(p):
|
|||
return dec_str
|
||||
|
||||
|
||||
class QuestioncatViewSet(ModelViewSet):
|
||||
class QuestioncatViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'}
|
||||
queryset = Questioncat.objects.all()
|
||||
serializer_class = QuestioncatSerializer
|
||||
|
@ -51,7 +53,7 @@ class QuestioncatViewSet(ModelViewSet):
|
|||
search_fields = ['name']
|
||||
|
||||
|
||||
class QuestionViewSet(ModelViewSet):
|
||||
class QuestionViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post':'question', 'put':'question', 'delete':'question'}
|
||||
queryset = Question.objects.all()
|
||||
serializer_class = QuestionSerializer
|
||||
|
@ -233,6 +235,7 @@ class PaperViewSet(ModelViewSet):
|
|||
sr = PaperCreateUpdateSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
vdata['create_by'] = request.user
|
||||
questions_ = vdata.pop('questions_')
|
||||
paper = Paper.objects.create(**vdata)
|
||||
q_list = []
|
||||
|
@ -251,6 +254,7 @@ class PaperViewSet(ModelViewSet):
|
|||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
questions_ = vdata.pop('questions_')
|
||||
vdata['update_by'] = request.user
|
||||
Paper.objects.filter(id=paper.id).update(**vdata)
|
||||
q_list = []
|
||||
for i in questions_:
|
||||
|
@ -260,7 +264,7 @@ class PaperViewSet(ModelViewSet):
|
|||
return Response()
|
||||
|
||||
|
||||
class ExamViewSet(ModelViewSet):
|
||||
class ExamViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||
perms_map = {'get': '*', 'post':'exam', 'put':'exam', 'delete':'exam'}
|
||||
queryset = Exam.objects.all().select_related('paper', 'create_by')
|
||||
ordering = ['-id']
|
||||
|
@ -322,7 +326,7 @@ class ExamViewSet(ModelViewSet):
|
|||
raise ParseError('暂不支持')
|
||||
|
||||
|
||||
class ExamRecordViewSet(ModelViewSet):
|
||||
class ExamRecordViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
"""
|
||||
考试记录列表和详情
|
||||
"""
|
||||
|
@ -342,7 +346,7 @@ class ExamRecordViewSet(ModelViewSet):
|
|||
def perform_destroy(self, instance): # 考试记录物理删除
|
||||
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):
|
||||
"""
|
||||
清除七日前未提交的考试记录
|
||||
|
@ -357,6 +361,8 @@ class ExamRecordViewSet(ModelViewSet):
|
|||
@action(methods=['get'], detail=False, permission_classes=[IsAuthenticated])
|
||||
def self(self, request, pk=None):
|
||||
'''
|
||||
个人考试记录
|
||||
|
||||
个人考试记录
|
||||
'''
|
||||
queryset = ExamRecord.objects.filter(create_by=request.user).order_by('-update_time')
|
||||
|
|
Loading…
Reference in New Issue