大幅优化数据库查询, 升级django至1.11 LTS, 升级python至3.6.2
This commit is contained in:
21
submission/migrations/0005_submission_username.py
Normal file
21
submission/migrations/0005_submission_username.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- 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', '0004_auto_20170717_1324'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='submission',
|
||||
name='username',
|
||||
field=models.CharField(default="", max_length=30),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -25,6 +25,7 @@ class Submission(models.Model):
|
||||
problem_id = models.IntegerField(db_index=True)
|
||||
create_time = models.DateTimeField(auto_now_add=True)
|
||||
user_id = models.IntegerField(db_index=True)
|
||||
username = models.CharField(max_length=30)
|
||||
code = models.TextField()
|
||||
result = models.IntegerField(default=JudgeStatus.PENDING)
|
||||
# 判题结果的详细信息
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
from .models import Submission
|
||||
from account.models import User
|
||||
from utils.api import serializers
|
||||
from judge.languages import language_names
|
||||
|
||||
@@ -21,20 +20,14 @@ class SubmissionModelSerializer(serializers.ModelSerializer):
|
||||
|
||||
# 不显示submission info详情的serializer
|
||||
class SubmissionSafeSerializer(serializers.ModelSerializer):
|
||||
username = serializers.SerializerMethodField()
|
||||
statistic_info = serializers.JSONField()
|
||||
|
||||
class Meta:
|
||||
model = Submission
|
||||
exclude = ("info", "contest_id")
|
||||
|
||||
@staticmethod
|
||||
def get_username(obj):
|
||||
return User.objects.get(id=obj.user_id).username
|
||||
|
||||
|
||||
class SubmissionListSerializer(serializers.ModelSerializer):
|
||||
username = serializers.SerializerMethodField()
|
||||
statistic_info = serializers.JSONField()
|
||||
show_link = serializers.SerializerMethodField()
|
||||
|
||||
@@ -47,10 +40,7 @@ class SubmissionListSerializer(serializers.ModelSerializer):
|
||||
exclude = ("info", "contest_id", "code")
|
||||
|
||||
def get_show_link(self, obj):
|
||||
if self.user.id is None:
|
||||
# 没传user或为匿名user
|
||||
if self.user is None or self.user.id is None:
|
||||
return False
|
||||
return obj.check_user_permission(self.user)
|
||||
|
||||
@staticmethod
|
||||
def get_username(obj):
|
||||
return User.objects.get(id=obj.user_id).username
|
||||
|
||||
@@ -34,6 +34,7 @@ def _submit(response, user, problem_id, language, code, contest_id):
|
||||
return response.error("Problem not exist")
|
||||
|
||||
submission = Submission.objects.create(user_id=user.id,
|
||||
username=user.username,
|
||||
language=language,
|
||||
code=code,
|
||||
problem_id=problem._id,
|
||||
|
||||
Reference in New Issue
Block a user