This commit is contained in:
2026-05-17 07:31:05 -06:00
parent c9751c095f
commit a744baf4c9
8 changed files with 18 additions and 18 deletions

View File

@@ -23,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='user',
name='session_keys',
field=models.JSONField(db_default=models.Value([]), default=list),
field=models.JSONField(db_default=models.Value([], output_field=models.JSONField()), default=list),
),
migrations.AlterField(
model_name='user',
@@ -38,12 +38,12 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='userprofile',
name='acm_problems_status',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='userprofile',
name='oi_problems_status',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='userprofile',

View File

@@ -38,7 +38,7 @@ class User(AbstractBaseUser):
auth_token = models.TextField(null=True)
two_factor_auth = models.BooleanField(default=False, db_default=False)
tfa_token = models.TextField(null=True)
session_keys = JSONField(default=list, db_default=models.Value([]))
session_keys = JSONField(default=list, db_default=models.Value([], output_field=models.JSONField()))
# open api key
open_api = models.BooleanField(default=False, db_default=False)
open_api_appkey = models.TextField(null=True)
@@ -93,9 +93,9 @@ class UserProfile(models.Model):
# }
# }
# }
acm_problems_status = JSONField(default=dict, db_default=models.Value({}))
acm_problems_status = JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
# like acm_problems_status, merely add "score" field
oi_problems_status = JSONField(default=dict, db_default=models.Value({}))
oi_problems_status = JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
real_name = models.TextField(null=True)
avatar = models.TextField(default=f"{settings.AVATAR_URI_PREFIX}/default.png")

View File

@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='acmcontestrank',
name='submission_info',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='acmcontestrank',
@@ -33,7 +33,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='oicontestrank',
name='submission_info',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='oicontestrank',

View File

@@ -67,7 +67,7 @@ class ACMContestRank(AbstractContestRank):
total_time = models.IntegerField(default=0, db_default=0)
# {"23": {"is_ac": True, "ac_time": 8999, "error_number": 2, "is_first_ac": True}}
# key is problem id
submission_info = JSONField(default=dict, db_default=models.Value({}))
submission_info = JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
class Meta:
db_table = "acm_contest_rank"
@@ -84,7 +84,7 @@ class OIContestRank(AbstractContestRank):
total_score = models.IntegerField(default=0, db_default=0)
# {"23": 333}
# key is problem id, value is current score
submission_info = JSONField(default=dict, db_default=models.Value({}))
submission_info = JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
class Meta:
db_table = "oi_contest_rank"

View File

@@ -23,7 +23,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problem',
name='flowchart_data',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='problem',
@@ -43,7 +43,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='problem',
name='statistic_info',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='problem',

View File

@@ -73,13 +73,13 @@ class Problem(models.Model):
submission_number = models.BigIntegerField(default=0, db_default=0)
accepted_number = models.BigIntegerField(default=0, db_default=0)
# {JudgeStatus.ACCEPTED: 3, JudgeStatus.WRONG_ANSWER: 11}, the number means count
statistic_info = models.JSONField(default=dict, db_default=models.Value({}))
statistic_info = models.JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
share_submission = models.BooleanField(default=False, db_default=False)
# 流程图相关字段
allow_flowchart = models.BooleanField(default=False, db_default=False)
mermaid_code = models.TextField(null=True, blank=True)
flowchart_data = models.JSONField(default=dict, db_default=models.Value({}))
flowchart_data = models.JSONField(default=dict, db_default=models.Value({}, output_field=models.JSONField()))
flowchart_hint = models.TextField(null=True, blank=True)
show_flowchart = models.BooleanField(default=False, db_default=False)

View File

@@ -13,7 +13,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='submission',
name='info',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
migrations.AlterField(
model_name='submission',
@@ -28,6 +28,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='submission',
name='statistic_info',
field=models.JSONField(db_default=models.Value({}), default=dict),
field=models.JSONField(db_default=models.Value({}, output_field=models.JSONField()), default=dict),
),
]

View File

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