Refactored ical_agenda() to be more general. Added parameters and code to permit generation of per-group and per-session ical pages. Added url entries for per-group and per-session ical pages. Changed some parameter names to better reflect their semantics ('session'->'acronym').

- Legacy-Id: 14717
This commit is contained in:
Henrik Levkowetz 2018-03-02 16:37:58 +00:00
parent 770762ff99
commit 92864c233d
3 changed files with 21 additions and 13 deletions

View file

@ -49,8 +49,8 @@ type_ietf_only_patterns = [
url(r'^timeslot/(?P<slotid>\d+).json$', ajax.timeslot_sloturl),
url(r'^agendas$', ajax.agenda_infosurl),
url(r'^agendas.json$', ajax.agenda_infosurl),
url(r'^agenda/(?P<session>[A-Za-z0-9-]+)-drafts.pdf$', views.session_draft_pdf),
url(r'^agenda/(?P<session>[A-Za-z0-9-]+)-drafts.tgz$', views.session_draft_tarfile),
url(r'^agenda/(?P<acronym>[-a-z0-9]+)-drafts.pdf$', views.session_draft_pdf),
url(r'^agenda/(?P<acronym>[-a-z0-9]+)-drafts.tgz$', views.session_draft_tarfile),
url(r'^sessions.json', ajax.sessions_json),
url(r'^session/(?P<sessionid>\d+).json', ajax.session_json),
url(r'^session/(?P<sessionid>\d+)/constraints.json', ajax.session_constraints),
@ -73,6 +73,8 @@ type_ietf_only_patterns_id_optional = [
url(r'^requests$', views.meeting_requests),
url(r'^agenda/agenda.ics$', views.ical_agenda),
url(r'^agenda.ics$', views.ical_agenda),
url(r'^session/(?P<session_id>\d+)\.ics$', views.ical_agenda),
url(r'^session/(?P<acronym>[-a-z0-9]+).ics$', views.ical_agenda),
url(r'^agenda.json$', views.json_agenda),
url(r'^agenda/week-view(?:.html)?/?$', views.week_view),
url(r'^agenda/room-view(?:.html)?/?$', views.room_view),

View file

@ -607,11 +607,11 @@ def agenda_by_type_ics(request,num=None,type=None):
updated = meeting.updated()
return render(request,"meeting/agenda.ics",{"schedule":schedule,"updated":updated,"assignments":assignments},content_type="text/calendar")
def session_draft_list(num, session):
def session_draft_list(num, acronym):
try:
agendas = Document.objects.filter(type="agenda",
session__meeting__number=num,
session__group__acronym=session,
session__group__acronym=acronym,
states=State.objects.get(type="agenda", slug="active")).distinct()
except Document.DoesNotExist:
raise Http404
@ -636,18 +636,18 @@ def session_draft_list(num, session):
except Document.DoesNotExist:
pass
for sp in SessionPresentation.objects.filter(session__meeting__number=num, session__group__acronym=session, document__type='draft'):
for sp in SessionPresentation.objects.filter(session__meeting__number=num, session__group__acronym=acronym, document__type='draft'):
doc_name = sp.document.name + "-" + sp.document.rev
if doc_name not in result:
result.append(doc_name)
return sorted(result)
def session_draft_tarfile(request, num, session):
drafts = session_draft_list(num, session);
def session_draft_tarfile(request, num, acronym):
drafts = session_draft_list(num, acronym);
response = HttpResponse(content_type='application/octet-stream')
response['Content-Disposition'] = 'attachment; filename=%s-drafts.tgz'%(session)
response['Content-Disposition'] = 'attachment; filename=%s-drafts.tgz'%(acronym)
tarstream = tarfile.open('','w:gz',response)
mfh, mfn = mkstemp()
os.close(mfh)
@ -674,8 +674,8 @@ def session_draft_tarfile(request, num, session):
os.unlink(mfn)
return response
def session_draft_pdf(request, num, session):
drafts = session_draft_list(num, session);
def session_draft_pdf(request, num, acronym):
drafts = session_draft_list(num, acronym);
curr_page = 1
pmh, pmn = mkstemp()
os.close(pmh)
@ -829,7 +829,7 @@ def room_view(request, num=None, name=None, owner=None):
template = "meeting/room-view.html"
return render(request, template,{"meeting":meeting,"schedule":schedule,"unavailable":unavailable,"assignments":assignments,"rooms":rooms,"days":days})
def ical_agenda(request, num=None, name=None, ext=None):
def ical_agenda(request, num=None, name=None, acronym=None, session_id=None):
meeting = get_meeting(num)
schedule = get_schedule(meeting, name)
updated = meeting.updated()
@ -863,12 +863,18 @@ def ical_agenda(request, num=None, name=None, ext=None):
assignments = schedule.assignments.exclude(timeslot__type__in=['lead','offagenda'])
assignments = preprocess_assignments_for_agenda(assignments, meeting)
assignments = [a for a in assignments if
if q:
assignments = [a for a in assignments if
(a.timeslot.type_id in include_types
or (a.session.historic_group and a.session.historic_group.acronym in include)
or (a.session.historic_group and a.session.historic_group.historic_parent and a.session.historic_group.historic_parent.acronym in include))
and (not a.session.historic_group or a.session.historic_group.acronym not in exclude)]
if acronym:
assignments = [ a for a in assignments if a.session.historic_group and a.session.historic_group.acronym == acronym ]
elif session_id:
assignments = [ a for a in assignments if a.session_id == int(session_id) ]
return render(request, "meeting/agenda.ics", {
"schedule": schedule,
"assignments": assignments,

View file

@ -130,7 +130,7 @@
{% for p in group_parents %}
<a class="btn btn-default" href="{% url "ietf.meeting.views.ical_agenda" num=schedule.meeting.number %}?{{p.acronym|upper}},-~Other,-~Plenary">{{p.acronym|upper}}</a>
{% endfor %}
<a class="btn btn-default" href="{% url "ietf.meeting.views.ical_agenda" num=schedule.meeting.number %}">Non-area events</a>
<a class="btn btn-default" href="{% url "ietf.meeting.views.ical_agenda" num=schedule.meeting.number %}?~Plenary,~Other">Non-area events</a>
<a id="ical-link" class="hidden btn btn-primary" href="{% url "ietf.meeting.views.ical_agenda" num=schedule.meeting.number %}">Customized schedule</a>
</p>