删除每个页面上单独查询公告的逻辑,改为使用 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 item.state = 2
else: else:
item.state = 0 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, return render(request, "oj/contest/contest_problems_list.html", {"contest_problems": contest_problems,
"announcements": announcements,
"contest": {"id": contest_id}}) "contest": {"id": contest_id}})
@ -378,14 +375,10 @@ def contest_list_page(request, page=1):
except Exception: except Exception:
pass pass
# 右侧的公告列表
announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
return render(request, "oj/contest/contest_list.html", return render(request, "oj/contest/contest_list.html",
{"contests": current_page, "page": int(page), {"contests": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_page, "previous_page": previous_page, "next_page": next_page,
"keyword": keyword, "announcements": announcements, "keyword": keyword, "join": join})
"join": join})
def _cmp(x, y): def _cmp(x, y):

View File

@ -254,9 +254,6 @@ class JoinGroupRequestAdminAPIView(APIView, GroupAPIViewBase):
@login_required @login_required
def group_list_page(request, page=1): 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) groups = Group.objects.filter(visible=True, join_group_setting__lte=2)
# 搜索的情况 # 搜索的情况
keyword = request.GET.get("keyword", None) keyword = request.GET.get("keyword", None)
@ -282,10 +279,10 @@ def group_list_page(request, page=1):
pass pass
return render(request, "oj/group/group_list.html", { return render(request, "oj/group/group_list.html", {
"groups": groups, "announcements": announcements, "groups": groups,
"contests": current_page, "page": int(page), "contests": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_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: except Exception:
pass pass
# 右侧的公告列表
announcements = Announcement.objects.filter(is_global=True, visible=True).order_by("-create_time")
# 右侧标签列表 按照关联的题目的数量排序 排除题目数量为0的 # 右侧标签列表 按照关联的题目的数量排序 排除题目数量为0的
tags = ProblemTag.objects.annotate(problem_number=Count("problem")).filter(problem_number__gt=0).order_by("-problem_number") 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), {"problems": current_page, "page": int(page),
"previous_page": previous_page, "next_page": next_page, "previous_page": previous_page, "next_page": next_page,
"keyword": keyword, "tag": tag_text, "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 panel-info">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
@ -5,8 +6,9 @@
公告 公告
</h3></div> </h3></div>
<div class="panel-body"> <div class="panel-body">
{% public_announcement_list as announcements %}
{% if announcements %} {% if announcements %}
{% for item in announcements %} {% for item in announcements%}
<p>{{ forloop.counter }}.&nbsp;&nbsp;<a href="/announcement/{{ item.id }}/" target="_blank">{{ item.title }}</a> <p>{{ forloop.counter }}.&nbsp;&nbsp;<a href="/announcement/{{ item.id }}/" target="_blank">{{ item.title }}</a>
</p> </p>
{% endfor %} {% endfor %}

View File

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