diff --git a/contest/migrations/0001_initial.py b/contest/migrations/0001_initial.py new file mode 100644 index 0000000..ae0f9ae --- /dev/null +++ b/contest/migrations/0001_initial.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.12 on 2017-01-25 04:50 +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): + + initial = True + + dependencies = [ + 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, unique=True)), + ('description', utils.models.RichTextField()), + ('real_time_rank', models.BooleanField()), + ('password', models.CharField(blank=True, max_length=30, null=True)), + ('contest_type', models.CharField(max_length=36)), + ('rule_type', models.CharField(max_length=36)), + ('start_time', models.DateTimeField()), + ('end_time', models.DateTimeField()), + ('create_time', models.DateTimeField(auto_now_add=True)), + ('last_updated_time', models.DateTimeField(auto_now=True)), + ('visible', models.BooleanField(default=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'contest', + }, + ), + 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)), + ('content', utils.models.RichTextField()), + ('create_time', models.DateTimeField(auto_now_add=True)), + ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contest.Contest')), + ], + options={ + 'db_table': 'contest_announcement', + }, + ), + migrations.CreateModel( + name='ContestProblem', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('description', utils.models.RichTextField()), + ('input_description', models.CharField(max_length=10000)), + ('output_description', models.CharField(max_length=10000)), + ('samples', models.TextField(blank=True)), + ('test_case_id', models.CharField(max_length=40)), + ('hint', utils.models.RichTextField(blank=True, null=True)), + ('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.IntegerField(blank=True, null=True)), + ('spj_code', models.TextField(blank=True, null=True)), + ('spj_version', models.CharField(blank=True, max_length=32, null=True)), + ('visible', models.BooleanField(default=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)), + ], + options={ + 'db_table': 'contest_problem', + }, + ), + 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)), + ('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')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'oi_contest_rank', + }, + ), + 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/group/__init__.py b/contest/migrations/__init__.py similarity index 100% rename from group/__init__.py rename to contest/migrations/__init__.py diff --git a/contest/models.py b/contest/models.py index 13e3fc7..ceb47bf 100644 --- a/contest/models.py +++ b/contest/models.py @@ -3,13 +3,11 @@ from django.utils.timezone import now from jsonfield import JSONField from account.models import User -from group.models import Group from problem.models import AbstractProblem from utils.models import RichTextField class ContestType(object): - GROUP_CONTEST = "group_contest" PUBLIC_CONTEST = "public_contest" PASSWORD_PROTECTED_CONTEST = "password_protected_contest" @@ -40,7 +38,6 @@ class Contest(models.Model): create_time = models.DateTimeField(auto_now_add=True) last_updated_time = models.DateTimeField(auto_now=True) created_by = models.ForeignKey(User) - groups = models.ManyToManyField(Group) # 是否可见 false的话相当于删除 visible = models.BooleanField(default=True) @@ -100,3 +97,13 @@ class OIContestRank(ContestRank): class Meta: db_table = "oi_contest_rank" + + +class ContestAnnouncement(models.Model): + contest = models.ForeignKey(Contest) + title = models.CharField(max_length=128) + content = RichTextField() + create_time = models.DateTimeField(auto_now_add=True) + + class Meta: + db_table = "contest_announcement" diff --git a/group/models.py b/group/models.py deleted file mode 100644 index c3515bb..0000000 --- a/group/models.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.db import models - - -class Group(models.Model): - pass diff --git a/group/tests.py b/group/tests.py deleted file mode 100644 index e69de29..0000000 diff --git a/group/views.py b/group/views.py deleted file mode 100644 index e69de29..0000000 diff --git a/oj/settings.py b/oj/settings.py index 42b6a46..69fa05f 100644 --- a/oj/settings.py +++ b/oj/settings.py @@ -43,6 +43,7 @@ INSTALLED_APPS = ( 'announcement', 'conf', 'problem', + 'contest', 'utils', 'rest_framework',