Skip to content

Commit dc41de9

Browse files
committed
Merged [4207] from adam@nostrum.com:
Ported week view over to use the new meeting data model - Legacy-Id: 4216 Note: SVN reference [4207] has been migrated to Git commit 6a9c7d1
2 parents a1f3f48 + 6a9c7d1 commit dc41de9

4 files changed

Lines changed: 81 additions & 40 deletions

File tree

ietf/meeting/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ def __unicode__(self):
107107

108108
return u"%s: %s-%s %s, %s" % (self.meeting.number, self.time.strftime("%m-%d %H:%M"), (self.time + self.duration).strftime("%H:%M"), self.name, location)
109109

110+
def end_time(self):
111+
return self.time + self.duration
112+
110113
def get_location(self):
111114
location = self.location
112115
if location:
@@ -154,6 +157,12 @@ class Session(models.Model):
154157

155158
materials = models.ManyToManyField(Document, blank=True)
156159

160+
def agenda(self):
161+
try:
162+
return self.materials.get(type="agenda",states__type="agenda",states__slug="active")
163+
except Exception, e:
164+
return None
165+
157166
def __unicode__(self):
158167
if self.meeting.type_id == "interim":
159168
return self.meeting.number

ietf/meeting/views.py

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@
2424
from ietf.idrfc.idrfc_wrapper import IdWrapper
2525
from ietf.utils.pipe import pipe
2626

27-
from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities, SessionConflict
28-
29-
from ietf.group.models import Group
3027
from ietf.utils.history import find_history_active_at
3128
from ietf.doc.models import Document, State
3229

30+
# Old model -- needs to be removed
31+
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities, SessionConflict
32+
33+
# New models
34+
from ietf.meeting.models import Meeting, Room, TimeSlot, Constraint, Session
35+
from ietf.group.models import Group
36+
3337

3438
@decorator_from_middleware(GZipMiddleware)
3539
def show_html_materials(request, meeting_num=None):
@@ -91,7 +95,7 @@ def show_html_materials(request, meeting_num=None):
9195
context_instance=RequestContext(request))
9296

9397
def current_materials(request):
94-
meeting = Meeting.objects.order_by('-meeting_num')[0]
98+
meeting = OldMeeting.objects.order_by('-meeting_num')[0]
9599
return HttpResponseRedirect( reverse(show_html_materials, args=[meeting.meeting_num]) )
96100

97101
def get_plenary_agenda(meeting_num, id):
@@ -118,10 +122,10 @@ def agenda_info(num=None):
118122
try:
119123
timeslots = MeetingTime.objects.select_related().filter(meeting=n).order_by("day_id", "time_desc")
120124
update = Switches.objects.get(id=1)
121-
meeting= Meeting.objects.get(meeting_num=n)
125+
meeting= OldMeeting.objects.get(meeting_num=n)
122126
venue = MeetingVenue.objects.get(meeting_num=n)
123127
break
124-
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, Meeting.DoesNotExist, MeetingVenue.DoesNotExist):
128+
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, OldMeeting.DoesNotExist, MeetingVenue.DoesNotExist):
125129
continue
126130
else:
127131
raise Http404("No meeting information for meeting %s available" % num)
@@ -136,10 +140,10 @@ def agenda_info(num=None):
136140
def agenda_infoREDESIGN(num=None):
137141
try:
138142
if num != None:
139-
meeting = Meeting.objects.get(number=num)
143+
meeting = OldMeeting.objects.get(number=num)
140144
else:
141-
meeting = Meeting.objects.all().order_by('-date')[:1].get()
142-
except Meeting.DoesNotExist:
145+
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
146+
except OldMeeting.DoesNotExist:
143147
raise Http404("No meeting information for meeting %s available" % num)
144148

145149
# now go through the timeslots, only keeping those that are
@@ -413,19 +417,24 @@ def session_draft_pdf(request, num, session):
413417
os.unlink(pdfn)
414418
return HttpResponse(pdf_contents, mimetype="application/pdf")
415419

