diff --git a/account/migrations/0001_initial.py b/account/migrations/0001_initial.py index e1e588e..f47ae8e 100644 --- a/account/migrations/0001_initial.py +++ b/account/migrations/0001_initial.py @@ -1,13 +1,9 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-01-23 07:59 -from __future__ import unicode_literals - -import django.db.models.deletion -import jsonfield.fields -from django.conf import settings -from django.db import migrations, models +# Generated by Django 5.2.3 on 2025-06-14 08:51 import account.models +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models class Migration(migrations.Migration): @@ -24,19 +20,21 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), - ('username', models.CharField(max_length=30, unique=True)), - ('real_name', models.CharField(max_length=30, null=True)), - ('email', models.EmailField(max_length=254, null=True)), + ('username', models.TextField(unique=True)), + ('email', models.TextField(null=True)), ('create_time', models.DateTimeField(auto_now_add=True, null=True)), - ('admin_type', models.CharField(default='regular_user', max_length=24)), - ('reset_password_token', models.CharField(max_length=40, null=True)), + ('admin_type', models.TextField(default='Regular User')), + ('problem_permission', models.TextField(default='None')), + ('reset_password_token', models.TextField(null=True)), ('reset_password_token_expire_time', models.DateTimeField(null=True)), - ('auth_token', models.CharField(max_length=40, null=True)), + ('auth_token', models.TextField(null=True)), ('two_factor_auth', models.BooleanField(default=False)), - ('tfa_token', models.CharField(max_length=40, null=True)), + ('tfa_token', models.TextField(null=True)), + ('session_keys', models.JSONField(default=list)), ('open_api', models.BooleanField(default=False)), - ('open_api_appkey', models.CharField(max_length=35, null=True)), + ('open_api_appkey', models.TextField(null=True)), ('is_disabled', models.BooleanField(default=False)), + ('raw_password', models.CharField(blank=True, max_length=20, null=True, verbose_name='明文密码')), ], options={ 'db_table': 'user', @@ -49,18 +47,19 @@ class Migration(migrations.Migration): name='UserProfile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('problems_status', jsonfield.fields.JSONField(default={})), - ('avatar', models.CharField(default="default.png", max_length=50)), - ('blog', models.URLField(blank=True, null=True)), - ('mood', models.CharField(blank=True, max_length=200, null=True)), - ('accepted_problem_number', models.IntegerField(default=0)), + ('acm_problems_status', models.JSONField(default=dict)), + ('oi_problems_status', models.JSONField(default=dict)), + ('real_name', models.TextField(null=True)), + ('avatar', models.TextField(default='/public/avatar/default.png')), + ('blog', models.URLField(null=True)), + ('mood', models.TextField(null=True)), + ('github', models.TextField(null=True)), + ('school', models.TextField(null=True)), + ('major', models.TextField(null=True)), + ('language', models.TextField(null=True)), + ('accepted_number', models.IntegerField(default=0)), + ('total_score', models.BigIntegerField(default=0)), ('submission_number', models.IntegerField(default=0)), - ('phone_number', models.CharField(blank=True, max_length=15, null=True)), - ('school', models.CharField(blank=True, max_length=200, null=True)), - ('major', models.CharField(blank=True, max_length=200, null=True)), - ('student_id', models.CharField(blank=True, max_length=15, null=True)), - ('time_zone', models.CharField(blank=True, max_length=32, null=True)), - ('language', models.CharField(blank=True, max_length=32, null=True)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ diff --git a/account/migrations/0002_auto_20170209_1028.py b/account/migrations/0002_auto_20170209_1028.py deleted file mode 100644 index c5698be..0000000 --- a/account/migrations/0002_auto_20170209_1028.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-09 10:28 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='problem_permission', - field=models.CharField(default='None', max_length=24), - ), - migrations.AlterField( - model_name='user', - name='admin_type', - field=models.CharField(default='Regular User', max_length=24), - ), - ] diff --git a/account/migrations/0003_userprofile_total_score.py b/account/migrations/0003_userprofile_total_score.py deleted file mode 100644 index f7efe88..0000000 --- a/account/migrations/0003_userprofile_total_score.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-08-20 02:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0002_auto_20170209_1028'), - ] - - operations = [ - migrations.AddField( - model_name='userprofile', - name='total_score', - field=models.BigIntegerField(default=0), - ), - migrations.RenameField( - model_name='userprofile', - old_name='accepted_problem_number', - new_name='accepted_number', - ), - migrations.RemoveField( - model_name='userprofile', - name='time_zone', - ) - ] diff --git a/account/migrations/0005_auto_20170830_1154.py b/account/migrations/0005_auto_20170830_1154.py deleted file mode 100644 index 1ba8a94..0000000 --- a/account/migrations/0005_auto_20170830_1154.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-30 11:54 -from __future__ import unicode_literals - -from django.db import migrations, models -import jsonfield.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0003_userprofile_total_score'), - ] - - operations = [ - migrations.RenameField( - model_name='userprofile', - old_name='problems_status', - new_name='acm_problems_status', - ), - migrations.AddField( - model_name='userprofile', - name='oi_problems_status', - field=jsonfield.fields.JSONField(default={}), - ), - migrations.RemoveField( - model_name='user', - name='real_name', - ), - migrations.RemoveField( - model_name='userprofile', - name='student_id', - ), - migrations.AddField( - model_name='userprofile', - name='real_name', - field=models.CharField(max_length=30, blank=True, null=True), - ), - ] diff --git a/account/migrations/0006_user_session_keys.py b/account/migrations/0006_user_session_keys.py deleted file mode 100644 index 6dc991a..0000000 --- a/account/migrations/0006_user_session_keys.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-16 06:22 -from __future__ import unicode_literals - -from django.db import migrations, models -import jsonfield.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0005_auto_20170830_1154'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='session_keys', - field=jsonfield.fields.JSONField(default=[]), - ), - migrations.RenameField( - model_name='userprofile', - old_name='phone_number', - new_name='github', - ), - migrations.AlterField( - model_name='userprofile', - name='avatar', - field=models.CharField(default='/static/avatar/default.png', max_length=50), - ), - migrations.AlterField( - model_name='userprofile', - name='github', - field=models.CharField(blank=True, max_length=50, null=True), - ), - ] diff --git a/account/migrations/0008_auto_20171011_1214.py b/account/migrations/0008_auto_20171011_1214.py deleted file mode 100644 index f27cac8..0000000 --- a/account/migrations/0008_auto_20171011_1214.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-11 12:14 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0006_user_session_keys'), - ] - - operations = [ - migrations.RemoveField( - model_name='userprofile', - name='language', - ), - migrations.AlterField( - model_name='user', - name='admin_type', - field=models.CharField(default='Regular User', max_length=32), - ), - migrations.AlterField( - model_name='user', - name='auth_token', - field=models.CharField(max_length=32, null=True), - ), - migrations.AlterField( - model_name='user', - name='email', - field=models.EmailField(max_length=64, null=True), - ), - migrations.AlterField( - model_name='user', - name='open_api_appkey', - field=models.CharField(max_length=32, null=True), - ), - migrations.AlterField( - model_name='user', - name='problem_permission', - field=models.CharField(default='None', max_length=32), - ), - migrations.AlterField( - model_name='user', - name='reset_password_token', - field=models.CharField(max_length=32, null=True), - ), - migrations.AlterField( - model_name='user', - name='session_keys', - field=django.contrib.postgres.fields.jsonb.JSONField(default=list), - ), - migrations.AlterField( - model_name='user', - name='tfa_token', - field=models.CharField(max_length=32, null=True), - ), - migrations.AlterField( - model_name='user', - name='username', - field=models.CharField(max_length=32, unique=True), - ), - migrations.AlterField( - model_name='userprofile', - name='acm_problems_status', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterField( - model_name='userprofile', - name='avatar', - field=models.CharField(default='/static/avatar/default.png', max_length=256), - ), - migrations.AlterField( - model_name='userprofile', - name='github', - field=models.CharField(blank=True, max_length=64, null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='major', - field=models.CharField(blank=True, max_length=64, null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='mood', - field=models.CharField(blank=True, max_length=256, null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='oi_problems_status', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterField( - model_name='userprofile', - name='real_name', - field=models.CharField(blank=True, max_length=32, null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='school', - field=models.CharField(blank=True, max_length=64, null=True), - ), - ] diff --git a/account/migrations/0009_auto_20171125_1514.py b/account/migrations/0009_auto_20171125_1514.py deleted file mode 100644 index b476b78..0000000 --- a/account/migrations/0009_auto_20171125_1514.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-11-25 15:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0008_auto_20171011_1214'), - ] - - operations = [ - migrations.AlterField( - model_name='userprofile', - name='avatar', - field=models.CharField(default='/public/avatar/default.png', max_length=256), - ), - ] diff --git a/account/migrations/0010_auto_20180501_0436.py b/account/migrations/0010_auto_20180501_0436.py deleted file mode 100644 index 1e7d65c..0000000 --- a/account/migrations/0010_auto_20180501_0436.py +++ /dev/null @@ -1,85 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0009_auto_20171125_1514'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='admin_type', - field=models.TextField(default='Regular User'), - ), - migrations.AlterField( - model_name='user', - name='auth_token', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='user', - name='open_api_appkey', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='user', - name='problem_permission', - field=models.TextField(default='None'), - ), - migrations.AlterField( - model_name='user', - name='reset_password_token', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='user', - name='tfa_token', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='user', - name='username', - field=models.TextField(unique=True), - ), - migrations.AlterField( - model_name='userprofile', - name='avatar', - field=models.TextField(default='/public/avatar/default.png'), - ), - migrations.AlterField( - model_name='userprofile', - name='blog', - field=models.URLField(null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='github', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='major', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='mood', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='real_name', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='userprofile', - name='school', - field=models.TextField(null=True), - ), - ] diff --git a/account/migrations/0011_auto_20180501_0456.py b/account/migrations/0011_auto_20180501_0456.py deleted file mode 100644 index 5f170fb..0000000 --- a/account/migrations/0011_auto_20180501_0456.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:56 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0010_auto_20180501_0436'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='email', - field=models.TextField(null=True), - ), - ] diff --git a/account/migrations/0012_userprofile_language.py b/account/migrations/0012_userprofile_language.py deleted file mode 100644 index a879488..0000000 --- a/account/migrations/0012_userprofile_language.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2018-07-15 02:06 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0011_auto_20180501_0456'), - ] - - operations = [ - migrations.AddField( - model_name='userprofile', - name='language', - field=models.TextField(null=True), - ), - ] diff --git a/account/migrations/0013_alter_user_session_keys_and_more.py b/account/migrations/0013_alter_user_session_keys_and_more.py deleted file mode 100644 index 655765a..0000000 --- a/account/migrations/0013_alter_user_session_keys_and_more.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0012_userprofile_language'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='session_keys', - field=models.JSONField(default=list), - ), - migrations.AlterField( - model_name='userprofile', - name='acm_problems_status', - field=models.JSONField(default=dict), - ), - migrations.AlterField( - model_name='userprofile', - name='oi_problems_status', - field=models.JSONField(default=dict), - ), - ] diff --git a/account/migrations/0014_user_raw_password.py b/account/migrations/0014_user_raw_password.py deleted file mode 100644 index 616dd27..0000000 --- a/account/migrations/0014_user_raw_password.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.6 on 2025-05-09 13:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('account', '0013_alter_user_session_keys_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='raw_password', - field=models.CharField(blank=True, max_length=20, null=True, verbose_name='明文密码'), - ), - ] diff --git a/announcement/migrations/0001_initial.py b/announcement/migrations/0001_initial.py index cd92e22..f15b339 100644 --- a/announcement/migrations/0001_initial.py +++ b/announcement/migrations/0001_initial.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-01-23 07:59 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 import django.db.models.deletion +import utils.models from django.conf import settings from django.db import migrations, models -import utils.models - class Migration(migrations.Migration): @@ -22,15 +19,18 @@ class Migration(migrations.Migration): name='Announcement', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=50)), + ('title', models.TextField()), ('content', utils.models.RichTextField()), + ('tag', models.TextField()), ('create_time', models.DateTimeField(auto_now_add=True)), ('last_update_time', models.DateTimeField(auto_now=True)), ('visible', models.BooleanField(default=True)), + ('top', models.BooleanField(default=False)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'announcement', + 'ordering': ('-top', '-create_time'), }, ), ] diff --git a/announcement/migrations/0002_auto_20171011_1214.py b/announcement/migrations/0002_auto_20171011_1214.py deleted file mode 100644 index e2d5abe..0000000 --- a/announcement/migrations/0002_auto_20171011_1214.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-11 12:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('announcement', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='announcement', - name='title', - field=models.CharField(max_length=64), - ), - migrations.AlterModelOptions( - name='announcement', - options={'ordering': ('-create_time',)}, - ), - ] diff --git a/announcement/migrations/0003_auto_20180501_0436.py b/announcement/migrations/0003_auto_20180501_0436.py deleted file mode 100644 index 6ecd492..0000000 --- a/announcement/migrations/0003_auto_20180501_0436.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('announcement', '0002_auto_20171011_1214'), - ] - - operations = [ - migrations.AlterField( - model_name='announcement', - name='title', - field=models.TextField(), - ), - ] diff --git a/announcement/migrations/0004_announcement_tag.py b/announcement/migrations/0004_announcement_tag.py deleted file mode 100644 index 1062ae2..0000000 --- a/announcement/migrations/0004_announcement_tag.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('announcement', '0003_auto_20180501_0436'), - ] - - operations = [ - migrations.AddField( - model_name='announcement', - name='tag', - field=models.TextField(default=''), - preserve_default=False, - ), - ] diff --git a/announcement/migrations/0005_alter_announcement_options_announcement_top.py b/announcement/migrations/0005_alter_announcement_options_announcement_top.py deleted file mode 100644 index 4fd956a..0000000 --- a/announcement/migrations/0005_alter_announcement_options_announcement_top.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-23 11:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("announcement", "0004_announcement_tag"), - ] - - operations = [ - migrations.AlterModelOptions( - name="announcement", - options={"ordering": ("-top", "-create_time")}, - ), - migrations.AddField( - model_name="announcement", - name="top", - field=models.BooleanField(default=False), - ), - ] diff --git a/announcement/migrations/0006_message.py b/announcement/migrations/0006_message.py deleted file mode 100644 index 4960562..0000000 --- a/announcement/migrations/0006_message.py +++ /dev/null @@ -1,61 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-25 11:47 - -import django.db.models.deletion -import utils.models -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("announcement", "0005_alter_announcement_options_announcement_top"), - ("submission", "0013_alter_submission_info_and_more"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name="Message", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("message", utils.models.RichTextField()), - ("create_time", models.DateTimeField(auto_now_add=True)), - ( - "recipient", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="recipient", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "sender", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="sender", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "submission", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="submission.submission", - ), - ), - ], - options={ - "db_table": "message", - "ordering": ("-create_time",), - }, - ), - ] diff --git a/announcement/migrations/0007_delete_message.py b/announcement/migrations/0007_delete_message.py deleted file mode 100644 index de1f4cb..0000000 --- a/announcement/migrations/0007_delete_message.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-29 15:38 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('announcement', '0006_message'), - ] - - operations = [ - migrations.DeleteModel( - name='Message', - ), - ] diff --git a/comment/migrations/0001_initial.py b/comment/migrations/0001_initial.py index 2c92529..3bcf97d 100644 --- a/comment/migrations/0001_initial.py +++ b/comment/migrations/0001_initial.py @@ -1,39 +1,38 @@ -# Generated by Django 5.0.6 on 2024-06-29 13:32 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('problem', '0015_alter_problem_io_mode_alter_problem_languages_and_more'), - ('submission', '0013_alter_submission_info_and_more'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Comment', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('language', models.CharField(default='Python', choices=[('Python', 'Python'), ('C', 'C'), ('C++', 'C++'), ('Java', 'Java')], max_length=10, verbose_name='解决这道题使用的语言')), - ('description_rating', models.PositiveSmallIntegerField(default=5, verbose_name='题目描述的分数')), - ('difficulty_rating', models.PositiveSmallIntegerField(default=5, verbose_name='题目难度的分数')), - ('comprehensive_rating', models.PositiveSmallIntegerField(default=5, verbose_name='综合的分数')), - ('content', models.TextField(blank=True, null=True)), - ('visible', models.BooleanField(default=True)), - ('create_time', models.DateTimeField(auto_now_add=True)), - ('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='problem.problem')), - ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='submission.submission')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - options={ - 'db_table': 'comment', - 'ordering': ('-create_time',), - }, - ), - ] +# Generated by Django 5.2.3 on 2025-06-14 08:51 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('problem', '0001_initial'), + ('submission', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Comment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('language', models.CharField(choices=[('Python', 'Python'), ('C', 'C'), ('C++', 'C++'), ('Java', 'Java')], default='Python', max_length=10, verbose_name='解决这道题使用的语言')), + ('description_rating', models.PositiveSmallIntegerField(default=5, verbose_name='题目描述的分数')), + ('difficulty_rating', models.PositiveSmallIntegerField(default=5, verbose_name='题目难度的分数')), + ('comprehensive_rating', models.PositiveSmallIntegerField(default=5, verbose_name='综合的分数')), + ('content', models.TextField(blank=True, null=True)), + ('create_time', models.DateTimeField(auto_now_add=True)), + ('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='problem.problem')), + ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='submission.submission')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'comment', + 'ordering': ('-create_time',), + }, + ), + ] diff --git a/comment/migrations/0002_remove_comment_visible.py b/comment/migrations/0002_remove_comment_visible.py deleted file mode 100644 index 5cdbeab..0000000 --- a/comment/migrations/0002_remove_comment_visible.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 5.0.6 on 2024-07-02 12:37 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('comment', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='comment', - name='visible', - ), - ] diff --git a/conf/migrations/0001_initial.py b/conf/migrations/0001_initial.py index 46c7dc3..c6578ae 100644 --- a/conf/migrations/0001_initial.py +++ b/conf/migrations/0001_initial.py @@ -1,6 +1,4 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-01-23 07:59 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 from django.db import migrations, models @@ -17,58 +15,20 @@ class Migration(migrations.Migration): name='JudgeServer', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('hostname', models.CharField(max_length=64)), - ('ip', models.CharField(blank=True, max_length=32, null=True)), - ('judger_version', models.CharField(max_length=24)), + ('hostname', models.TextField()), + ('ip', models.TextField(null=True)), + ('judger_version', models.TextField()), ('cpu_core', models.IntegerField()), ('memory_usage', models.FloatField()), ('cpu_usage', models.FloatField()), ('last_heartbeat', models.DateTimeField()), ('create_time', models.DateTimeField(auto_now_add=True)), ('task_number', models.IntegerField(default=0)), - ('service_url', models.CharField(blank=True, max_length=128, null=True)), + ('service_url', models.TextField(null=True)), + ('is_disabled', models.BooleanField(default=False)), ], options={ 'db_table': 'judge_server', }, ), - migrations.CreateModel( - name='JudgeServerToken', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('token', models.CharField(max_length=32)), - ], - options={ - 'db_table': 'judge_server_token', - }, - ), - migrations.CreateModel( - name='SMTPConfig', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('server', models.CharField(max_length=128)), - ('port', models.IntegerField(default=25)), - ('email', models.CharField(max_length=128)), - ('password', models.CharField(max_length=128)), - ('tls', models.BooleanField()), - ], - options={ - 'db_table': 'smtp_config', - }, - ), - migrations.CreateModel( - name='WebsiteConfig', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('base_url', models.CharField(default='http://127.0.0.1', max_length=128)), - ('name', models.CharField(default='Online Judge', max_length=32)), - ('name_shortcut', models.CharField(default='oj', max_length=32)), - ('footer', models.TextField(default='Online Judge Footer')), - ('allow_register', models.BooleanField(default=True)), - ('submission_list_show_all', models.BooleanField(default=True)), - ], - options={ - 'db_table': 'website_config', - }, - ), ] diff --git a/conf/migrations/0002_auto_20171011_1214.py b/conf/migrations/0002_auto_20171011_1214.py deleted file mode 100644 index ef355b5..0000000 --- a/conf/migrations/0002_auto_20171011_1214.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-11 12:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('conf', '0001_initial'), - ] - - operations = [ - migrations.DeleteModel( - name='JudgeServerToken', - ), - migrations.DeleteModel( - name='SMTPConfig', - ), - migrations.DeleteModel( - name='WebsiteConfig', - ), - migrations.AlterField( - model_name='judgeserver', - name='hostname', - field=models.CharField(max_length=128), - ), - migrations.AlterField( - model_name='judgeserver', - name='judger_version', - field=models.CharField(max_length=32), - ), - migrations.AlterField( - model_name='judgeserver', - name='service_url', - field=models.CharField(blank=True, max_length=256, null=True), - ), - ] diff --git a/conf/migrations/0003_judgeserver_is_disabled.py b/conf/migrations/0003_judgeserver_is_disabled.py deleted file mode 100644 index 6a571c0..0000000 --- a/conf/migrations/0003_judgeserver_is_disabled.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-12-24 03:44 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('conf', '0002_auto_20171011_1214'), - ] - - operations = [ - migrations.AddField( - model_name='judgeserver', - name='is_disabled', - field=models.BooleanField(default=False), - ), - ] diff --git a/conf/migrations/0004_auto_20180501_0436.py b/conf/migrations/0004_auto_20180501_0436.py deleted file mode 100644 index 00ede1c..0000000 --- a/conf/migrations/0004_auto_20180501_0436.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('conf', '0003_judgeserver_is_disabled'), - ] - - operations = [ - migrations.AlterField( - model_name='judgeserver', - name='hostname', - field=models.TextField(), - ), - migrations.AlterField( - model_name='judgeserver', - name='ip', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='judgeserver', - name='judger_version', - field=models.TextField(), - ), - migrations.AlterField( - model_name='judgeserver', - name='service_url', - field=models.TextField(null=True), - ), - ] diff --git a/contest/migrations/0001_initial.py b/contest/migrations/0001_initial.py index 255b8d0..3263002 100644 --- a/contest/migrations/0001_initial.py +++ b/contest/migrations/0001_initial.py @@ -1,12 +1,9 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-06 09:19 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 +import django.db.models.deletion +import utils.models from django.conf import settings from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import utils.models class Migration(migrations.Migration): @@ -14,118 +11,78 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('problem', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ - migrations.CreateModel( - name='ACMContestRank', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('total_submission_number', models.IntegerField(default=0)), - ('total_ac_number', models.IntegerField(default=0)), - ('total_time', models.IntegerField(default=0)), - ('submission_info', jsonfield.fields.JSONField(default={})), - ], - options={ - 'db_table': 'acm_contest_rank', - }, - ), migrations.CreateModel( name='Contest', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=40)), + ('title', models.TextField()), ('description', utils.models.RichTextField()), + ('tag', models.TextField()), ('real_time_rank', models.BooleanField()), - ('password', models.CharField(blank=True, max_length=30, null=True)), - ('rule_type', models.CharField(max_length=36)), + ('password', models.TextField(null=True)), + ('rule_type', models.TextField()), ('start_time', models.DateTimeField()), ('end_time', models.DateTimeField()), ('create_time', models.DateTimeField(auto_now_add=True)), ('last_update_time', models.DateTimeField(auto_now=True)), ('visible', models.BooleanField(default=True)), + ('allowed_ip_ranges', models.JSONField(default=list)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'contest', + 'ordering': ('-start_time',), }, ), migrations.CreateModel( name='ContestAnnouncement', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=128)), + ('title', models.TextField()), ('content', utils.models.RichTextField()), + ('visible', models.BooleanField(default=True)), ('create_time', models.DateTimeField(auto_now_add=True)), - ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest')), + ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.contest')), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'contest_announcement', + 'ordering': ('-create_time',), }, ), migrations.CreateModel( - name='ContestProblem', + name='ACMContestRank', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=128)), - ('description', utils.models.RichTextField()), - ('input_description', utils.models.RichTextField()), - ('output_description', utils.models.RichTextField()), - ('samples', jsonfield.fields.JSONField()), - ('test_case_id', models.CharField(max_length=32)), - ('test_case_score', jsonfield.fields.JSONField()), - ('hint', utils.models.RichTextField(blank=True, null=True)), - ('languages', jsonfield.fields.JSONField()), - ('template', jsonfield.fields.JSONField()), - ('create_time', models.DateTimeField(auto_now_add=True)), - ('last_update_time', models.DateTimeField(blank=True, null=True)), - ('time_limit', models.IntegerField()), - ('memory_limit', models.IntegerField()), - ('spj', models.BooleanField(default=False)), - ('spj_language', models.CharField(blank=True, max_length=32, null=True)), - ('spj_code', models.TextField(blank=True, null=True)), - ('spj_version', models.CharField(blank=True, max_length=32, null=True)), - ('rule_type', models.CharField(max_length=32)), - ('visible', models.BooleanField(default=True)), - ('difficulty', models.CharField(max_length=32)), - ('source', models.CharField(blank=True, max_length=200, null=True)), - ('total_submit_number', models.IntegerField(default=0)), - ('total_accepted_number', models.IntegerField(default=0)), - ('sort_index', models.CharField(max_length=30)), - ('is_public', models.BooleanField(default=False)), - ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest')), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('tags', models.ManyToManyField(to='problem.ProblemTag')), + ('submission_number', models.IntegerField(default=0)), + ('accepted_number', models.IntegerField(default=0)), + ('total_time', models.IntegerField(default=0)), + ('submission_info', models.JSONField(default=dict)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.contest')), ], options={ - 'db_table': 'contest_problem', + 'db_table': 'acm_contest_rank', + 'unique_together': {('user', 'contest')}, }, ), migrations.CreateModel( name='OIContestRank', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('total_submission_number', models.IntegerField(default=0)), + ('submission_number', models.IntegerField(default=0)), ('total_score', models.IntegerField(default=0)), - ('submission_info', jsonfield.fields.JSONField(default={})), - ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest')), + ('submission_info', models.JSONField(default=dict)), + ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.contest')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'oi_contest_rank', + 'unique_together': {('user', 'contest')}, }, ), - migrations.AddField( - model_name='acmcontestrank', - name='contest', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest'), - ), - migrations.AddField( - model_name='acmcontestrank', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), ] diff --git a/contest/migrations/0002_auto_20170209_0845.py b/contest/migrations/0002_auto_20170209_0845.py deleted file mode 100644 index 447545f..0000000 --- a/contest/migrations/0002_auto_20170209_0845.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-09 08:45 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='contestproblem', - name='_id', - field=models.CharField(db_index=True, default='1', max_length=24), - preserve_default=False, - ), - migrations.RemoveField( - model_name='contestproblem', - name='sort_index', - ), - migrations.AlterUniqueTogether( - name='contestproblem', - unique_together=set([('_id', 'contest')]), - ), - ] diff --git a/contest/migrations/0003_auto_20170217_0820.py b/contest/migrations/0003_auto_20170217_0820.py deleted file mode 100644 index 4776df9..0000000 --- a/contest/migrations/0003_auto_20170217_0820.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-17 08:20 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0002_auto_20170209_0845'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='contestproblem', - unique_together=set([]), - ), - migrations.RemoveField( - model_name='contestproblem', - name='contest', - ), - migrations.RemoveField( - model_name='contestproblem', - name='created_by', - ), - migrations.RemoveField( - model_name='contestproblem', - name='tags', - ), - migrations.DeleteModel( - name='ContestProblem', - ), - ] diff --git a/contest/migrations/0004_auto_20170717_1324.py b/contest/migrations/0004_auto_20170717_1324.py deleted file mode 100644 index 617790a..0000000 --- a/contest/migrations/0004_auto_20170717_1324.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-07-17 13:24 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0003_auto_20170217_0820'), - ] - - operations = [ - migrations.AlterModelOptions( - name='contest', - options={'ordering': ('-create_time',)}, - ), - migrations.AlterModelOptions( - name='contestannouncement', - options={'ordering': ('-create_time',)}, - ), - ] diff --git a/contest/migrations/0005_auto_20170823_0918.py b/contest/migrations/0005_auto_20170823_0918.py deleted file mode 100644 index dbf12c6..0000000 --- a/contest/migrations/0005_auto_20170823_0918.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-08-23 09:18 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0004_auto_20170717_1324'), - ] - - operations = [ - migrations.RenameField( - model_name='acmcontestrank', - old_name='total_ac_number', - new_name='accepted_number', - ), - migrations.RenameField( - model_name='acmcontestrank', - old_name='total_submission_number', - new_name='submission_number', - ), - migrations.RenameField( - model_name='oicontestrank', - old_name='total_submission_number', - new_name='submission_number', - ), - ] diff --git a/contest/migrations/0006_auto_20171011_1214.py b/contest/migrations/0006_auto_20171011_1214.py deleted file mode 100644 index 0134a5b..0000000 --- a/contest/migrations/0006_auto_20171011_1214.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-11 12:14 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0005_auto_20170823_0918'), - ] - - operations = [ - migrations.AlterField( - model_name='acmcontestrank', - name='submission_info', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterField( - model_name='oicontestrank', - name='submission_info', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterModelOptions( - name='contest', - options={'ordering': ('-start_time',)}, - ), - ] diff --git a/contest/migrations/0007_contestannouncement_visible.py b/contest/migrations/0007_contestannouncement_visible.py deleted file mode 100644 index 679874f..0000000 --- a/contest/migrations/0007_contestannouncement_visible.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-11-06 09:02 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0006_auto_20171011_1214'), - ] - - operations = [ - migrations.AddField( - model_name='contestannouncement', - name='visible', - field=models.BooleanField(default=True), - ), - ] diff --git a/contest/migrations/0008_contest_allowed_ip_ranges.py b/contest/migrations/0008_contest_allowed_ip_ranges.py deleted file mode 100644 index fd6c6ff..0000000 --- a/contest/migrations/0008_contest_allowed_ip_ranges.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-11-10 06:57 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0007_contestannouncement_visible'), - ] - - operations = [ - migrations.AddField( - model_name='contest', - name='allowed_ip_ranges', - field=django.contrib.postgres.fields.jsonb.JSONField(default=list), - ), - ] diff --git a/contest/migrations/0009_auto_20180501_0436.py b/contest/migrations/0009_auto_20180501_0436.py deleted file mode 100644 index eab2add..0000000 --- a/contest/migrations/0009_auto_20180501_0436.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0008_contest_allowed_ip_ranges'), - ] - - operations = [ - migrations.AlterField( - model_name='contest', - name='password', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='contest', - name='rule_type', - field=models.TextField(), - ), - migrations.AlterField( - model_name='contest', - name='title', - field=models.TextField(), - ), - migrations.AlterField( - model_name='contestannouncement', - name='title', - field=models.TextField(), - ), - ] diff --git a/contest/migrations/0010_auto_20190326_0201.py b/contest/migrations/0010_auto_20190326_0201.py deleted file mode 100644 index 8700e1f..0000000 --- a/contest/migrations/0010_auto_20190326_0201.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.1.7 on 2019-03-26 02:01 - -from django.conf import settings -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('contest', '0009_auto_20180501_0436'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='acmcontestrank', - unique_together={('user', 'contest')}, - ), - migrations.AlterUniqueTogether( - name='oicontestrank', - unique_together={('user', 'contest')}, - ), - ] diff --git a/contest/migrations/0011_alter_acmcontestrank_submission_info_and_more.py b/contest/migrations/0011_alter_acmcontestrank_submission_info_and_more.py deleted file mode 100644 index b43fc61..0000000 --- a/contest/migrations/0011_alter_acmcontestrank_submission_info_and_more.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0010_auto_20190326_0201'), - ] - - operations = [ - migrations.AlterField( - model_name='acmcontestrank', - name='submission_info', - field=models.JSONField(default=dict), - ), - migrations.AlterField( - model_name='contest', - name='allowed_ip_ranges', - field=models.JSONField(default=list), - ), - migrations.AlterField( - model_name='oicontestrank', - name='submission_info', - field=models.JSONField(default=dict), - ), - ] diff --git a/contest/migrations/0012_contest_tag.py b/contest/migrations/0012_contest_tag.py deleted file mode 100644 index a821bd2..0000000 --- a/contest/migrations/0012_contest_tag.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 5.0.6 on 2024-07-01 08:08 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0011_alter_acmcontestrank_submission_info_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='contest', - name='tag', - field=models.TextField(default=''), - preserve_default=False, - ), - ] diff --git a/message/migrations/0001_initial.py b/message/migrations/0001_initial.py index 76cda10..579206f 100644 --- a/message/migrations/0001_initial.py +++ b/message/migrations/0001_initial.py @@ -1,34 +1,34 @@ -# Generated by Django 5.0.6 on 2024-06-29 15:38 - -import django.db.models.deletion -import utils.models -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('submission', '0013_alter_submission_info_and_more'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('message', utils.models.RichTextField()), - ('create_time', models.DateTimeField(auto_now_add=True)), - ('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipient', to=settings.AUTH_USER_MODEL)), - ('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sender', to=settings.AUTH_USER_MODEL)), - ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='submission.submission')), - ], - options={ - 'db_table': 'message', - 'ordering': ('-create_time',), - }, - ), - ] +# Generated by Django 5.2.3 on 2025-06-14 08:51 + +import django.db.models.deletion +import utils.models +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('submission', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Message', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('message', utils.models.RichTextField()), + ('create_time', models.DateTimeField(auto_now_add=True)), + ('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipient', to=settings.AUTH_USER_MODEL)), + ('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sender', to=settings.AUTH_USER_MODEL)), + ('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='submission.submission')), + ], + options={ + 'db_table': 'message', + 'ordering': ('-create_time',), + }, + ), + ] diff --git a/options/migrations/0001_initial.py b/options/migrations/0001_initial.py index a109c91..e5b3fbb 100644 --- a/options/migrations/0001_initial.py +++ b/options/migrations/0001_initial.py @@ -1,8 +1,5 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-23 08:11 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 -import django.contrib.postgres.fields.jsonb from django.db import migrations, models @@ -18,8 +15,8 @@ class Migration(migrations.Migration): name='SysOptions', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('key', models.CharField(db_index=True, max_length=128, unique=True)), - ('value', django.contrib.postgres.fields.jsonb.JSONField()), + ('key', models.TextField(db_index=True, unique=True)), + ('value', models.JSONField()), ], ), ] diff --git a/options/migrations/0002_auto_20180501_0436.py b/options/migrations/0002_auto_20180501_0436.py deleted file mode 100644 index 2e76be7..0000000 --- a/options/migrations/0002_auto_20180501_0436.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('options', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='sysoptions', - name='key', - field=models.TextField(db_index=True, unique=True), - ), - ] diff --git a/options/migrations/0003_migrate_languages_options.py b/options/migrations/0003_migrate_languages_options.py deleted file mode 100644 index 0f8f281..0000000 --- a/options/migrations/0003_migrate_languages_options.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('options', '0002_auto_20180501_0436'), - ] - - operations = [ - migrations.RunSQL(""" - DELETE FROM options_sysoptions WHERE key = 'languages'; - """) - ] diff --git a/options/migrations/0004_alter_sysoptions_value.py b/options/migrations/0004_alter_sysoptions_value.py deleted file mode 100644 index 58acddc..0000000 --- a/options/migrations/0004_alter_sysoptions_value.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('options', '0003_migrate_languages_options'), - ] - - operations = [ - migrations.AlterField( - model_name='sysoptions', - name='value', - field=models.JSONField(), - ), - ] diff --git a/problem/migrations/0001_initial.py b/problem/migrations/0001_initial.py index bdcf2ee..3fedc53 100644 --- a/problem/migrations/0001_initial.py +++ b/problem/migrations/0001_initial.py @@ -1,12 +1,10 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-06 09:19 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 +import django.db.models.deletion +import problem.models +import utils.models from django.conf import settings from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import utils.models class Migration(migrations.Migration): @@ -14,58 +12,64 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('contest', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ - migrations.CreateModel( - name='Problem', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=128)), - ('description', utils.models.RichTextField()), - ('input_description', utils.models.RichTextField()), - ('output_description', utils.models.RichTextField()), - ('samples', jsonfield.fields.JSONField()), - ('test_case_id', models.CharField(max_length=32)), - ('test_case_score', jsonfield.fields.JSONField()), - ('hint', utils.models.RichTextField(blank=True, null=True)), - ('languages', jsonfield.fields.JSONField()), - ('template', jsonfield.fields.JSONField()), - ('create_time', models.DateTimeField(auto_now_add=True)), - ('last_update_time', models.DateTimeField(blank=True, null=True)), - ('time_limit', models.IntegerField()), - ('memory_limit', models.IntegerField()), - ('spj', models.BooleanField(default=False)), - ('spj_language', models.CharField(blank=True, max_length=32, null=True)), - ('spj_code', models.TextField(blank=True, null=True)), - ('spj_version', models.CharField(blank=True, max_length=32, null=True)), - ('rule_type', models.CharField(max_length=32)), - ('visible', models.BooleanField(default=True)), - ('difficulty', models.CharField(max_length=32)), - ('source', models.CharField(blank=True, max_length=200, null=True)), - ('total_submit_number', models.IntegerField(default=0)), - ('total_accepted_number', models.IntegerField(default=0)), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - options={ - 'db_table': 'problem', - 'abstract': False, - }, - ), migrations.CreateModel( name='ProblemTag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), + ('name', models.TextField()), ], options={ 'db_table': 'problem_tag', }, ), - migrations.AddField( - model_name='problem', - name='tags', - field=models.ManyToManyField(to='problem.ProblemTag'), + migrations.CreateModel( + name='Problem', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('_id', models.TextField(db_index=True)), + ('is_public', models.BooleanField(default=False)), + ('title', models.TextField()), + ('description', utils.models.RichTextField()), + ('input_description', utils.models.RichTextField()), + ('output_description', utils.models.RichTextField()), + ('samples', models.JSONField()), + ('test_case_id', models.TextField()), + ('test_case_score', models.JSONField()), + ('hint', utils.models.RichTextField(null=True)), + ('languages', models.JSONField()), + ('template', models.JSONField()), + ('create_time', models.DateTimeField(auto_now_add=True)), + ('last_update_time', models.DateTimeField(auto_now=True, null=True)), + ('time_limit', models.IntegerField()), + ('memory_limit', models.IntegerField()), + ('io_mode', models.JSONField(default=problem.models._default_io_mode)), + ('spj', models.BooleanField(default=False)), + ('spj_language', models.TextField(null=True)), + ('spj_code', models.TextField(null=True)), + ('spj_version', models.TextField(null=True)), + ('spj_compile_ok', models.BooleanField(default=False)), + ('rule_type', models.TextField()), + ('visible', models.BooleanField(default=True)), + ('difficulty', models.TextField()), + ('source', models.TextField(null=True)), + ('total_score', models.IntegerField(default=0)), + ('submission_number', models.BigIntegerField(default=0)), + ('accepted_number', models.BigIntegerField(default=0)), + ('statistic_info', models.JSONField(default=dict)), + ('share_submission', models.BooleanField(default=False)), + ('contest', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contest.contest')), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('tags', models.ManyToManyField(to='problem.problemtag')), + ], + options={ + 'db_table': 'problem', + 'ordering': ('create_time',), + 'unique_together': {('_id', 'contest')}, + }, ), ] diff --git a/problem/migrations/0002_problem__id.py b/problem/migrations/0002_problem__id.py deleted file mode 100644 index 7c5d61d..0000000 --- a/problem/migrations/0002_problem__id.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-09 08:45 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='problem', - name='_id', - field=models.CharField(db_index=True, default='1', max_length=24, unique=True), - preserve_default=False, - ), - ] diff --git a/problem/migrations/0003_auto_20170217_0820.py b/problem/migrations/0003_auto_20170217_0820.py deleted file mode 100644 index 70d66f2..0000000 --- a/problem/migrations/0003_auto_20170217_0820.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.12 on 2017-02-17 08:20 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import jsonfield.fields -import utils.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0003_auto_20170217_0820'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('problem', '0002_problem__id'), - ] - - operations = [ - migrations.CreateModel( - name='ContestProblem', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=128)), - ('description', utils.models.RichTextField()), - ('input_description', utils.models.RichTextField()), - ('output_description', utils.models.RichTextField()), - ('samples', jsonfield.fields.JSONField()), - ('test_case_id', models.CharField(max_length=32)), - ('test_case_score', jsonfield.fields.JSONField()), - ('hint', utils.models.RichTextField(blank=True, null=True)), - ('languages', jsonfield.fields.JSONField()), - ('template', jsonfield.fields.JSONField()), - ('create_time', models.DateTimeField(auto_now_add=True)), - ('last_update_time', models.DateTimeField(blank=True, null=True)), - ('time_limit', models.IntegerField()), - ('memory_limit', models.IntegerField()), - ('spj', models.BooleanField(default=False)), - ('spj_language', models.CharField(blank=True, max_length=32, null=True)), - ('spj_code', models.TextField(blank=True, null=True)), - ('spj_version', models.CharField(blank=True, max_length=32, null=True)), - ('rule_type', models.CharField(max_length=32)), - ('visible', models.BooleanField(default=True)), - ('difficulty', models.CharField(max_length=32)), - ('source', models.CharField(blank=True, max_length=200, null=True)), - ('total_submit_number', models.IntegerField(default=0)), - ('total_accepted_number', models.IntegerField(default=0)), - ('_id', models.CharField(db_index=True, max_length=24)), - ('is_public', models.BooleanField(default=False)), - ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest')), - ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('tags', models.ManyToManyField(to='problem.ProblemTag')), - ], - options={ - 'db_table': 'contest_problem', - }, - ), - migrations.AlterUniqueTogether( - name='contestproblem', - unique_together=set([('_id', 'contest')]), - ), - ] diff --git a/problem/migrations/0004_auto_20170501_0637.py b/problem/migrations/0004_auto_20170501_0637.py deleted file mode 100644 index 5d55ace..0000000 --- a/problem/migrations/0004_auto_20170501_0637.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-05-01 06:37 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0003_auto_20170217_0820'), - ] - - operations = [ - migrations.AlterField( - model_name='contestproblem', - name='total_accepted_number', - field=models.BigIntegerField(default=0), - ), - migrations.AlterField( - model_name='contestproblem', - name='total_submit_number', - field=models.BigIntegerField(default=0), - ), - migrations.AlterField( - model_name='problem', - name='total_accepted_number', - field=models.BigIntegerField(default=0), - ), - migrations.AlterField( - model_name='problem', - name='total_submit_number', - field=models.BigIntegerField(default=0), - ), - ] diff --git a/problem/migrations/0005_auto_20170815_1258.py b/problem/migrations/0005_auto_20170815_1258.py deleted file mode 100644 index 1949696..0000000 --- a/problem/migrations/0005_auto_20170815_1258.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-08-15 12:58 -from __future__ import unicode_literals - -from django.db import migrations -import jsonfield.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0004_auto_20170501_0637'), - ] - - operations = [ - migrations.AddField( - model_name='contestproblem', - name='statistic_info', - field=jsonfield.fields.JSONField(default={}), - ), - migrations.AddField( - model_name='problem', - name='statistic_info', - field=jsonfield.fields.JSONField(default={}), - ), - ] diff --git a/problem/migrations/0006_auto_20170823_0918.py b/problem/migrations/0006_auto_20170823_0918.py deleted file mode 100644 index 933070f..0000000 --- a/problem/migrations/0006_auto_20170823_0918.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-08-23 09:18 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0005_auto_20170815_1258'), - ] - - operations = [ - migrations.RenameField( - model_name='contestproblem', - old_name='total_accepted_number', - new_name='accepted_number', - ), - migrations.RenameField( - model_name='contestproblem', - old_name='total_submit_number', - new_name='submission_number', - ), - migrations.RenameField( - model_name='problem', - old_name='total_accepted_number', - new_name='accepted_number', - ), - migrations.RenameField( - model_name='problem', - old_name='total_submit_number', - new_name='submission_number', - ), - ] diff --git a/problem/migrations/0008_auto_20170923_1318.py b/problem/migrations/0008_auto_20170923_1318.py deleted file mode 100644 index 4f5bb99..0000000 --- a/problem/migrations/0008_auto_20170923_1318.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-23 13:18 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('contest', '0005_auto_20170823_0918'), - ('problem', '0006_auto_20170823_0918'), - ] - - operations = [ - migrations.AddField( - model_name='contestproblem', - name='total_score', - field=models.IntegerField(blank=True, default=0), - ), - migrations.AddField( - model_name='problem', - name='total_score', - field=models.IntegerField(blank=True, default=0), - ), - migrations.AlterUniqueTogether( - name='contestproblem', - unique_together=set([]), - ), - migrations.RemoveField( - model_name='contestproblem', - name='contest', - ), - migrations.RemoveField( - model_name='contestproblem', - name='created_by', - ), - migrations.RemoveField( - model_name='contestproblem', - name='tags', - ), - migrations.AddField( - model_name='problem', - name='contest', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contest.Contest'), - preserve_default=False, - ), - migrations.AddField( - model_name='problem', - name='is_public', - field=models.BooleanField(default=False), - ), - migrations.AlterField( - model_name='problem', - name='_id', - field=models.CharField(db_index=True, max_length=24), - ), - migrations.AlterUniqueTogether( - name='problem', - unique_together=set([('_id', 'contest')]), - ), - migrations.DeleteModel( - name='ContestProblem', - ), - ] diff --git a/problem/migrations/0009_auto_20171011_1214.py b/problem/migrations/0009_auto_20171011_1214.py deleted file mode 100644 index e219ff2..0000000 --- a/problem/migrations/0009_auto_20171011_1214.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-11 12:14 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0008_auto_20170923_1318'), - ] - - operations = [ - migrations.AlterField( - model_name='problem', - name='languages', - field=django.contrib.postgres.fields.jsonb.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='samples', - field=django.contrib.postgres.fields.jsonb.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='statistic_info', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterField( - model_name='problem', - name='template', - field=django.contrib.postgres.fields.jsonb.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='test_case_score', - field=django.contrib.postgres.fields.jsonb.JSONField(), - ), - migrations.AlterModelOptions( - name='problem', - options={'ordering': ('create_time',)}, - ), - ] diff --git a/problem/migrations/0010_problem_spj_compile_ok.py b/problem/migrations/0010_problem_spj_compile_ok.py deleted file mode 100644 index 0df1b36..0000000 --- a/problem/migrations/0010_problem_spj_compile_ok.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-11-16 12:42 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0009_auto_20171011_1214'), - ] - - operations = [ - migrations.AddField( - model_name='problem', - name='spj_compile_ok', - field=models.BooleanField(default=False), - ), - ] diff --git a/problem/migrations/0011_fix_problem_ac_count.py b/problem/migrations/0011_fix_problem_ac_count.py deleted file mode 100644 index 0550f9f..0000000 --- a/problem/migrations/0011_fix_problem_ac_count.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations -from django.db.models import Count - - -def fix_problem_count_bugs(apps, schema_editor): - Submission = apps.get_model("submission", "Submission") - Problem = apps.get_model("problem", "Problem") - - for item in Problem.objects.filter(contest__isnull=True): - submissions = Submission.objects.filter(problem=item) - item.submission_number = submissions.count() - results_count = submissions.values('result').annotate(count=Count('result')).order_by('result') - info = dict() - item.accepted_number = 0 - for stat in results_count: - result = stat["result"] - if result == 0: - item.accepted_number = stat["count"] - info[str(result)] = stat["count"] - item.statistic_info = info - item.save(update_fields=["submission_number", "accepted_number", "statistic_info"]) - - -class Migration(migrations.Migration): - dependencies = [ - ('problem', '0010_problem_spj_compile_ok'), - ('submission', '0009_delete_user_output'), - ] - - operations = [ - migrations.RunPython(fix_problem_count_bugs, reverse_code=migrations.RunPython.noop) - ] diff --git a/problem/migrations/0012_auto_20180501_0436.py b/problem/migrations/0012_auto_20180501_0436.py deleted file mode 100644 index 77b5c78..0000000 --- a/problem/migrations/0012_auto_20180501_0436.py +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion -import utils.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0011_fix_problem_ac_count'), - ] - - operations = [ - migrations.AlterField( - model_name='problem', - name='_id', - field=models.TextField(db_index=True), - ), - migrations.AlterField( - model_name='problem', - name='contest', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contest.Contest'), - ), - migrations.AlterField( - model_name='problem', - name='difficulty', - field=models.TextField(), - ), - migrations.AlterField( - model_name='problem', - name='hint', - field=utils.models.RichTextField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='last_update_time', - field=models.DateTimeField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='rule_type', - field=models.TextField(), - ), - migrations.AlterField( - model_name='problem', - name='source', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='spj_code', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='spj_language', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='spj_version', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='problem', - name='test_case_id', - field=models.TextField(), - ), - migrations.AlterField( - model_name='problem', - name='title', - field=models.TextField(), - ), - migrations.AlterField( - model_name='problem', - name='total_score', - field=models.IntegerField(default=0), - ), - migrations.AlterField( - model_name='problemtag', - name='name', - field=models.TextField(), - ), - ] diff --git a/problem/migrations/0013_problem_io_mode.py b/problem/migrations/0013_problem_io_mode.py deleted file mode 100644 index 17136c8..0000000 --- a/problem/migrations/0013_problem_io_mode.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 2.1.7 on 2019-03-12 07:13 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations -import problem.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0012_auto_20180501_0436'), - ] - - operations = [ - migrations.AddField( - model_name='problem', - name='io_mode', - field=django.contrib.postgres.fields.jsonb.JSONField(default=problem.models._default_io_mode), - ), - ] diff --git a/problem/migrations/0014_problem_share_submission.py b/problem/migrations/0014_problem_share_submission.py deleted file mode 100644 index c764d7c..0000000 --- a/problem/migrations/0014_problem_share_submission.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.7 on 2019-03-13 09:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0013_problem_io_mode'), - ] - - operations = [ - migrations.AddField( - model_name='problem', - name='share_submission', - field=models.BooleanField(default=False), - ), - ] diff --git a/problem/migrations/0015_alter_problem_io_mode_alter_problem_languages_and_more.py b/problem/migrations/0015_alter_problem_io_mode_alter_problem_languages_and_more.py deleted file mode 100644 index 6722c9c..0000000 --- a/problem/migrations/0015_alter_problem_io_mode_alter_problem_languages_and_more.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -import problem.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0014_problem_share_submission'), - ] - - operations = [ - migrations.AlterField( - model_name='problem', - name='io_mode', - field=models.JSONField(default=problem.models._default_io_mode), - ), - migrations.AlterField( - model_name='problem', - name='languages', - field=models.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='samples', - field=models.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='statistic_info', - field=models.JSONField(default=dict), - ), - migrations.AlterField( - model_name='problem', - name='template', - field=models.JSONField(), - ), - migrations.AlterField( - model_name='problem', - name='test_case_score', - field=models.JSONField(), - ), - ] diff --git a/problem/migrations/0016_alter_problem_last_update_time.py b/problem/migrations/0016_alter_problem_last_update_time.py deleted file mode 100644 index 0f387dd..0000000 --- a/problem/migrations/0016_alter_problem_last_update_time.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.6 on 2025-04-30 01:40 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0015_alter_problem_io_mode_alter_problem_languages_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='problem', - name='last_update_time', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/problem/migrations/0017_alter_problem_last_update_time.py b/problem/migrations/0017_alter_problem_last_update_time.py deleted file mode 100644 index 63e2a35..0000000 --- a/problem/migrations/0017_alter_problem_last_update_time.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.6 on 2025-05-09 00:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('problem', '0016_alter_problem_last_update_time'), - ] - - operations = [ - migrations.AlterField( - model_name='problem', - name='last_update_time', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/pyproject.toml b/pyproject.toml index da9427a..328f752 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ "coverage==6.5.0", - "django==5.2.3", + "django>=5.2.3", "django-cas-ng==5.0.1", "django-dbconn-retry==0.1.8", "django-dramatiq==0.13.0", diff --git a/submission/migrations/0001_initial.py b/submission/migrations/0001_initial.py index 42a5352..30bce9d 100644 --- a/submission/migrations/0001_initial.py +++ b/submission/migrations/0001_initial.py @@ -1,11 +1,8 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-05-09 06:41 -from __future__ import unicode_literals +# Generated by Django 5.2.3 on 2025-06-14 08:51 -from django.db import migrations, models -import jsonfield.fields -import utils.models +import django.db.models.deletion import utils.shortcuts +from django.db import migrations, models class Migration(migrations.Migration): @@ -13,27 +10,31 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('contest', '0001_initial'), + ('problem', '0001_initial'), ] operations = [ migrations.CreateModel( name='Submission', fields=[ - ('id', models.CharField(db_index=True, default=utils.shortcuts.rand_str, max_length=32, primary_key=True, serialize=False)), - ('contest_id', models.IntegerField(db_index=True, null=True)), - ('problem_id', models.IntegerField(db_index=True)), - ('created_time', models.DateTimeField(auto_now_add=True)), + ('id', models.TextField(db_index=True, default=utils.shortcuts.rand_str, primary_key=True, serialize=False)), + ('create_time', models.DateTimeField(auto_now_add=True)), ('user_id', models.IntegerField(db_index=True)), - ('code', utils.models.RichTextField()), - ('result', models.IntegerField(default=6)), - ('info', jsonfield.fields.JSONField(default={})), - ('language', models.CharField(max_length=20)), + ('username', models.TextField()), + ('code', models.TextField()), + ('result', models.IntegerField(db_index=True, default=6)), + ('info', models.JSONField(default=dict)), + ('language', models.TextField()), ('shared', models.BooleanField(default=False)), - ('accepted_time', models.IntegerField(blank=True, null=True)), - ('accepted_info', jsonfield.fields.JSONField(default={})), + ('statistic_info', models.JSONField(default=dict)), + ('ip', models.TextField(null=True)), + ('contest', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contest.contest')), + ('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='problem.problem')), ], options={ 'db_table': 'submission', + 'ordering': ('-create_time',), }, ), ] diff --git a/submission/migrations/0002_auto_20170509_1203.py b/submission/migrations/0002_auto_20170509_1203.py deleted file mode 100644 index 78dcbe9..0000000 --- a/submission/migrations/0002_auto_20170509_1203.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.6 on 2017-05-09 12:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='code', - field=models.TextField(), - ), - migrations.RenameField( - model_name='submission', - old_name='accepted_info', - new_name='statistic_info', - ), - migrations.RemoveField( - model_name='submission', - name='accepted_time', - ), - migrations.RenameField( - model_name='submission', - old_name='created_time', - new_name='create_time', - ), - migrations.AlterModelOptions( - name='submission', - options={'ordering': ('-create_time',)}, - ) - ] diff --git a/submission/migrations/0005_submission_username.py b/submission/migrations/0005_submission_username.py deleted file mode 100644 index 68a3243..0000000 --- a/submission/migrations/0005_submission_username.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-26 03:47 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0002_auto_20170509_1203'), - ] - - operations = [ - migrations.AddField( - model_name='submission', - name='username', - field=models.CharField(default="", max_length=30), - preserve_default=False, - ), - ] diff --git a/submission/migrations/0006_auto_20170830_1154.py b/submission/migrations/0006_auto_20170830_1154.py deleted file mode 100644 index 675cc86..0000000 --- a/submission/migrations/0006_auto_20170830_1154.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-30 11:54 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0005_submission_username'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='result', - field=models.IntegerField(db_index=True, default=6), - ), - ] diff --git a/submission/migrations/0007_auto_20170923_1318.py b/submission/migrations/0007_auto_20170923_1318.py deleted file mode 100644 index 6356680..0000000 --- a/submission/migrations/0007_auto_20170923_1318.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-23 13:18 -from __future__ import unicode_literals - -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0006_auto_20170830_1154'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='contest_id', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contest.Contest'), - ), - migrations.AlterField( - model_name='submission', - name='problem_id', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='problem.Problem'), - ), - migrations.RenameField( - model_name='submission', - old_name='contest_id', - new_name='contest', - ), - migrations.RenameField( - model_name='submission', - old_name='problem_id', - new_name='problem', - ), - migrations.AlterField( - model_name='submission', - name='info', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - migrations.AlterField( - model_name='submission', - name='statistic_info', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict), - ), - ] diff --git a/submission/migrations/0008_submission_ip.py b/submission/migrations/0008_submission_ip.py deleted file mode 100644 index e60841b..0000000 --- a/submission/migrations/0008_submission_ip.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-11-10 06:57 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0007_auto_20170923_1318'), - ] - - operations = [ - migrations.AddField( - model_name='submission', - name='ip', - field=models.CharField(blank=True, max_length=32, null=True), - ), - ] diff --git a/submission/migrations/0009_delete_user_output.py b/submission/migrations/0009_delete_user_output.py deleted file mode 100644 index 66c90c4..0000000 --- a/submission/migrations/0009_delete_user_output.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def delete_user_output(apps, schema_editor): - Submission = apps.get_model("submission", "Submission") - for item in Submission.objects.all(): - if "data" in item.info and isinstance(item.info["data"], list): - for index in range(len(item.info["data"])): - item.info["data"][index]["output"] = "" - item.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0008_submission_ip'), - ] - - operations = [ - migrations.RunPython(delete_user_output, reverse_code=migrations.RunPython.noop) - ] diff --git a/submission/migrations/0011_fix_submission_number.py b/submission/migrations/0011_fix_submission_number.py deleted file mode 100644 index f3d5e6b..0000000 --- a/submission/migrations/0011_fix_submission_number.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations - - -def fix_rejudge_bugs(apps, schema_editor): - Submission = apps.get_model("submission", "Submission") - User = apps.get_model("account", "User") - - for user in User.objects.all(): - submissions = Submission.objects.filter(user_id=user.id, contest__isnull=True) - profile = user.userprofile - profile.submission_number = submissions.count() - profile.accepted_number = submissions.filter(result=0).count() - profile.save(update_fields=["submission_number", "accepted_number"]) - - -class Migration(migrations.Migration): - dependencies = [ - ('submission', '0009_delete_user_output'), - ('problem', '0010_problem_spj_compile_ok'), - ] - - operations = [ - migrations.RunPython(fix_rejudge_bugs, reverse_code=migrations.RunPython.noop) - ] diff --git a/submission/migrations/0012_auto_20180501_0436.py b/submission/migrations/0012_auto_20180501_0436.py deleted file mode 100644 index b810872..0000000 --- a/submission/migrations/0012_auto_20180501_0436.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2018-05-01 04:36 -from __future__ import unicode_literals - -from django.db import migrations, models -import utils.shortcuts - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0011_fix_submission_number'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='id', - field=models.TextField(db_index=True, default=utils.shortcuts.rand_str, primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='submission', - name='ip', - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name='submission', - name='language', - field=models.TextField(), - ), - migrations.AlterField( - model_name='submission', - name='username', - field=models.TextField(), - ), - ] diff --git a/submission/migrations/0013_alter_submission_info_and_more.py b/submission/migrations/0013_alter_submission_info_and_more.py deleted file mode 100644 index 652e08a..0000000 --- a/submission/migrations/0013_alter_submission_info_and_more.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-13 06:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submission', '0012_auto_20180501_0436'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='info', - field=models.JSONField(default=dict), - ), - migrations.AlterField( - model_name='submission', - name='statistic_info', - field=models.JSONField(default=dict), - ), - ] diff --git a/uv.lock b/uv.lock index 54c2403..93ee4c2 100644 --- a/uv.lock +++ b/uv.lock @@ -322,7 +322,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "coverage", specifier = "==6.5.0" }, - { name = "django", specifier = "==5.2.3" }, + { name = "django", specifier = ">=5.2.3" }, { name = "django-cas-ng", specifier = "==5.0.1" }, { name = "django-dbconn-retry", specifier = "==0.1.8" }, { name = "django-dramatiq", specifier = "==0.13.0" },