Skip to content

Commit e9756d8

Browse files
committed
Remove the not-quite-working customization widgets from /meeting/upcoming and /meeting/past. Simplify those views. Correct the list of sessions on those pages when one interim has more than one session. Fixes ietf-tools#2938. Partially addresses ietf-tools#2937. Commit ready for merge.
- Legacy-Id: 17555
1 parent 8e9d65e commit e9756d8

6 files changed

Lines changed: 97 additions & 192 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1321,13 +1321,14 @@ def test_past(self):
13211321
today = datetime.date.today()
13221322
last_week = today - datetime.timedelta(days=7)
13231323
ietf = SessionFactory(meeting__type_id='ietf',meeting__date=last_week,group__state_id='active',group__parent=GroupFactory(state_id='active'))
1324-
interim = SessionFactory(meeting__type_id='interim',meeting__date=last_week,status_id='canceled',group__state_id='active',group__parent=GroupFactory(state_id='active'))
1324+
SessionFactory(meeting__type_id='interim',meeting__date=last_week,status_id='canceled',group__state_id='active',group__parent=GroupFactory(state_id='active'))
13251325
url = urlreverse('ietf.meeting.views.past')
13261326
r = self.client.get(url)
13271327
self.assertContains(r, 'IETF - %02d'%int(ietf.meeting.number))
13281328
q = PyQuery(r.content)
1329-
id="-%s" % interim.group.acronym
1330-
self.assertIn('CANCELLED', q('[id*="'+id+'"]').text())
1329+
#id="-%s" % interim.group.acronym
1330+
#self.assertIn('CANCELLED', q('[id*="'+id+'"]').text())
1331+
self.assertIn('CANCELLED', q('tr>td>a>span').text())
13311332

13321333
def test_upcoming(self):
13331334
make_meeting_test_data()
@@ -1339,10 +1340,11 @@ def test_upcoming(self):
13391340
r = self.client.get(url)
13401341
self.assertContains(r, mars_interim.number)
13411342
self.assertContains(r, ames_interim.number)
1342-
self.assertContains(r, 'IETF - 72')
1343+
self.assertContains(r, 'IETF 72')
13431344
# cancelled session
13441345
q = PyQuery(r.content)
1345-
self.assertIn('CANCELLED', q('[id*="-ames"]').text())
1346+
# self.assertIn('CANCELLED', q('[id*="-ames"]').text())
1347+
self.assertIn('CANCELLED', q('tr>td>a>span').text())
13461348
self.check_interim_tabs(url)
13471349

13481350
def test_upcoming_ical(self):

ietf/meeting/utils.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,26 @@ def only_sessions_that_can_meet(session_qs):
241241

242242
return qs
243243

244+
245+
# Keeping this as a note that might help when returning Customization to the /meetings/upcoming page
246+
#def group_parents_from_sessions(sessions):
247+
# group_parents = list()
248+
# parents = {}
249+
# for s in sessions:
250+
# if s.group.parent_id not in parents:
251+
# parent = s.group.parent
252+
# parent.group_list = set()
253+
# group_parents.append(parent)
254+
# parents[s.group.parent_id] = parent
255+
# parent.group_list.add(s.group)
256+
#
257+
# for p in parents.values():
258+
# p.group_list = list(p.group_list)
259+
# p.group_list.sort(key=lambda g: g.acronym)
260+
#
261+
# return group_parents
262+
263+
244264
def data_for_meetings_overview(meetings, interim_status=None):
245265
"""Return filtered meetings with sessions and group hierarchy (for the
246266
interim menu)."""
@@ -276,32 +296,12 @@ def data_for_meetings_overview(meetings, interim_status=None):
276296
if not m.type_id == 'interim' or not all(s.current_status in ['apprw', 'scheda', 'canceledpa'] for s in m.sessions)
277297
]
278298

279-
# group hierarchy
280299
ietf_group = Group.objects.get(acronym='ietf')
281300