420+
def get_meeting (num=None):
421+
try:
422+
if num != None:
423+
meeting = OldMeeting.objects.get(number=num)
424+
else:
425+
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
426+
except OldMeeting.DoesNotExist:
427+
raise Http404("No meeting information for meeting %s available" % num)
428+
return meeting
429+
416430
def week_view(request, num=None):
417-
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
418-
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
419-
rgs = IRTF.objects.all().order_by('acronym')
420-
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
421-
conflicts = SessionConflict.objects.filter(meeting_num=meeting.meeting_num)
431+
#timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
432+
meeting = get_meeting(num)
433+
timeslots = TimeSlot.objects.filter(meeting = meeting.number)
434+
422435
template = "meeting/week-view.html"
423436
return render_to_response(template,
424-
{"timeslots":timeslots, "update":update, "meeting":meeting,
425-
"venue":venue, "ads":ads, "plenaryw_agenda":plenaryw_agenda,
426-
"plenaryt_agenda":plenaryt_agenda, "wg_list" : wgs,
427-
"rg_list" : rgs, "area_list" : areas, "conflicts":conflicts},
428-
context_instance=RequestContext(request))
437+
{"timeslots":timeslots,"render_types":["Session","Other","Break","Plenary"]}, context_instance=RequestContext(request))
429438

430439
def ical_agenda(request, num=None):
431440
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)

ietf/proceedings/models.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Copyright The IETF Trust 2007, All Rights Reserved
22

3+
########################################################################
4+
########################################################################
5+
########################################################################
6+
##### #####
7+
##### WARNING WARNING WARNING WARNING WARNING WARNING WARNING #####
8+
##### #####
9+
##### These models are old, deprecated, and should not be #####
10+
##### used. Use the models in the meetings directory #####
11+
##### instead. #####
12+
##### #####
13+
##### WARNING WARNING WARNING WARNING WARNING WARNING WARNING #####
14+
##### #####
15+
########################################################################
16+
########################################################################
17+
########################################################################
18+
319
from django.db import models
420
from django.conf import settings
521
from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup, Area, IETFWG

ietf/templates/meeting/week-view.html

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@
77
<script type="text/javascript">
88
var items = new Array();
99
{% autoescape off %}
10-
{% for slot in timeslots %}{% for session in slot.sessions %}
11-
items.push({day:{{slot.day_id}}, time:"{{slot.time_desc}}", time_id:{{slot.time_id}}, name:"{{session.acronym_name}}", wg:"{{session.acronym}}", area:"{{session.area}}", room:"{{session.room_id.room_name}}", dayname:"{{ slot.meeting_date|date:"l"|upper }}, {{ slot.meeting_date|date:"F j, Y" }}"{% if session.agenda_file %}, agenda:"/meeting/{{ meeting.num }}/agenda/{{ session.acronym }}-agenda/"{% endif %}});{% endfor %}{% endfor %}
10+
11+
{% for slot in timeslots %} {% if slot.type.name in render_types %}
12+
items.push({day:{{slot.time|date:"w"}}, time:"{{slot.time|date:"Hi"}}-{{slot.end_time|date:"Hi"}}", duration:{{slot.duration.seconds}}, time_id:"{{slot.time|date:"mdHi"}}", type:"{{slot.type}}", {% if slot.session.name %}name:"{{slot.session.name}}",{% else %}{% if slot.type.name == "Break" %}name:"{{slot.name}}", area:"break", wg:"break",{% else %}name:"{{slot.session.group.name}}",wg:"{{slot.session.group.acronym}}",area:"{{slot.session.group.parent.acronym}}",{% endif %}{% endif %} {% if slot.show_location %}room:"{{slot.get_location}}",{% endif %} dayname:"{{ slot.time|date:"l"|upper }}, {{ slot.time|date:"F j, Y" }}"{% if slot.session.agenda %}, agenda:"http://www.ietf.org{{slot.session.agenda.get_absolute_url}}"{% endif %} });{% endif %}{% endfor %}
1213
{% endautoescape %}
1314

