Skip to content

Commit 0d3fa46

Browse files
committed
fix problem put method
1 parent 3c7d09c commit 0d3fa46

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

problem/views/admin.py

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import os
2+
import shutil
13
import json
24
import zipfile
35

@@ -10,21 +12,16 @@
1012
from utils.api import APIView, validate_serializer
1113
from utils.shortcuts import rand_str
1214
from utils.tasks import delete_files
13-
from judge.testing import ZipFileUploader, create_new_problem_from_template
15+
from judge.testing import ZipFileUploader, create_new_problem_from_template, PathManager
1416

1517
from ..models import Problem, ProblemTag
1618
from ..serializers import *
1719

1820
class ProblemBase(APIView):
1921
def common_checks(self, request):
2022
data = request.data
21-
22-
23-
class ProblemFormBase(APIView):
24-
# use View's dispatch function
25-
request_parsers = None
2623

27-
class ProblemAPI(ProblemFormBase):
24+
class ProblemAPI(ProblemBase):
2825
# @validate_serializer(CreateProblemSerializer)
2926
@problem_permission_required
3027
def post(self, request):
@@ -128,9 +125,10 @@ def delete(self, request):
128125
except Problem.DoesNotExist:
129126
return self.error("Problem does not exists")
130127
ensure_created_by(problem, request.user)
131-
# d = os.path.join(settings.TEST_CASE_DIR, problem.test_case_id)
132-
# if os.path.isdir(d):
133-
# shutil.rmtree(d, ignore_errors=True)
128+
d = PathManager.problem_dir(problem._id)
129+
if os.path.isdir(d):
130+
print('remove dir', d)
131+
shutil.rmtree(d, ignore_errors=True)
134132
problem.delete()
135133
return self.success()
136134

utils/api/api.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class JSONParser(object):
3232
def parse(body):
3333
return json.loads(body.decode("utf-8"))
3434

35-
3635
class URLEncodedParser(object):
3736
content_type = ContentType.url_encoded_request
3837

@@ -141,11 +140,12 @@ def paginate_data(self, request, query_set, object_serializer=None):
141140
return data
142141

143142
def dispatch(self, request, *args, **kwargs):
144-
if self.request_parsers:
145-
try:
146-
request.data = self._get_request_data(self.request)
147-
except ValueError as e:
148-
return self.error(err="invalid-request", msg=str(e))
143+
if not (request.content_type and request.content_type.startswith(ContentType.form_data_request)):
144+
if self.request_parsers:
145+
try:
146+
request.data = self._get_request_data(self.request)
147+
except ValueError as e:
148+
return self.error(err="invalid-request", msg=str(e))
149149
try:
150150
return super(APIView, self).dispatch(request, *args, **kwargs)
151151
except APIError as e:

0 commit comments

Comments
 (0)