删除每个页面上单独查询公告的逻辑,改为使用 templatetag 实现。

This commit is contained in:
virusdefender 2015-09-11 23:10:54 +08:00
parent c1e0c7cd3a
commit d6499c71aa
6 changed files with 19 additions and 21 deletions

View File

@ -335,10 +335,7 @@ def contest_problems_list_page(request, contest_id):
item.state = 2
else:
item.state = 0
# 右侧的公告列表
announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
return render(request, "oj/contest/contest_problems_list.html", {"contest_problems": contest_problems,
"announcements": announcements,
"contest": {"id": contest_id}})
@ -378,14 +375,10 @@ def contest_list_page(request, page=1):
except Exception:
pass
# 右侧的公告列表
announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
return render(request, "oj/contest/contest_list.html",
{"contests": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_page,
"keyword": keyword, "announcements": announcements,
"join": join})
"keyword": keyword, "join": join})
def _cmp(x, y):

View File

@ -254,9 +254,6 @@ class JoinGroupRequestAdminAPIView(APIView, GroupAPIViewBase):
@login_required
def group_list_page(request, page=1):
# 右侧的公告列表
announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
groups = Group.objects.filter(visible=True, join_group_setting__lte=2)
# 搜索的情况
keyword = request.GET.get("keyword", None)
@ -282,10 +279,10 @@ def group_list_page(request, page=1):
pass
return render(request, "oj/group/group_list.html", {
"groups": groups, "announcements": announcements,
"groups": groups,
"contests": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_page,
"keyword": keyword, "announcements": announcements,
"keyword": keyword
})

View File

@ -255,8 +255,6 @@ 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")
@ -264,4 +262,4 @@ def problem_list_page(request, page=1):
{"problems": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_page,
"keyword": keyword, "tag": tag_text,
"announcements": announcements, "tags": tags})
"tags": tags})

View File

@ -1,3 +1,4 @@
{% load announcement_list %}
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
@ -5,6 +6,7 @@
公告
</h3></div>
<div class="panel-body">
{% public_announcement_list as announcements %}
{% if announcements %}
{% for item in announcements%}
<p>{{ forloop.counter }}.&nbsp;&nbsp;<a href="/announcement/{{ item.id }}/" target="_blank">{{ item.title }}</a>

View File

@ -3,7 +3,7 @@
{% block body %}
{% load submission %}
<div class="container main">
<div class="col-md-9 col-lg-9">
<div class="col-md-12 col-lg-12">
<table class="table table-striped">
<thead>
<tr>
@ -92,8 +92,6 @@
<p>你还没有提交记录!</p>
{% endif %}
</div>
<div class="col-md-3 col-lg-3">
{% include "oj/announcement/_announcement_panel.html" %}
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,10 @@
# coding=utf-8
from django import template
from announcement.models import Announcement
def public_announcement_list():
return Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
register = template.Library()
register.assignment_tag(public_announcement_list, name="public_announcement_list")