update for django6

This commit is contained in:
2026-05-09 05:57:30 -06:00
parent b297eb5475
commit e4e8b7759d
12 changed files with 284 additions and 69 deletions

View File

@@ -0,0 +1,33 @@
# Generated by Django 6.0.4 on 2026-05-09 11:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('submission', '0005_alter_submission_result'),
]
operations = [
migrations.AlterField(
model_name='submission',
name='info',
field=models.JSONField(db_default=models.Value({}), default=dict),
),
migrations.AlterField(
model_name='submission',
name='result',
field=models.IntegerField(choices=[(-2, 'Compile Error'), (-1, 'Wrong Answer'), (0, 'Accepted'), (1, 'CPU Time Limit Exceeded'), (2, 'Real Time Limit Exceeded'), (3, 'Memory Limit Exceeded'), (4, 'Runtime Error'), (5, 'System Error'), (6, 'Pending'), (7, 'Judging'), (8, 'Partially Accepted')], db_default=6, db_index=True, default=6),
),
migrations.AlterField(
model_name='submission',
name='shared',
field=models.BooleanField(db_default=False, default=False),
),
migrations.AlterField(
model_name='submission',
name='statistic_info',
field=models.JSONField(db_default=models.Value({}), default=dict),
),
]

View File

@@ -29,14 +29,14 @@ class Submission(models.Model):
user_id = models.IntegerField(db_index=True)
username = models.TextField()
code = models.TextField()
result = models.IntegerField(choices=JudgeStatus.choices, db_index=True, default=JudgeStatus.PENDING)
result = models.IntegerField(choices=JudgeStatus.choices, db_index=True, default=JudgeStatus.PENDING, db_default=JudgeStatus.PENDING)
# 从JudgeServer返回的判题详情
info = JSONField(default=dict)
info = JSONField(default=dict, db_default=models.Value({}))
language = models.TextField()
shared = models.BooleanField(default=False)
shared = models.BooleanField(default=False, db_default=False)
# 存储该提交所用时间和内存值,方便提交列表显示
# {time_cost: "", memory_cost: "", err_info: "", score: 0}
statistic_info = JSONField(default=dict)
statistic_info = JSONField(default=dict, db_default=models.Value({}))
ip = models.TextField(null=True)
def check_user_permission(self, user, check_share=True):

View File

@@ -2,7 +2,7 @@ from django.db import models
from django.db.models import F
from django.utils import timezone
from problemset.models import ProblemSetProgress
from problemset.models import ProblemSetProgress, ProblemSetStatus
from utils.api import serializers
from utils.serializers import LanguageNameChoiceField
@@ -16,7 +16,7 @@ def bulk_fetch_problemset_progress(user, problem_ids):
rows = (
ProblemSetProgress.objects.filter(
user=user,
problemset__status="active",
problemset__status=ProblemSetStatus.ACTIVE,
problemset__problemsetproblem__problem_id__in=problem_ids,
)
.filter(
@@ -108,7 +108,7 @@ class SubmissionListSerializer(serializers.ModelSerializer):
self._problemset_progress_cache[problem_id] = (
ProblemSetProgress.objects.filter(
user=self.user,
problemset__status="active",
problemset__status=ProblemSetStatus.ACTIVE,
problemset__problemsetproblem__problem_id=problem_id,
)
.filter(