15+
/* Saturday events need to be moved to the day -1 */
16+
for (var i = 0; i < items.length; i++)
17+
{
18+
if (items[i].day == 6) { items[i].day = -1; }
19+
}
1420

1521
var fg = {
1622
'app': "#008",
@@ -21,7 +27,8 @@
2127
'rtg': "#880",
2228
'sec': "#488",
2329
'tsv': "#484",
24-
'irtf': "#448"
30+
'irtf': "#448",
31+
'break': "#000"
2532
};
2633

2734
var bg = {
@@ -33,7 +40,8 @@
3340
'rtg': "#ffe",
3441
'sec': "#dff",
3542
'tsv': "#dfd",
36-
'irtf': "#ddf"
43+
'irtf': "#ddf",
44+
'break': "#fff"
3745
};
3846

3947
var day = [
@@ -87,20 +95,16 @@
8795
{
8896
include[(frag[i]+"").toLowerCase()] = true;
8997
}
90-
include[''] = true;
91-
include['1plenary'] = true;
92-
include['2plenary'] = true;
9398

9499
/* Find our boundaries */
95100
for (i = 0; i < items.length; i++)
96101
{
97-
if (include[(items[i].wg).toLowerCase()]
98-
|| include[(items[i].area).toLowerCase()])
102+
if (!("wg" in items[i]) || (include[(items[i].wg).toLowerCase()]
103+
|| include[(items[i].area).toLowerCase()]))
99104
{
100105
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
101106
parseInt(items[i].time.substr(2,2),10);
102-
var end_time = parseInt(items[i].time.substr(5,2),10) * 60 +
103-
parseInt(items[i].time.substr(7,2),10);
107+
var end_time = start_time + (items[i].duration / 60)
104108

105109
if (!day_start || start_time < day_start) { day_start = start_time; }
106110
if (end_time > day_end) { day_end = end_time; }
@@ -203,13 +207,12 @@
203207

204208
for (i = 0; i < items.length; i++)
205209
{
206-
if (include[(items[i].wg).toLowerCase()]
207-
|| include[(items[i].area).toLowerCase()])
210+
if (!("wg" in items[i])|| (include[(items[i].wg).toLowerCase()]
211+
|| include[(items[i].area).toLowerCase()]))
208212
{
209213
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
210214
parseInt(items[i].time.substr(2,2),10);
211-
var end_time = parseInt(items[i].time.substr(5,2),10) * 60 +
212-
parseInt(items[i].time.substr(7,2),10);
215+
var end_time = start_time + (items[i].duration / 60)
213216

214217
var sess_width = day_width / sessions[items[i].time_id];
215218
var sess_height = ((end_time - start_time) * minute_height)
@@ -269,7 +272,8 @@
269272
div.appendChild(document.createElement("br"));
270273

271274
var label = items[i].name;
272-
if (fg[items[i].area])
275+
if (label.length === 0) { label = "Free Slot"; }
276+
if (items[i].wg && fg[items[i].area])
273277
{
274278
label = label + " (" + items[i].wg + ")";
275279
}
@@ -278,11 +282,14 @@
278282
bold.style.fontWeight="bold";
279283
div.appendChild(bold);
280284

281-
div.appendChild(document.createElement("br"));
282-
var italics = document.createElement("span");
283-
italics.appendChild(document.createTextNode(items[i].room));
284-
italics.style.fontStyle="oblique";
285-
div.appendChild(italics);
285+
if (items[i].room)
286+
{
287+
div.appendChild(document.createElement("br"));
288+
var italics = document.createElement("span");
289+
italics.appendChild(document.createTextNode(items[i].room));
290+
italics.style.fontStyle="oblique";
291+
div.appendChild(italics);
292+
}
286293

287294
e.appendChild(div);
288295

0 commit comments

Comments
 (0)