增加coustommixin
This commit is contained in:
parent
238e6988f4
commit
086c701cfa
|
@ -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')
|
||||||
|
|
Loading…
Reference in New Issue