From ae6566b92f93351921124e3d7a3c467070e0e4a2 Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Fri, 21 Aug 2015 17:58:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A6=96=E9=A1=B5=E7=9A=84?= =?UTF-8?q?=E5=85=AC=E5=91=8A=E5=88=97=E8=A1=A8=EF=BC=8C=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=AD=89=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problem/views.py | 11 ++++++-- static/src/css/oj.css | 4 +++ submission/models.py | 4 +-- template/oj/problem/problem_list.html | 36 +++++++++++---------------- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/problem/views.py b/problem/views.py index 4a6e2c62..26a3a5b7 100644 --- a/problem/views.py +++ b/problem/views.py @@ -6,13 +6,14 @@ import hashlib import json from django.shortcuts import render -from django.db.models import Q +from django.db.models import Q, Count from django.core.paginator import Paginator from rest_framework.views import APIView from django.conf import settings +from announcement.models import Announcement from utils.shortcuts import (serializer_invalid_response, error_response, success_response, paginate, rand_str, error_page) from .serizalizers import (CreateProblemSerializer, EditProblemSerializer, ProblemSerializer, @@ -251,7 +252,13 @@ def problem_list_page(request, page=1): except Exception: pass + # 右侧的公告列表 + announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time") + # 右侧标签列表 按照关联的题目的数量排序 排除题目数量为0的 + tags = ProblemTag.objects.annotate(problem_number=Count("problem")).filter(problem_number__gt=0).order_by("-problem_number") + return render(request, "oj/problem/problem_list.html", {"problems": current_page, "page": int(page), "previous_page": previous_page, "next_page": next_page, - "keyword": keyword, "tag": tag_text}) + "keyword": keyword, "tag": tag_text, + "announcements": announcements, "tags": tags}) diff --git a/static/src/css/oj.css b/static/src/css/oj.css index cc6ac62d..e6bd8355 100644 --- a/static/src/css/oj.css +++ b/static/src/css/oj.css @@ -67,4 +67,8 @@ li.list-group-item { .panel>.list-group{ padding: 0 0; +} + +.ac-flag{ + color: green; } \ No newline at end of file diff --git a/submission/models.py b/submission/models.py index 3442183d..2cde917f 100644 --- a/submission/models.py +++ b/submission/models.py @@ -6,12 +6,12 @@ from judge.judger.result import result class Submission(models.Model): id = models.CharField(max_length=32, default=rand_str, primary_key=True, db_index=True) - user_id = models.IntegerField() + user_id = models.IntegerField(db_index=True) create_time = models.DateTimeField(auto_now_add=True) result = models.IntegerField(default=result["waiting"]) language = models.IntegerField() code = models.TextField() - problem_id = models.IntegerField() + problem_id = models.IntegerField(db_index=True) # 这个字段可能存储很多数据 比如编译错误、系统错误的时候,存储错误原因字符串 # 正常运行的时候存储 lrun 的判题结果,比如cpu时间内存之类的 info = models.TextField(blank=True, null=True) diff --git a/template/oj/problem/problem_list.html b/template/oj/problem/problem_list.html index d8510122..073cfe7b 100644 --- a/template/oj/problem/problem_list.html +++ b/template/oj/problem/problem_list.html @@ -18,15 +18,17 @@ + - - + + {% for item in problems %} + @@ -59,7 +61,11 @@ 公告 -
Panel content
+
+ {% for item in announcements %} + {{ forloop.counter }}.  {{ item.title }} + {% endfor %} +
@@ -69,26 +75,12 @@
# 题目难度通过率难度通过率
{{ item.id }} {{ item.title }} {{ item.difficulty }}