Skip to content

Commit 9ff6d88

Browse files
committed
Rewrote the view and template code for the meeting materials list, which was showing nothing. Better to do the rewrite for the new models than trying to dig into why the proxy models doesn't work any more.
- Legacy-Id: 4622
1 parent 356552d commit 9ff6d88

4 files changed

Lines changed: 87 additions & 107 deletions

File tree

ietf/meeting/models.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,21 @@ class Session(models.Model):
166166
def agenda(self):
167167
try:
168168
return self.materials.get(type="agenda",states__type="agenda",states__slug="active")
169-
except Exception, e:
169+
except Exception:
170170
return None
171171

172+
def minutes(self):
173+
try:
174+
return self.materials.get(type="minutes",states__type="minutes",states__slug="active")
175+
except Exception:
176+
return None
177+
178+
def slides(self):
179+
try:
180+
return self.materials.filter(type="slides",states__type="slides",states__slug="active")
181+
except Exception:
182+
return []
183+
172184
def __unicode__(self):
173185
if self.meeting.type_id == "interim":
174186
return self.meeting.number

ietf/meeting/views.py

Lines changed: 26 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
import os
66
import re
77
import tarfile
8-
import pytz
98

109
from tempfile import mkstemp
1110

1211
from django.shortcuts import render_to_response, get_object_or_404
1312
from ietf.idtracker.models import IETFWG, IRTF, Area
14-
from django.views.generic.list_detail import object_list
1513
from django.http import HttpResponseRedirect, HttpResponse, Http404
1614
from django.core.urlresolvers import reverse
1715
from django.db.models import Q
@@ -20,20 +18,19 @@
2018
from django.conf import settings
2119
from django.utils.decorators import decorator_from_middleware
2220
from django.middleware.gzip import GZipMiddleware
23-
from django.db.models import Count, Max
21+
from django.db.models import Max
22+
2423
from ietf.idtracker.models import InternetDraft
25-
from ietf.idrfc.idrfc_wrapper import IdWrapper
2624
from ietf.utils.pipe import pipe
27-
2825
from ietf.utils.history import find_history_active_at
2926
from ietf.doc.models import Document, State
3027

3128
# Old model -- needs to be removed
32-
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities, SessionConflict
29+
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches
3330

3431
# New models
35-
from ietf.meeting.models import Meeting, Room, TimeSlot, Constraint, Session
36-
from ietf.group.models import Group, GroupManager
32+
from ietf.meeting.models import Meeting, TimeSlot, Session
33+
from ietf.group.models import Group
3734

3835

3936
@decorator_from_middleware(GZipMiddleware)
@@ -50,49 +47,20 @@ def show_html_materials(request, meeting_num=None):
5047
sub_began = 0
5148
if now > begin_date:
5249
sub_began = 1
53-
# List of WG sessions and Plenary sessions
54-
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
55-
seen_materials = set()
56-
57-
queryset_list = []
58-
queryset_irtf = []
59-
queryset_interim = [] # currently ignored, have no way of handling interim here
60-
queryset_training = []
61-
for item in WgMeetingSession.objects.filter(meeting=meeting_num):
62-
if not item.session or not item.session.group:
63-
continue
64-
65-
if item.session.group.type_id == "rg":
66-
queryset_irtf.append(item)
67-
elif item.session.group.acronym == "edu":
68-
if item.slides():
69-
queryset_training.append(item)
70-
else:
71-
if item.session.name and not item.slides():
72-
continue
73-
t = tuple(x.pk for x in item.session.materials.all())
74-
if t and t in seen_materials:
75-
continue
76-
seen_materials.add(t)
77-
queryset_list.append(item)
78-
79-
from ietf.doc.models import Document
80-
cache_version = Document.objects.filter(session__meeting__number=meeting_num).aggregate(Max('time'))["time__max"]
81-
else:
82-
queryset_list = WgMeetingSession.objects.filter(Q(meeting=meeting_num, group_acronym_id__gte = -2, status__id=4), Q(irtf__isnull=True) | Q(irtf=0))
83-
queryset_irtf = WgMeetingSession.objects.filter(meeting=meeting_num, group_acronym_id__gte = -2, status__id=4, irtf__gt=0)
84-
queryset_interim = []
85-
queryset_training = []
86-
for item in list(WgMeetingSession.objects.filter(meeting=meeting_num)):
87-
if item.interim_meeting():
88-
item.interim=1
89-
queryset_interim.append(item)
90-
if item.group_acronym_id < -2:
91-
if item.slides():
92-
queryset_training.append(item)
93-
cache_version = WgProceedingsActivities.objects.aggregate(Count('id'))
50+
sessions = Session.objects.filter(meeting__number=meeting_num, timeslot__isnull=False)
51+
plenaries = sessions.filter(name__icontains='plenary')
52+
ietf = sessions.filter(group__parent__type__slug = 'area').exclude(group__acronym='edu')
53+
irtf = sessions.filter(group__parent__acronym = 'irtf')
54+
training = sessions.filter(group__acronym='edu')
55+
56+
cache_version = Document.objects.filter(session__meeting__number=meeting_num).aggregate(Max('time'))["time__max"]
57+
#
9458
return render_to_response("meeting/list.html",
95-
{'meeting_num':meeting_num,'object_list': queryset_list, 'irtf_list':queryset_irtf, 'interim_list':queryset_interim, 'training_list':queryset_training, 'begin_date':begin_date, 'cut_off_date':cut_off_date, 'cor_cut_off_date':cor_cut_off_date,'sub_began':sub_began,'cache_version':cache_version},
59+
{'meeting_num':meeting_num,
60+
'plenaries': plenaries, 'ietf':ietf, 'training':training, 'irtf': irtf,
61+
'begin_date':begin_date, 'cut_off_date':cut_off_date,
62+
'cor_cut_off_date':cor_cut_off_date,'sub_began':sub_began,
63+
'cache_version':cache_version},
9664
context_instance=RequestContext(request))
9765