282-
group_hierarchy = [ietf_group]
283-
284-
parents = {}
285-
for m in meetings:
286-
if m.type_id == 'interim' and m.sessions:
287-
for s in m.sessions:
288-
parent = parents.get(s.group.parent_id)
289-
if not parent:
290-
parent = s.group.parent
291-
parent.group_list = set()
292-
group_hierarchy.append(parent)
293-
parents[s.group.parent_id] = parent
294-
295-
parent.group_list.add(s.group)
296-
297-
for p in parents.values():
298-
p.group_list = list(p.group_list)
299-
p.group_list.sort(key=lambda g: g.acronym)
300-
301301
# set some useful attributes
302302
for m in meetings:
303303
m.end = m.date + datetime.timedelta(days=m.days)
304304
m.responsible_group = (m.sessions[0].group if m.sessions else None) if m.type_id == 'interim' else ietf_group
305305
m.interim_meeting_cancelled = m.type_id == 'interim' and all(s.current_status == 'canceled' for s in m.sessions)
306306

307-
return meetings, group_hierarchy
307+
return meetings

ietf/meeting/views.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1920,7 +1920,7 @@ def ajax_get_utc(request):
19201920
@role_required('Secretariat',)
19211921
def interim_announce(request):
19221922
'''View which shows interim meeting requests awaiting announcement'''
1923-
meetings, _ = data_for_meetings_overview(Meeting.objects.filter(type='interim').order_by('date'), interim_status='scheda')
1923+
meetings = data_for_meetings_overview(Meeting.objects.filter(type='interim').order_by('date'), interim_status='scheda')
19241924
menu_entries = get_interim_menu_entries(request)
19251925
selected_menu_entry = 'announce'
19261926

@@ -1983,7 +1983,7 @@ def interim_skip_announcement(request, number):
19831983
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair', 'RG Chair')
19841984
def interim_pending(request):
19851985
'''View which shows interim meeting requests pending approval'''
1986-
meetings, group_parents = data_for_meetings_overview(Meeting.objects.filter(type='interim').order_by('date'), interim_status='apprw')
1986+
meetings = data_for_meetings_overview(Meeting.objects.filter(type='interim').order_by('date'), interim_status='apprw')
19871987

19881988
menu_entries = get_interim_menu_entries(request)
19891989
selected_menu_entry = 'pending'
@@ -2225,20 +2225,31 @@ def past(request):
22252225
'''List of past meetings'''
22262226
today = datetime.datetime.today()
22272227

2228-
meetings, group_parents = data_for_meetings_overview(Meeting.objects.filter(date__lte=today).order_by('-date'))
2228+
meetings = data_for_meetings_overview(Meeting.objects.filter(date__lte=today).order_by('-date'))
22292229

22302230
return render(request, 'meeting/past.html', {
22312231
'meetings': meetings,
2232-
'group_parents': group_parents})
2232+
})
22332233

22342234
def upcoming(request):
22352235
'''List of upcoming meetings'''
22362236
today = datetime.date.today()
22372237

22382238
# Get ietf meetings starting 7 days ago, and interim meetings starting today
2239-
query = Q(type_id='ietf', date__gte=today-datetime.timedelta(days=7)) | Q(type_id='interim', date__gte=today)
2240-
meetings = Meeting.objects.filter(query).order_by('date')
2241-
meetings, group_parents = data_for_meetings_overview(meetings)
2239+
ietf_meetings = Meeting.objects.filter(type_id='ietf', date__gte=today-datetime.timedelta(days=7))
2240+
for m in ietf_meetings:
2241+
m.end = m.date+datetime.timedelta(days=m.days)
2242+
interim_sessions = add_event_info_to_session_qs(
2243+
Session.objects.filter(
2244+
meeting__type_id='interim',
2245+
timeslotassignments__schedule=F('meeting__schedule'),
2246+
timeslotassignments__timeslot__time__gte=today
2247+
)
2248+
).filter(current_status__in=('sched','canceled'))
2249+
2250+
entries = list(ietf_meetings)
2251+
entries.extend(list(interim_sessions))
2252+
entries.sort(key = lambda o: pytz.utc.localize(datetime.datetime.combine(o.date, datetime.datetime.min.time())) if isinstance(o,Meeting) else o.official_timeslotassignment().timeslot.utc_start_time())
22422253

22432254
# add menu entries
22442255
menu_entries = get_interim_menu_entries(request)
@@ -2253,11 +2264,11 @@ def upcoming(request):
22532264
reverse('ietf.meeting.views.upcoming_ical')))
22542265

