mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-11-04 14:49:58 +08:00
add contest announcement
This commit is contained in:
parent
89859d9844
commit
e34da1ac33
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 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"
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Group(models.Model):
|
||||
pass
|
||||
@ -43,6 +43,7 @@ INSTALLED_APPS = (
|
||||
'announcement',
|
||||
'conf',
|
||||
'problem',
|
||||
'contest',
|
||||
'utils',
|
||||
|
||||
'rest_framework',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user