Merged in [17864] from housley@vigilsec.com:
Add /meeting/<num>/agenda pages to the slowpages cache. While I was in the template, I also did a recent ticket. Fixes #2992.
- Legacy-Id: 17876
Note: SVN reference [17864] has been migrated to Git commit 5dc4931f87
This commit is contained in:
commit
40f38a343b
|
@ -129,12 +129,19 @@ def get_meeting(num=None,type_in=['ietf',]):
|
|||
else:
|
||||
raise Http404("No such meeting found: %s" % num)
|
||||
|
||||
def get_current_ietf_meeting():
|
||||
meetings = Meeting.objects.filter(type='ietf',date__gte=datetime.datetime.today()-datetime.timedelta(days=31)).order_by('date')
|
||||
return meetings.first()
|
||||
|
||||
def get_current_ietf_meeting_num():
|
||||
return get_current_ietf_meeting().number
|
||||
|
||||
def get_ietf_meeting(num=None):
|
||||
if num:
|
||||
meetings = Meeting.objects.filter(number=num)
|
||||
meeting = Meeting.objects.filter(number=num).first()
|
||||
else:
|
||||
meetings = Meeting.objects.filter(type='ietf',date__gte=datetime.datetime.today()-datetime.timedelta(days=31)).order_by('date')
|
||||
return meetings.first()
|
||||
meeting = get_current_ietf_meeting()
|
||||
return meeting
|
||||
|
||||
def get_schedule(meeting, name=None):
|
||||
if name is None:
|
||||
|
|
|
@ -44,7 +44,7 @@ from django.views.decorators.cache import cache_page
|
|||
from django.utils.html import format_html
|
||||
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
|
||||
from django.views.generic import RedirectView
|
||||
|
||||
from django.core.cache import caches
|
||||
|
||||
from ietf.doc.fields import SearchableDocumentsField
|
||||
from ietf.doc.models import Document, State, DocEvent, NewRevisionDocEvent, DocAlias
|
||||
|
@ -61,7 +61,8 @@ from ietf.meeting.helpers import build_all_agenda_slices, get_wg_name_list
|
|||
from ietf.meeting.helpers import get_all_assignments_from_schedule
|
||||
from ietf.meeting.helpers import get_modified_from_assignments
|
||||
from ietf.meeting.helpers import get_wg_list, find_ads_for_meeting
|
||||
from ietf.meeting.helpers import get_meeting, get_schedule, schedule_permissions, get_ietf_meeting
|
||||
from ietf.meeting.helpers import get_meeting, get_ietf_meeting, get_current_ietf_meeting_num
|
||||
from ietf.meeting.helpers import get_schedule, schedule_permissions
|
||||
from ietf.meeting.helpers import preprocess_assignments_for_agenda, read_agenda_file
|
||||
from ietf.meeting.helpers import convert_draft_to_pdf, get_earliest_session_date
|
||||
from ietf.meeting.helpers import can_view_interim_request, can_approve_interim_request
|
||||
|
@ -902,6 +903,12 @@ def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""
|
|||
else:
|
||||
raise Http404("No such meeting")
|
||||
|
||||
if name == None and owner == None:
|
||||
cache_key = ("meeting:%s:%s%s" % (meeting.number, base, ext))[:228]
|
||||
rendered_page = caches['slowpages'].get(cache_key)
|
||||
if rendered_page:
|
||||
return rendered_page
|
||||
|
||||
if name is None:
|
||||
schedule = get_schedule(meeting, name)
|
||||
else:
|
||||
|
@ -943,14 +950,26 @@ def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""
|
|||
|
||||
p.group_list.sort(key=lambda g: g.acronym)
|
||||
|
||||
return render(request, "meeting/"+base+ext, {
|
||||
rendered_page = render(request, "meeting/"+base+ext, {
|
||||
"schedule": schedule,
|
||||
"filtered_assignments": filtered_assignments,
|
||||
"updated": updated,
|
||||
"group_parents": group_parents,
|
||||
"now": datetime.datetime.now(),
|
||||
"is_current_meeting": bool(num == get_current_ietf_meeting_num()),
|
||||
}, content_type=mimetype[ext])
|
||||
|
||||
# If the agenda is for the current meeting, only cache for 2 minutes
|
||||
if name == None and owner == None:
|
||||
cache_key = ("meeting:%s:%s%s" % (meeting.number, base, ext))[:228]
|
||||
if meeting.number == get_current_ietf_meeting_num():
|
||||
timeout = 60 * 2
|
||||
else:
|
||||
timeout = 60 * 60 * 24
|
||||
caches['slowpages'].set(cache_key, rendered_page, timeout)
|
||||
|
||||
return rendered_page
|
||||
|
||||
def agenda_csv(schedule, filtered_assignments):
|
||||
response = HttpResponse(content_type="text/csv; charset=%s"%settings.DEFAULT_CHARSET)
|
||||
writer = csv.writer(response, delimiter=str(','), quoting=csv.QUOTE_ALL)
|
||||
|
|
|
@ -44,15 +44,13 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
{# cache this part for 5 minutes -- it takes 3-6 seconds to generate #}
|
||||
{% load cache %}
|
||||
{% cache 300 ietf_meeting_agenda_utc schedule.meeting.number request.path %}
|
||||
|
||||
<h1>Agenda</h1>
|
||||
|
||||
{% if is_current_meeting %}
|
||||
<p class="alert alert-info">
|
||||
<b>Note:</b> IETF agendas are subject to change, up to and during a meeting.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if schedule.meeting.agenda_info_note %}
|
||||
<p class="alert alert-info">
|
||||
|
@ -353,7 +351,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{% endcache %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
|
|
Loading…
Reference in a new issue