手动修复合并时候出现的冲突

This commit is contained in:
virusdefender
2015-08-25 13:22:01 +08:00
parent 4285e94553
commit 8457c837b9

View File

@@ -2,7 +2,6 @@
import json import json
import datetime import datetime
from functools import wraps from functools import wraps
from collections import OrderedDict
from django.utils.timezone import now from django.utils.timezone import now
from django.shortcuts import render from django.shortcuts import render
from django.db import IntegrityError from django.db import IntegrityError
@@ -108,6 +107,8 @@ class ContestAdminAPIView(APIView):
return error_response(u"请至少选择一个小组") return error_response(u"请至少选择一个小组")
if data["start_time"] >= data["end_time"]: if data["start_time"] >= data["end_time"]:
return error_response(u"比赛的开始时间不能晚于或等于比赛结束的时间") return error_response(u"比赛的开始时间不能晚于或等于比赛结束的时间")
if request.user.admin_type != SUPER_ADMIN and request.user != contest.created_by:
return error_response(u"你无权修改该比赛!")
contest.title = data["title"] contest.title = data["title"]
contest.description = data["description"] contest.description = data["description"]
contest.mode = data["mode"] contest.mode = data["mode"]
@@ -132,7 +133,10 @@ class ContestAdminAPIView(APIView):
--- ---
response_serializer: ContestSerializer response_serializer: ContestSerializer
""" """
if request.user.admin_type == SUPER_ADMIN:
contest = Contest.objects.all().order_by("-last_updated_time") contest = Contest.objects.all().order_by("-last_updated_time")
else:
contest = Contest.objects.filter(created_by=request.user).order_by("-last_updated_time")
visible = request.GET.get("visible", None) visible = request.GET.get("visible", None)
if visible: if visible:
contest = contest.filter(visible=(visible == "true")) contest = contest.filter(visible=(visible == "true"))
@@ -169,7 +173,8 @@ class ContestProblemAdminAPIView(APIView):
created_by=request.user, created_by=request.user,
hint=data["hint"], hint=data["hint"],
contest=contest, contest=contest,
sort_index=data["sort_index"]) sort_index=data["sort_index"],
score=data["score"])
return success_response(ContestProblemSerializer(contest_problem).data) return success_response(ContestProblemSerializer(contest_problem).data)
else: else:
return serializer_invalid_response(serializer) return serializer_invalid_response(serializer)
@@ -184,10 +189,14 @@ class ContestProblemAdminAPIView(APIView):
serializer = EditContestProblemSerializer(data=request.data) serializer = EditContestProblemSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
data = serializer.data data = serializer.data
try: try:
contest_problem = ContestProblem.objects.get(id=data["id"]) contest_problem = ContestProblem.objects.get(id=data["id"])
except ContestProblem.DoesNotExist: except ContestProblem.DoesNotExist:
return error_response(u"该比赛题目不存在!") return error_response(u"该比赛题目不存在!")
contest = Contest.objects.get(id=contest_problem.contest_id)
if request.user.admin_type != SUPER_ADMIN and contest.created_by != request.user:
return error_response(u"你无权修改该题目!")
contest_problem.title = data["title"] contest_problem.title = data["title"]
contest_problem.description = data["description"] contest_problem.description = data["description"]
contest_problem.input_description = data["input_description"] contest_problem.input_description = data["input_description"]
@@ -199,6 +208,7 @@ class ContestProblemAdminAPIView(APIView):
contest_problem.hint = data["hint"] contest_problem.hint = data["hint"]
contest_problem.visible = data["visible"] contest_problem.visible = data["visible"]
contest_problem.sort_index = data["sort_index"] contest_problem.sort_index = data["sort_index"]
contest_problem.score = data["score"]
contest_problem.save() contest_problem.save()
return success_response(ContestProblemSerializer(contest_problem).data) return success_response(ContestProblemSerializer(contest_problem).data)
else: else:
@@ -217,7 +227,10 @@ class ContestProblemAdminAPIView(APIView):
return success_response(ContestProblemSerializer(contest_problem).data) return success_response(ContestProblemSerializer(contest_problem).data)
except ContestProblem.DoesNotExist: except ContestProblem.DoesNotExist:
return error_response(u"比赛题目不存在") return error_response(u"比赛题目不存在")
if request.user.admin_type == SUPER_ADMIN:
contest_problem = ContestProblem.objects.all().order_by("sort_index") contest_problem = ContestProblem.objects.all().order_by("sort_index")
else:
contest_problem = ContestProblem.objects.filter(created_by=request.user).order_by("sort_index")
visible = request.GET.get("visible", None) visible = request.GET.get("visible", None)
if visible: if visible:
contest_problem = contest_problem.filter(visible=(visible == "true")) contest_problem = contest_problem.filter(visible=(visible == "true"))
@@ -225,6 +238,13 @@ class ContestProblemAdminAPIView(APIView):
if keyword: if keyword:
contest_problem = contest_problem.filter(Q(title__contains=keyword) | contest_problem = contest_problem.filter(Q(title__contains=keyword) |
Q(description__contains=keyword)) Q(description__contains=keyword))
contest_id = request.GET.get("contest_id", None)
if contest_id:
try:
contest = Contest.objects.get(id=contest_id)
except Contest.DoesNotExist:
return error_response(u"该比赛不存在!")
contest_problem = contest_problem.filter(contest=contest).order_by("sort_index")
return paginate(request, contest_problem, ContestProblemSerializer) return paginate(request, contest_problem, ContestProblemSerializer)
@@ -280,7 +300,7 @@ def contest_problem_page(request, contest_id, contest_problem_id):
contest_problem = ContestProblem.objects.get(id=contest_problem_id, visible=True) contest_problem = ContestProblem.objects.get(id=contest_problem_id, visible=True)
except ContestProblem.DoesNotExist: except ContestProblem.DoesNotExist:
return error_page(request, u"比赛题目不存在") return error_page(request, u"比赛题目不存在")
warning = "您已经提交过本题的正确答案!" warning = u"您已经提交过本题的正确答案!"
show_warning = False show_warning = False
try: try:
submission = ContestSubmission.objects.get(user=request.user, contest=contest, problem=contest_problem) submission = ContestSubmission.objects.get(user=request.user, contest=contest, problem=contest_problem)
@@ -291,7 +311,7 @@ def contest_problem_page(request, contest_id, contest_problem_id):
# 已经结束 # 已经结束
if contest.status == -1: if contest.status == -1:
show_warning = True show_warning = True
warning = "比赛已经结束" warning = u"比赛已经结束"
return render(request, "oj/contest/contest_problem.html", {"contest_problem": contest_problem, "contest": contest, return render(request, "oj/contest/contest_problem.html", {"contest_problem": contest_problem, "contest": contest,
"samples": json.loads(contest_problem.samples), "samples": json.loads(contest_problem.samples),
"show_warning": show_warning, "warning": warning}) "show_warning": show_warning, "warning": warning})