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
|
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 && \
|
pip install --no-cache-dir -r /app/deploy/requirements.txt && \
|
||||||
apk del build-base --purge
|
apk del build-base --purge
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import random
|
|||||||
from django.db.models import Q, Count
|
from django.db.models import Q, Count
|
||||||
from utils.api import APIView
|
from utils.api import APIView
|
||||||
from account.decorators import check_contest_permission
|
from account.decorators import check_contest_permission
|
||||||
|
from account.models import AdminType
|
||||||
from ..models import ProblemTag, Problem, ProblemRuleType
|
from ..models import ProblemTag, Problem, ProblemRuleType
|
||||||
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer
|
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer
|
||||||
from contest.models import ContestRuleType
|
from contest.models import ContestRuleType
|
||||||
@ -93,8 +94,15 @@ class ContestProblemAPI(APIView):
|
|||||||
@check_contest_permission(check_type="problems")
|
@check_contest_permission(check_type="problems")
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
problem_id = request.GET.get("problem_id")
|
problem_id = request.GET.get("problem_id")
|
||||||
|
is_admin = False
|
||||||
|
if request.user.admin_type == AdminType.SUPER_ADMIN:
|
||||||
|
is_admin = True
|
||||||
if problem_id:
|
if problem_id:
|
||||||
try:
|
try:
|
||||||
|
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,
|
problem = Problem.objects.select_related("created_by").get(_id=problem_id,
|
||||||
contest=self.contest,
|
contest=self.contest,
|
||||||
visible=True)
|
visible=True)
|
||||||
@ -107,6 +115,12 @@ class ContestProblemAPI(APIView):
|
|||||||
problem_data = ProblemSafeSerializer(problem).data
|
problem_data = ProblemSafeSerializer(problem).data
|
||||||
return self.success(problem_data)
|
return self.success(problem_data)
|
||||||
|
|
||||||
|
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)
|
contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest, visible=True)
|
||||||
if self.contest.problem_details_permission(request.user):
|
if self.contest.problem_details_permission(request.user):
|
||||||
data = ProblemSerializer(contest_problems, many=True).data
|
data = ProblemSerializer(contest_problems, many=True).data
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user