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,58 @@
# Generated by Django 6.0.4 on 2026-05-09 11:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('account', '0004_alter_user_admin_type_alter_user_problem_permission'),
]
operations = [
migrations.AlterField(
model_name='user',
name='is_disabled',
field=models.BooleanField(db_default=False, default=False),
),
migrations.AlterField(
model_name='user',
name='open_api',
field=models.BooleanField(db_default=False, default=False),
),
migrations.AlterField(
model_name='user',
name='session_keys',
field=models.JSONField(db_default=models.Value([]), default=list),
),
migrations.AlterField(
model_name='user',
name='two_factor_auth',
field=models.BooleanField(db_default=False, default=False),
),
migrations.AlterField(
model_name='userprofile',
name='accepted_number',
field=models.IntegerField(db_default=0, default=0),
),
migrations.AlterField(
model_name='userprofile',
name='acm_problems_status',
field=models.JSONField(db_default=models.Value({}), default=dict),
),
migrations.AlterField(
model_name='userprofile',
name='oi_problems_status',
field=models.JSONField(db_default=models.Value({}), default=dict),
),
migrations.AlterField(
model_name='userprofile',
name='submission_number',
field=models.IntegerField(db_default=0, default=0),
),
migrations.AlterField(
model_name='userprofile',
name='total_score',
field=models.BigIntegerField(db_default=0, default=0),
),
]

View File

@@ -36,13 +36,13 @@ class User(AbstractBaseUser):
reset_password_token_expire_time = models.DateTimeField(null=True)
# SSO auth token
auth_token = models.TextField(null=True)
two_factor_auth = models.BooleanField(default=False)
two_factor_auth = models.BooleanField(default=False, db_default=False)
tfa_token = models.TextField(null=True)
session_keys = JSONField(default=list)
session_keys = JSONField(default=list, db_default=models.Value([]))
# open api key
open_api = models.BooleanField(default=False)
open_api = models.BooleanField(default=False, db_default=False)
open_api_appkey = models.TextField(null=True)
is_disabled = models.BooleanField(default=False)
is_disabled = models.BooleanField(default=False, db_default=False)
raw_password = models.CharField(max_length=20, null=True, blank=True, verbose_name="明文密码")
USERNAME_FIELD = "username"
@@ -93,9 +93,9 @@ class UserProfile(models.Model):
# }
# }
# }
acm_problems_status = JSONField(default=dict)
acm_problems_status = JSONField(default=dict, db_default=models.Value({}))
# like acm_problems_status, merely add "score" field
oi_problems_status = JSONField(default=dict)
oi_problems_status = JSONField(default=dict, db_default=models.Value({}))
real_name = models.TextField(null=True)
avatar = models.TextField(default=f"{settings.AVATAR_URI_PREFIX}/default.png")
@@ -106,24 +106,24 @@ class UserProfile(models.Model):
major = models.TextField(null=True)
language = models.TextField(null=True)
# for ACM
accepted_number = models.IntegerField(default=0)
accepted_number = models.IntegerField(default=0, db_default=0)
# for OI
total_score = models.BigIntegerField(default=0)
submission_number = models.IntegerField(default=0)
total_score = models.BigIntegerField(default=0, db_default=0)
submission_number = models.IntegerField(default=0, db_default=0)
def add_accepted_problem_number(self):
self.accepted_number = models.F("accepted_number") + 1
self.save()
self.save(update_fields=["accepted_number"])
def add_submission_number(self):
self.submission_number = models.F("submission_number") + 1
self.save()
self.save(update_fields=["submission_number"])
# 计算总分时, 应先减掉上次该题所得分数, 然后再加上本次所得分数
def add_score(self, this_time_score, last_time_score=None):
last_time_score = last_time_score or 0
self.total_score = models.F("total_score") - last_time_score + this_time_score
self.save()
self.save(update_fields=["total_score"])
class Meta:
db_table = "user_profile"