Simplified meeting.session_details. Shows all sessions for a meeting on one page instead of having a page per session. Removes the by-date, by-weekday, by-sequence mechanic.

- Legacy-Id: 10701
This commit is contained in:
Robert Sparks 2016-01-15 17:09:08 +00:00
parent 67f0234cac
commit 4a453281ea
4 changed files with 24 additions and 76 deletions

View file

@ -61,10 +61,6 @@ urlpatterns = patterns('',
(r'^(?P<num>\d+)/session/(?P<sessionid>\d+)/constraints.json', ajax.session_constraints),
(r'^(?P<num>\d+)/session/(?P<acronym>[A-Za-z0-9_\-\+]+)/$', views.session_details),
(r'^(?P<num>\d+)/session/(?P<acronym>[A-Za-z0-9_\-\+]+)/(?P<seq>\d+)/$', views.session_details),
(r'^(?P<num>\d+)/session/(?P<acronym>[A-Za-z0-9_\-\+]+)/(?P<week_day>[a-zA-Z]+)/$', views.session_details),
(r'^(?P<num>\d+)/session/(?P<acronym>[A-Za-z0-9_\-\+]+)/(?P<date>\d{4}-\d{2}-\d{2}(-\d{4})?)/$', views.session_details),
(r'^(?P<num>\d+)/session/(?P<acronym>[A-Za-z0-9_\-\+]+)/(?P<date>\d{4}-\d{2}-\d{2}(-\d{4})?)/(?P<seq>\d+)/$', views.session_details),
(r'^(?P<num>\d+)/constraint/(?P<constraintid>\d+).json', ajax.constraint_json),
(r'^(?P<num>\d+).json$', ajax.meeting_json),

View file

@ -824,30 +824,13 @@ def meeting_requests(request, num=None):
{"meeting": meeting, "sessions":sessions,
"groups_not_meeting": groups_not_meeting})
def session_details(request, num, acronym, date=None, week_day=None, seq=None):
def session_details(request, num, acronym ):
meeting = get_meeting(num)
sessions = Session.objects.filter(meeting=meeting,group__acronym=acronym,type__in=['session','plenary','other'])
if not sessions:
sessions = Session.objects.filter(meeting=meeting,short=acronym)
if date:
if len(date)==15:
start = datetime.datetime.strptime(date,"%Y-%m-%d-%H%M")
sessions = sessions.filter(timeslotassignments__schedule=meeting.agenda,timeslotassignments__timeslot__time=start)
else:
start = datetime.datetime.strptime(date,"%Y-%m-%d").date()
end = start+datetime.timedelta(days=1)
sessions = sessions.filter(timeslotassignments__schedule=meeting.agenda,timeslotassignments__timeslot__time__range=(start,end))
if week_day:
try:
dow = ['sun','mon','tue','wed','thu','fri','sat'].index(week_day.lower()[:3]) + 1
except ValueError:
raise Http404
sessions = sessions.filter(timeslotassignments__schedule=meeting.agenda,timeslotassignments__timeslot__time__week_day=dow)
def sort_key(session):
official_sessions = session.timeslotassignments.filter(schedule=session.meeting.agenda)
if official_sessions:
@ -857,34 +840,19 @@ def session_details(request, num, acronym, date=None, week_day=None, seq=None):
sessions = sorted(sessions,key=sort_key)
if seq:
iseq = int(seq) - 1
if not iseq in range(0,len(sessions)):
raise Http404
else:
sessions= [sessions[iseq]]
if not sessions:
raise Http404
if len(sessions)==1:
session = sessions[0]
scheduled_time = "Not yet scheduled"
for session in sessions:
ss = session.timeslotassignments.filter(schedule=meeting.agenda).order_by('timeslot__time')
if ss:
scheduled_time = ','.join(x.timeslot.time.strftime("%A %b-%d %H%M") for x in ss)
session.time = ', '.join(x.timeslot.time.strftime("%A %b-%d %H%M") for x in ss) if ss else 'Not yet scheduled'
# TODO FIXME Deleted materials shouldn't be in the sessionpresentation_set
filtered_sessionpresentation_set = [p for p in session.sessionpresentation_set.all() if p.document.get_state_slug(p.document.type_id)!='deleted']
return render(request, "meeting/session_details.html",
{ 'session':sessions[0] ,
'meeting' :meeting ,
'acronym' :acronym,
'time': scheduled_time,
'filtered_sessionpresentation_set': filtered_sessionpresentation_set
})
else:
return render(request, "meeting/session_list.html",
{ 'sessions':sessions ,
'meeting' :meeting ,
'acronym' :acronym,
})
session.filtered_sessionpresentation_set = [p for p in session.sessionpresentation_set.all() if p.document.get_state_slug(p.document.type_id)!='deleted']
return render(request, "meeting/session_details.html",
{ 'sessions':sessions ,
'meeting' :meeting ,
'acronym' :acronym,
})

View file

@ -6,20 +6,20 @@
{% block content %}
{% origin %}
<h1>{{ meeting }} : {{ acronym }} : {{ time }} </h1>
<h1>{{ meeting }} : {{ acronym }}</h1>
{% if session.name %}
<h2>{{ session.name }}</h2>
{% endif %}
{% for session in sessions %}
<h2>{{ session.time }}{% if session.name %} : {{ session.name }}{% endif %}</h2>
{% if filtered_sessionpresentation_set %}
<p>Materials:</p>
{% if session.filtered_sessionpresentation_set %}
<p>Materials:</p>
<ul>
{% for pres in filtered_sessionpresentation_set %}
<li><a href="{% url 'doc_view' name=pres.document.name rev=pres.rev%}">{{ pres.document.name }}-{{ pres.rev }}</a></li>
{% endfor %}
</ul>
{% endif %}
<ul>
{% for pres in session.filtered_sessionpresentation_set %}
<li><a href="{% url 'doc_view' name=pres.document.name rev=pres.rev%}">{{ pres.document.name }}-{{ pres.rev }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
{% endblock %}

View file

@ -1,16 +0,0 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% block title %}{{ meeting }} : {{ acronym }}{% endblock %}
{% block content %}
{% origin %}
<h1>{{ meeting }} : {{ acronym }}</h1>
<ul>
{% for session in sessions %}
<li> <a href="{{ forloop.counter }}/">{{session}}</a></li>
{% endfor %}
</ul>
{% endblock %}