From feb1b17554d4e460829e0ecd40f0ed4afcf55ba9 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 29 Jul 2020 22:51:04 +0800 Subject: [PATCH] export question --- test_server/examtest/exports.py | 1 - test_server/question/exports.py | 29 +++++++++++++++++++++++++++++ test_server/question/views.py | 7 +++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test_server/question/exports.py diff --git a/test_server/examtest/exports.py b/test_server/examtest/exports.py index 532c084..10c85c7 100644 --- a/test_server/examtest/exports.py +++ b/test_server/examtest/exports.py @@ -23,4 +23,3 @@ def export_test(tests): path = '/media/export/' + filename wb.save((BASE_DIR + path).replace('\\', '/')) return path - diff --git a/test_server/question/exports.py b/test_server/question/exports.py new file mode 100644 index 0000000..daf68f6 --- /dev/null +++ b/test_server/question/exports.py @@ -0,0 +1,29 @@ +from openpyxl.workbook import Workbook +from django.conf import settings +from datetime import datetime +from openpyxl.styles import Font, Fill + + +BASE_DIR = settings.BASE_DIR + + +def export_question(questions): + ''' + params: serializer questions + return: xlsx path + ''' + wb = Workbook() + ws1 = wb.active + ws1.title = '题目表' + ws1.append(['分类','题型', '题干', '选项', '正确答案', '解析']) + row = ws1.row_dimensions[1] + row.font = Font(bold=True) + for i in questions: + # options='' + # for key in i.options: + # pass + ws1.append([i.questioncat.name, i.type, i.name, i.options, i.right, i.resolution]) + filename = 'questions' + datetime.now().strftime("%Y%m%d%H%M%S") +'.xlsx' + path = '/media/export/' + filename + wb.save((BASE_DIR + path).replace('\\', '/')) + return path diff --git a/test_server/question/views.py b/test_server/question/views.py index 4cd1df2..ecaa2cd 100644 --- a/test_server/question/views.py +++ b/test_server/question/views.py @@ -16,6 +16,7 @@ from crm.models import PaySubject from examtest.models import WorkScope from server import settings from utils.custom import CommonPagination +from exports import export_question from .models import Question, Questioncat @@ -115,6 +116,12 @@ class QuestionViewSet(ModelViewSet): ret['panduan'] = queryset.filter(type='判断').count() return Response(ret) + @action(methods=['get'], detail=False, + url_path='export', url_name='export_question', perms_map=[{'*':'export_question'}]) + def export(self, request): + queryset = self.filter_queryset(self.get_queryset()) + path = export_question(queryset) + return Response({'path': path}) @action(methods=['post'], detail=False, url_path='import', url_name='import_question',perms_map=[{'post':'question_import'}])