22552266
return render(request, 'meeting/upcoming.html', {
2256-
'meetings': meetings,
2267+
'entries': entries,
22572268
'menu_actions': actions,
22582269
'menu_entries': menu_entries,
22592270
'selected_menu_entry': selected_menu_entry,
2260-
'group_parents': group_parents})
2271+
})
22612272

22622273

22632274
def upcoming_ical(request):
@@ -2266,7 +2277,7 @@ def upcoming_ical(request):
22662277
today = datetime.date.today()
22672278

22682279
# get meetings starting 7 days ago -- we'll filter out sessions in the past further down
2269-
meetings, _ = data_for_meetings_overview(Meeting.objects.filter(date__gte=today-datetime.timedelta(days=7)).order_by('date'))
2280+
meetings = data_for_meetings_overview(Meeting.objects.filter(date__gte=today-datetime.timedelta(days=7)).order_by('date'))
22702281

22712282
assignments = list(SchedTimeSessAssignment.objects.filter(
22722283
schedule__meeting__schedule=F('schedule'),

ietf/templates/meeting/past.html

Lines changed: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -19,68 +19,6 @@
1919

2020
<h1>Past Meetings</h1>
2121

22-
<div class="panel-group" id="accordion">
23-
<div class="panel panel-default">
24-
<div class="panel-heading">
25-
<h4 class="panel-title">
26-
<a data-toggle="collapse" data-parent="#accordion" href="#customize">
27-
<span class="fa fa-caret-down"></span> Customize the meeting list...
28-
</a>
29-
</h4>
30-
</div> <!-- panel-heading -->
31-
32-
<div id="customize" class="panel-collapse collapse">
33-
<div class="panel-body">
34-
<p>
35-
You can customize the list to show only selected groups
36-
by clicking on groups and areas in the table below.
37-
To be able to return to the customized view later, bookmark the resulting URL.
38-
</p>
39-
40-
{% if group_parents|length %}
41-
<p>Groups displayed in <b><i>italics</i></b> are BOFs.</p>
42-
43-
<table class="table table-condensed">
44-
<thead>
45-
<tr>
46-
{% for p in group_parents %}
47-
<th style="width:{% widthratio 1 group_parents|length 100 %}%">
48-
<button class="btn btn-default btn-block pickview {{p.acronym|lower}}">{{p.acronym|upper}}</button>
49-
</th>
50-
{% endfor %}
51-
</tr>
52-
</thead>
53-
<tbody>
54-
<tr>
55-
{% for p in group_parents %}
56-
<td class="view {{p.acronym|lower}}">
57-
<div class="btn-group-vertical btn-block">
58-
{% for group in p.group_list %}
59-
<div class="btn-group btn-group-xs btn-group-justified">
60-
<button class="btn btn-default pickview {{group.acronym}}">
61-
{% if group.is_bof %}
62-
<i>{{group.acronym}}</i>
63-
{% else %}
64-
{{group.acronym}}
65-
{% endif %}
66-
</button>
67-
</div> <!-- button-group -->
68-
{% endfor %}
69-
</div> <!-- button-group-vertical -->
70-
</td>
71-
{% endfor %}
72-
</tr>
73-
</tbody>
74-
</table>
75-
{% else %}
76-
<blockquote><i>No past meetings are available.</i></blockquote>
77-
{% endif %}
78-
79-
</div> <!-- panel-body -->
80-
</div> <!-- panel-collapse -->
81-
</div> <!-- panel -->
82-
</div> <!-- panel-group -->
83-
8422
{% if meetings %}
8523
<h3></h3>
8624
<table class="table table-condensed table-striped tablesorter">
@@ -93,7 +31,7 @@ <h3></h3>
9331
</thead>
9432
<tbody>
9533
{% for meeting in meetings %}
96-
<tr id="row-{{ forloop.counter }}{% if meeting.responsible_group.parent %}-{{ meeting.responsible_group.parent.acronym }}{% endif %}-{{ meeting.responsible_group.acronym }}">
34+
<tr>
9735
<td>{{ meeting.date }}</td>
9836
<td>
9937
{% if meeting.responsible_group.type_id != 'ietf' %}

0 commit comments

Comments
 (0)