9866
def current_materials(request):
@@ -185,7 +153,7 @@ def agenda_infoREDESIGN(num=None):
185153
except IOError:
186154
s = "THE AGENDA HAS NOT BEEN UPLOADED YET"
187155

188-
if "technical" in agenda.name.lower():
156+
if "tech" in agenda.name.lower():
189157
plenaryt_agenda = s
190158
else:
191159
plenaryw_agenda = s
@@ -278,13 +246,12 @@ def session_agenda(request, num, session):
278246
raise Http404("No agenda for the %s session of IETF %s is available" % (session, num))
279247

280248
def convert_to_pdf(doc_name):
281-
import subprocess
282249
inpath = os.path.join(settings.IDSUBMIT_REPOSITORY_PATH, doc_name + ".txt")
283250
outpath = os.path.join(settings.INTERNET_DRAFT_PDF_PATH, doc_name + ".pdf")
284251

285252
try:
286253
infile = open(inpath, "r")
287-
except Exception, e:
254+
except IOError:
288255
return
289256

290257
t,tempname = mkstemp()
@@ -336,7 +303,7 @@ def read_agenda_file(num, doc):
336303
return None
337304

338305
def session_draft_list(num, session):
339-
extensions = ["html", "htm", "txt", "HTML", "HTM", "TXT", ]
306+
#extensions = ["html", "htm", "txt", "HTML", "HTM", "TXT", ]
340307
result = []
341308
found = False
342309

@@ -357,7 +324,7 @@ def session_draft_list(num, session):
357324
doc_name = draft
358325
else:
359326
id = InternetDraft.objects.get(filename=draft)
360-
doc = IdWrapper(id)
327+
#doc = IdWrapper(id)
361328
doc_name = draft + "-" + id.revision
362329
result.append(doc_name)
363330
except InternetDraft.DoesNotExist:
@@ -398,7 +365,7 @@ def session_draft_tarfile(request, num, session):
398365
def pdf_pages(file):
399366
try:
400367
infile = open(file, "r")
401-
except Exception, e:
368+
except IOError:
402369
return 0
403370
for line in infile:
404371
m = re.match('\] /Count ([0-9]+)',line)
@@ -491,9 +458,9 @@ def ical_agenda(request, num=None):
491458

492459
def csv_agenda(request, num=None):
493460
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
494-
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
495-
rgs = IRTF.objects.all().order_by('acronym')
496-
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
461+
#wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
462+
#rgs = IRTF.objects.all().order_by('acronym')
463+
#areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
497464

498465
# we should really use the Python csv module or something similar
499466
# rather than a template file which is one big mess

ietf/templates/meeting/list.html

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,50 +21,41 @@ <h1>IETF {{ meeting_num }} Meeting Materials</h1>
2121
{% load cache %}
2222
{% cache 900 ietf_meeting_materials meeting_num cache_version %}
2323

24-
{% regroup object_list|dictsort:"area" by area_name as areas %}
25-
{% for wgs in areas %}
26-
<h2 class="ietf-divider">{{ wgs.grouper }}</h2>
27-
{% ifequal wgs.grouper "Plenary Sessions" %}
28-
{% for wg in wgs.list|dictsortreversed:"acronym" %}
29-
{% include "meeting/list_group.html" %}
30-
{% endfor %}
31-
{% else %}
32-
{% for wg in wgs.list|dictsort:"acronym" %}
33-
{% include "meeting/list_group.html" %}
24+
<!-- Plenaries -->
25+
{% if plenaries %}
26+
<h2 class="ietf-divider">Plenaries</h2>
27+
{% for session in plenaries %}
28+
{% include "meeting/list_group.html" %}
3429
{% endfor %}
35-
{% endifequal %}
36-
{% endfor %}
37-
<!-- Training Sessions -->
38-
{% if training_list %}
39-
<h2 class="ietf-divider">Training</h2>
40-
{% for wg in training_list|dictsort:"acronym" %}
30+
{% endif %}
4131

