Merge branch 'dev-sxw' into virusdefender-dev

* dev-sxw:
  添加到编辑比赛页的入口[CI SKIP]
  修复重复进入页面导致小组列表不断增加的问题,每次先清空[CI SKIP]
  修改一些小问题,主要是在非管理员用户时,会调用models的字典对象的get方法,实际上这个字典没有get方法,会引发500,修改成了判断比赛(或者比赛题目)的创建者是否等于request.user;   另外仿照problem添加了对单个比赛信息的GETapi
  添加admin编辑比赛页面以及js[CI SKIP]
  修改提交样式
  调整顺序
  更新
  Revert "修改比赛单个题目列表的样式"
  修改比赛单个题目列表的样式
  update contest_problem.html
  update contest_problem.html
  添加运行判体脚本[CI SKIP]
  对盘题系统针对新测试服务器进行调整,该分支将不会并入主分支[CI SKIP]
  correct the path of test case in judger
  原来的dockerimage里没有MySQL-python,所以又改了下[CI SKIP]
  漏了一个import[CI SKIP]
  这是为了能以root身份运行celery[CI SKIP]
  为了在qduoj.cf上运行做了改动,因为判题和web都在一台机器上,这个docker image是从digitalOcean上download下来的[CI SKIP]
This commit is contained in:
virusdefender
2015-10-29 17:46:05 +08:00
9 changed files with 314 additions and 12 deletions

View File

@@ -90,8 +90,8 @@ class ContestAdminAPIView(APIView):
try:
# 超级管理员可以编辑所有的
contest = Contest.objects.get(id=data["id"])
if request.user.admin_type != SUPER_ADMIN:
contest = contest.get(created_by=request.user)
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
return error_response(u"无权访问!")
except Contest.DoesNotExist:
return error_response(u"该比赛不存在!")
try:
@@ -144,6 +144,18 @@ class ContestAdminAPIView(APIView):
---
response_serializer: ContestSerializer
"""
contest_id = request.GET.get("contest_id", None)
if contest_id:
try:
# 普通管理员只能获取自己创建的题目
# 超级管理员可以获取全部的题目
contest = Contest.objects.get(id=contest_id)
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
return error_response(u"题目不存在")
return success_response(ContestSerializer(contest).data)
except Contest.DoesNotExist:
return error_response(u"题目不存在")
if request.user.admin_type == SUPER_ADMIN:
contest = Contest.objects.all().order_by("-create_time")
else:
@@ -171,8 +183,8 @@ class ContestProblemAdminAPIView(APIView):
data = serializer.data
try:
contest = Contest.objects.get(id=data["contest_id"])
if request.user.admin_type != SUPER_ADMIN:
contest = contest.get(created_by=request.user)
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
return error_response(u"比赛不存在")
except Contest.DoesNotExist:
return error_response(u"比赛不存在")
contest_problem = ContestProblem.objects.create(title=data["title"],
@@ -236,8 +248,8 @@ class ContestProblemAdminAPIView(APIView):
if contest_problem_id:
try:
contest_problem = ContestProblem.objects.get(id=contest_problem_id)
if request.user.admin_type != SUPER_ADMIN:
contest_problem = contest_problem.get(created_by=request.user)
if request.user.admin_type != SUPER_ADMIN and contest_problem.created_by != request.user:
return error_response(u"比赛题目不存在")
return success_response(ContestProblemSerializer(contest_problem).data)
except ContestProblem.DoesNotExist:
return error_response(u"比赛题目不存在")