OnlineJudge/submission/models.py

42 lines
1.2 KiB
Python
Raw Normal View History

2017-05-08 09:29:01 +00:00
from django.db import models
from jsonfield import JSONField
from utils.shortcuts import rand_str
class JudgeStatus:
COMPILE_ERROR = -2
WRONG_ANSWER = -1
ACCEPTED = 0
CPU_TIME_LIMIT_EXCEEDED = 1
REAL_TIME_LIMIT_EXCEEDED = 2
MEMORY_LIMIT_EXCEEDED = 3
RUNTIME_ERROR = 4
SYSTEM_ERROR = 5
PENDING = 6
JUDGING = 7
PARTIALLY_ACCEPTED = 8
2017-05-08 09:29:01 +00:00
class Submission(models.Model):
id = models.CharField(max_length=32, default=rand_str, primary_key=True, db_index=True)
contest_id = models.IntegerField(db_index=True, null=True)
2017-05-08 09:29:01 +00:00
problem_id = models.IntegerField(db_index=True)
created_time = models.DateTimeField(auto_now_add=True)
user_id = models.IntegerField(db_index=True)
code = models.TextField()
2017-05-08 09:29:01 +00:00
result = models.IntegerField(default=JudgeStatus.PENDING)
# 判题结果的详细信息
info = JSONField(default={})
2017-05-08 09:29:01 +00:00
language = models.CharField(max_length=20)
shared = models.BooleanField(default=False)
# 题目状态为 Accepted 时才会存储相关info
accepted_time = models.IntegerField(blank=True, null=True)
accepted_info = JSONField(default={})
2017-05-08 09:29:01 +00:00
class Meta:
db_table = "submission"
def __str__(self):
return self.id