mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
make invisiable problem visible to super admin
This commit is contained in:
parent
2e5fb77947
commit
2070e372c7
@ -7,7 +7,7 @@ WORKDIR /app
|
||||
|
||||
HEALTHCHECK --interval=5s --retries=3 CMD python2 /app/deploy/health_check.py
|
||||
|
||||
RUN apk add --update --no-cache build-base nginx openssl curl unzip supervisor jpeg-dev zlib-dev postgresql-dev freetype-dev && \
|
||||
RUN apk add --update --no-cache build-base nginx openssl curl unzip supervisor jpeg-dev zlib-dev postgresql-dev freetype-dev vim git && \
|
||||
pip install --no-cache-dir -r /app/deploy/requirements.txt && \
|
||||
apk del build-base --purge
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ import random
|
||||
from django.db.models import Q, Count
|
||||
from utils.api import APIView
|
||||
from account.decorators import check_contest_permission
|
||||
from account.models import AdminType
|
||||
from ..models import ProblemTag, Problem, ProblemRuleType
|
||||
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer
|
||||
from contest.models import ContestRuleType
|
||||
@ -93,11 +94,18 @@ class ContestProblemAPI(APIView):
|
||||
@check_contest_permission(check_type="problems")
|
||||
def get(self, request):
|
||||
problem_id = request.GET.get("problem_id")
|
||||
is_admin = False
|
||||
if request.user.admin_type == AdminType.SUPER_ADMIN:
|
||||
is_admin = True
|
||||
if problem_id:
|
||||
try:
|
||||
problem = Problem.objects.select_related("created_by").get(_id=problem_id,
|
||||
contest=self.contest,
|
||||
visible=True)
|
||||
if is_admin:
|
||||
problem = Problem.objects.select_related("created_by").get(_id=problem_id,
|
||||
contest=self.contest)
|
||||
else:
|
||||
problem = Problem.objects.select_related("created_by").get(_id=problem_id,
|
||||
contest=self.contest,
|
||||
visible=True)
|
||||
except Problem.DoesNotExist:
|
||||
return self.error("Problem does not exist.")
|
||||
if self.contest.problem_details_permission(request.user):
|
||||
@ -107,7 +115,13 @@ class ContestProblemAPI(APIView):
|
||||
problem_data = ProblemSafeSerializer(problem).data
|
||||
return self.success(problem_data)
|
||||
|
||||
contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest, visible=True)
|
||||
if is_admin:
|
||||
contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest)
|
||||
for problem in contest_problems:
|
||||
if not problem.visible:
|
||||
problem.title = problem.title + " ( HIDEN )"
|
||||
else:
|
||||
contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest, visible=True)
|
||||
if self.contest.problem_details_permission(request.user):
|
||||
data = ProblemSerializer(contest_problems, many=True).data
|
||||
self._add_problem_status(request, data)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user