From 17de985404b6c3450bff193f511e116edba4c244 Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Mon, 10 Aug 2015 13:53:03 +0800 Subject: [PATCH] =?UTF-8?q?fix=20typo=20=EF=BC=9B=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=20=EF=BC=9B=E5=8A=A0=E5=BC=BA=E6=9C=89=E6=95=88=E6=80=A7?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problem/views.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/problem/views.py b/problem/views.py index bf5927e..08d096d 100644 --- a/problem/views.py +++ b/problem/views.py @@ -1,8 +1,9 @@ # coding=utf-8 import zipfile import re +import os + from django.shortcuts import render -from django.views.decorators.csrf import csrf_exempt from rest_framework.views import APIView @@ -15,18 +16,19 @@ def problem_page(request, problem_id): class TestCaseUploadAPIView(APIView): - def _is_legal_test_case_file_name(self, file_name): # 正整数开头的 .in 或者.out 结尾的 regex = r"^[1-9]\d*\.(in|out)$" return re.compile(regex).match(file_name) is not None - @csrf_exempt def post(self, request): + if "file" not in request.FILES: + return error_response(u"文件上传失败") + f = request.FILES["file"] tmp_zip = "tmp/" + rand_str() + ".zip" - with open(tmp_zip) as test_case_zip: + with open(tmp_zip, "wb") as test_case_zip: for chunk in f: test_case_zip.write(chunk) @@ -43,7 +45,7 @@ class TestCaseUploadAPIView(APIView): if "1.in" in name_list and "1.out" in name_list: for file_name in name_list: if self._is_legal_test_case_file_name(file_name): - name = file_name.spit(".") + name = file_name.split(".") # 有了.in 判断对应的.out 在不在 if name[1] == "in": if (name[0] + ".out") in name_list: @@ -61,13 +63,14 @@ class TestCaseUploadAPIView(APIView): test_case_dir = "test_case/" + problem_test_dir + "/" # 得到了合法的测试用例文件列表 然后去解压缩 + os.mkdir(test_case_dir) for name in l: - f = open(test_case_dir + name, "w+b") + f = open(test_case_dir + name, "wb") f.write(test_case_file.read(name)) f.close() - - return success_response(problem_test_dir) - + l.sort() + return success_response({"test_case_id": problem_test_dir, + "file_list": {"input": l[0::2], + "output": l[1::2]}}) else: return error_response(u"测试用例压缩文件格式错误,请保证测试用例文件在根目录下直接压缩") -