Skip to content

Commit 40f38a3

Browse files
committed
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 ietf-tools#2992. - Legacy-Id: 17876 Note: SVN reference [17864] has been migrated to Git commit 5dc4931
2 parents 474c43f + 5dc4931 commit 40f38a3

3 files changed

Lines changed: 34 additions & 11 deletions

File tree

ietf/meeting/helpers.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,19 @@ def get_meeting(num=None,type_in=['ietf',]):
129129
else:
130130
raise Http404("No such meeting found: %s" % num)
131131

132+
def get_current_ietf_meeting():
133+
meetings = Meeting.objects.filter(type='ietf',date__gte=datetime.datetime.today()-datetime.timedelta(days=31)).order_by('date')
134+
return meetings.first()
135+
136+
def get_current_ietf_meeting_num():
137+
return get_current_ietf_meeting().number
138+
132139
def get_ietf_meeting(num=None):
133140
if num:
134-
meetings = Meeting.objects.filter(number=num)
141+
meeting = Meeting.objects.filter(number=num).first()
135142
else:
136-
meetings = Meeting.objects.filter(type='ietf',date__gte=datetime.datetime.today()-datetime.timedelta(days=31)).order_by('date')
137-
return meetings.first()
143+
meeting = get_current_ietf_meeting()
144+
return meeting
138145

139146
def get_schedule(meeting, name=None):
140147
if name is None:

ietf/meeting/views.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
from django.utils.html import format_html
4545
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
4646
from django.views.generic import RedirectView
47-
47+
from django.core.cache import caches
4848

4949
from ietf.doc.fields import SearchableDocumentsField
5050
from ietf.doc.models import Document, State, DocEvent, NewRevisionDocEvent, DocAlias
@@ -61,7 +61,8 @@
6161
from ietf.meeting.helpers import get_all_assignments_from_schedule
6262
from ietf.meeting.helpers import get_modified_from_assignments
6363
from ietf.meeting.helpers import get_wg_list, find_ads_for_meeting
64-
from ietf.meeting.helpers import get_meeting, get_schedule, schedule_permissions, get_ietf_meeting
64+
from ietf.meeting.helpers import get_meeting, get_ietf_meeting, get_current_ietf_meeting_num
65+
from ietf.meeting.helpers import get_schedule, schedule_permissions
6566
from ietf.meeting.helpers import preprocess_assignments_for_agenda, read_agenda_file
6667
from ietf.meeting.helpers import convert_draft_to_pdf, get_earliest_session_date
6768
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=""
902903
else:
903904
raise Http404("No such meeting")
904905

906+
if name == None and owner == None:
907+
cache_key = ("meeting:%s:%s%s" % (meeting.number, base, ext))[:228]
908+
rendered_page = caches['slowpages'].get(cache_key)
909+
if rendered_page:
910+
return rendered_page
911+
905912
if name is None:
906913
schedule = get_schedule(meeting, name)
907914
else:
@@ -943,14 +950,26 @@ def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""
943950

944951
p.group_list.sort(key=lambda g: g.acronym)
945952

946-
return render(request, "meeting/"+base+ext, {
953+
rendered_page = render(request, "meeting/"+base+ext, {
947954
"schedule": schedule,
948955
"filtered_assignments": filtered_assignments,
949956
"updated": updated,
950957
"group_parents": group_parents,
951958
"now": datetime.datetime.now(),
959+
"is_current_meeting": bool(num == get_current_ietf_meeting_num()),
952960
}, content_type=mimetype[ext])
953961

962+
# If the agenda is for the current meeting, only cache for 2 minutes
963+
if name == None and owner == None:
964+
cache_key = ("meeting:%s:%s%s" % (meeting.number, base, ext))[:228]
965+
if meeting.number == get_current_ietf_meeting_num():
966+
timeout = 60 * 2
967+
else:
968+
timeout = 60 * 60 * 24
969+
caches['slowpages'].set(cache_key, rendered_page, timeout)
970+
971+
return rendered_page
972+
954973
def agenda_csv(schedule, filtered_assignments):
955974
response = HttpResponse(content_type="text/csv; charset=%s"%settings.DEFAULT_CHARSET)
956975
writer = csv.writer(response, delimiter=str(','), quoting=csv.QUOTE_ALL)

ietf/templates/meeting/agenda.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,13 @@
4444
</div>
4545
<div class="row">
4646
<div class="col-md-10">
47-
{# cache this part for 5 minutes -- it takes 3-6 seconds to generate #}
48-
{% load cache %}
49-
{% cache 300 ietf_meeting_agenda_utc schedule.meeting.number request.path %}
50-
5147
<h1>Agenda</h1>
5248

49+
{% if is_current_meeting %}
5350
<p class="alert alert-info">
5451
<b>Note:</b> IETF agendas are subject to change, up to and during a meeting.
5552
</p>
53+
{% endif %}
5654

5755
{% if schedule.meeting.agenda_info_note %}
5856
<p class="alert alert-info">
@@ -353,7 +351,6 @@ <h2>
353351
</div>
354352
</div>
355353

356-
{% endcache %}
357354
{% endblock %}
358355

359356
{% block js %}

0 commit comments

Comments
 (0)