This commit is contained in:
2026-04-23 13:57:56 -06:00
parent 0c6de0babe
commit 028ea6e5f9
93 changed files with 321 additions and 1454 deletions

View File

@@ -2,8 +2,8 @@ from django.db import models
from account.models import User
from contest.models import Contest
from utils.models import RichTextField
from utils.constants import Choices
from utils.models import RichTextField
class ProblemTag(models.Model):

View File

@@ -5,11 +5,11 @@ from django import forms
from utils.api import UsernameSerializer, serializers
from utils.constants import Difficulty
from utils.serializers import (
LanguageNameMultiChoiceField,
LanguageNameChoiceField,
LanguageNameMultiChoiceField,
)
from .models import Problem, ProblemRuleType, ProblemTag, ProblemIOMode
from .models import Problem, ProblemIOMode, ProblemRuleType, ProblemTag
from .utils import parse_problem_template

View File

@@ -1,14 +1,14 @@
from django.urls import path
from ..views.admin import (
AddContestProblemAPI,
ContestProblemAPI,
MakeContestProblemPublicAPIView,
ProblemAPI,
ProblemFlowchartAIGen,
ProblemVisibleAPI,
StuckProblemsAPI,
TestCaseAPI,
MakeContestProblemPublicAPIView,
AddContestProblemAPI,
ProblemVisibleAPI,
)
urlpatterns = [

View File

@@ -1,12 +1,12 @@
from django.urls import path
from ..views.oj import (
ProblemSolvedPeopleCount,
ProblemTagAPI,
ProblemAPI,
ContestProblemAPI,
PickOneAPI,
ProblemAPI,
ProblemAuthorAPI,
ProblemSolvedPeopleCount,
ProblemTagAPI,
SimilarProblemAPI,
)

View File

@@ -1,7 +1,6 @@
import re
from functools import lru_cache
TEMPLATE_BASE = """//PREPEND BEGIN
{}
//PREPEND END

View File

@@ -7,28 +7,27 @@ import zipfile
from wsgiref.util import FileWrapper
from django.conf import settings
from django.db.models import Q
from django.db.models import Count, Q
from django.http import StreamingHttpResponse
from django.db.models import Count
from account.decorators import problem_permission_required, ensure_created_by, super_admin_required
from account.decorators import ensure_created_by, problem_permission_required, super_admin_required
from contest.models import Contest, ContestStatus
from submission.models import Submission
from utils.api import APIView, CSRFExemptAPIView, validate_serializer, APIError
from utils.shortcuts import rand_str, natural_sort_key
from utils.api import APIError, APIView, CSRFExemptAPIView, validate_serializer
from utils.openai import get_ai_client
from utils.shortcuts import natural_sort_key, rand_str
from ..models import Problem, ProblemRuleType, ProblemTag
from ..serializers import (
AddContestProblemSerializer,
ContestProblemMakePublicSerializer,
CreateContestProblemSerializer,
CreateProblemSerializer,
EditProblemSerializer,
EditContestProblemSerializer,
ProblemAdminSerializer,
EditProblemSerializer,
ProblemAdminListSerializer,
ProblemAdminSerializer,
TestCaseUploadForm,
ContestProblemMakePublicSerializer,
AddContestProblemSerializer,
)

View File

@@ -1,20 +1,23 @@
from datetime import datetime
import random
from django.db.models import Q, Count
from datetime import datetime
from django.core.cache import cache
from account.models import User
from submission.models import Submission, JudgeStatus
from utils.api import APIView
from django.db.models import Count, Q
from account.decorators import check_contest_permission
from account.models import User
from contest.models import ContestRuleType
from submission.models import JudgeStatus, Submission
from utils.api import APIView
from utils.constants import CacheKey
from ..models import ProblemTag, Problem
from ..models import Problem, ProblemTag
from ..serializers import (
ProblemListSerializer,
ProblemSafeSerializer,
ProblemSerializer,
TagSerializer,
ProblemSafeSerializer,
ProblemListSerializer,
)
from contest.models import ContestRuleType
class ProblemTagAPI(APIView):