add contest announcement
This commit is contained in:
123
contest/migrations/0001_initial.py
Normal file
123
contest/migrations/0001_initial.py
Normal file
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -3,13 +3,11 @@ from django.utils.timezone import now
|
|||||||
from jsonfield import JSONField
|
from jsonfield import JSONField
|
||||||
|
|
||||||
from account.models import User
|
from account.models import User
|
||||||
from group.models import Group
|
|
||||||
from problem.models import AbstractProblem
|
from problem.models import AbstractProblem
|
||||||
from utils.models import RichTextField
|
from utils.models import RichTextField
|
||||||
|
|
||||||
|
|
||||||
class ContestType(object):
|
class ContestType(object):
|
||||||
GROUP_CONTEST = "group_contest"
|
|
||||||
PUBLIC_CONTEST = "public_contest"
|
PUBLIC_CONTEST = "public_contest"
|
||||||
PASSWORD_PROTECTED_CONTEST = "password_protected_contest"
|
PASSWORD_PROTECTED_CONTEST = "password_protected_contest"
|
||||||
|
|
||||||
@@ -40,7 +38,6 @@ class Contest(models.Model):
|
|||||||
create_time = models.DateTimeField(auto_now_add=True)
|
create_time = models.DateTimeField(auto_now_add=True)
|
||||||
last_updated_time = models.DateTimeField(auto_now=True)
|
last_updated_time = models.DateTimeField(auto_now=True)
|
||||||
created_by = models.ForeignKey(User)
|
created_by = models.ForeignKey(User)
|
||||||
groups = models.ManyToManyField(Group)
|
|
||||||
# 是否可见 false的话相当于删除
|
# 是否可见 false的话相当于删除
|
||||||
visible = models.BooleanField(default=True)
|
visible = models.BooleanField(default=True)
|
||||||
|
|
||||||
@@ -100,3 +97,13 @@ class OIContestRank(ContestRank):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = "oi_contest_rank"
|
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"
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
class Group(models.Model):
|
|
||||||
pass
|
|
||||||
@@ -43,6 +43,7 @@ INSTALLED_APPS = (
|
|||||||
'announcement',
|
'announcement',
|
||||||
'conf',
|
'conf',
|
||||||
'problem',
|
'problem',
|
||||||
|
'contest',
|
||||||
'utils',
|
'utils',
|
||||||
|
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
|
|||||||
Reference in New Issue
Block a user