42-
<table cellpadding="0" cellspacing="0" border="0" width="99%" style="border-bottom:1px solid #cbcbcb;">
43-
<tr>
44-
<td style="width:12em;"><a name="wg-{{ wg.acronym }}"></a><b>{{ wg.acronym|upper }}{% ifequal wg.group_type_str "BOF" %} <font color="red">({{ wg.group_type_str }})</font> {% endifequal %}</b><br/>
45-
{% for slide in wg.slides %}
46-
<a href="http://www.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name|clean_whitespace }}</a><br/>
32+
<!-- Working groups -->
33+
{% regroup ietf|dictsort:"group.parent.id" by group.parent.name as areas %}
34+
{% for sessions in areas %}
35+
<h2 class="ietf-divider">{{ sessions.grouper }}</h2>
36+
{% for session in sessions.list|dictsort:"group.acronym" %}
37+
{% include "meeting/list_group.html" %}
38+
{% endfor %}
4739
{% endfor %}
48-
</td></tr></table>
49-
{% endfor %}
40+
41+
<!-- Training Sessions -->
42+
{% if training %}
43+
<h2 class="ietf-divider">Training</h2>
44+
{% for session in training %}
45+
{% include "meeting/list_group.html" %}
46+
{% endfor %}
5047
{% endif %}
5148
<!-- End of Training Sessions -->
49+
50+
5251
<!-- IRTF Sessions -->
53-
{% if irtf_list %}
52+
{% if irtf %}
5453
<h2 class="ietf-divider">IRTF</h2>
55-
{% for wg in irtf_list|dictsort:"acronym_lower" %}
56-
{% include "meeting/list_group.html" %}
57-
{% endfor %}
54+
{% for session in irtf|dictsort:"group.acronym" %}
55+
{% include "meeting/list_group.html" %}
56+
{% endfor %}
5857
{% endif %}
5958
<!-- End of IRTF Sessions -->
60-
<!-- Interim Meetings -->
61-
{% if interim_list %}
62-
<h2 class="ietf-divider">Interim Meetings</h2>
63-
{% for wg in interim_list|dictsort:"acronym" %}
64-
{% include "meeting/list_group.html" %}
65-
{% endfor %}
66-
{% endif %}
67-
<!-- End of Imterim Meetings -->
6859

6960
{% endcache %}
7061

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
1-
{% load ietf_filters %}<table class="ietf-materials">
2-
<tr>
3-
<td style="width:12em;"><a name="wg-{{ wg.acronym }}"></a><b>{% ifequal wg.acronym "plenaryw" %}Operations and Administration<br/>Plenary{%else%}{% ifequal wg.acronym "plenaryt" %}Technical<br/>Plenary{%else%}{{ wg.acronym|upper }}{%endifequal%}{%endifequal%}
4-
{% ifequal wg.group_type_str "BOF" %} <font color="red">({{ wg.group_type_str }})</font> {% endifequal %}</b><br/>
5-
</td>
6-
<td>
7-
{% if wg.agenda_file %}<a href="http://www.ietf.org/proceedings/{{ wg.agenda_file }}">Agenda</a>{% else %}<span style="background:#ff8888;padding:0 2px;">No agenda received</span> {% endif %}<br/>
8-
{% if wg.minute_file %} <a href="http://www.ietf.org/proceedings/{{ wg.minute_file }}">Minutes</a>{% else %}No minutes received{% endif %}<br/>
9-
{% for slide in wg.slides %}
10-
<a href="http://www.ietf.org/proceedings/{{ slide.file_loc }}">{{ slide.slide_name|clean_whitespace }}</a><br/>
11-
{% endfor %}
12-
</td></tr>
1+
{% load ietf_filters %}
2+
<table class="ietf-materials">
3+
<tr>
4+
<td style="width:12em;">
5+
<a name="session.group-{{ session.group.acronym }}"></a>
6+
<b>
7+
{% if session.name %}
8+
{{ session.name }}
9+
{% else %}
10+
{{session.group.acronym.upper}}
11+
{% ifequal session.group.state.slug "bof" %} <font color="red">({{ session.group.state.slug }})</font>{% endifequal %}
12+
{% endif %}
13+
</b>
14+
</td>
15+
<td>
16+
{% if session.agenda %}<a href="http://www.ietf.org/proceedings/{{meeting_num}}/{{ session.agenda }}">Agenda</a>{% else %}<span style="background:#ff8888;padding:0 2px;">No agenda received</span> {% endif %}<br/>
17+
{% if session.minutes %}<a href="http://www.ietf.org/proceedings/{{ session.group.minute_file }}">Minutes</a>{% else %}No minutes received{% endif %}<br/>
18+
{% for slide in session.slides %}
19+
<a href="http://www.ietf.org/proceedings/{{meeting_num}}/slides/{{ slide.external_url }}">{{ slide.title|clean_whitespace }}</a><br/>
20+
{% endfor %}
21+
</td>
22+
</tr>
1323
</table>
1424

0 commit comments

Comments
 (0)