From b2f8368971d2ebb8f793aed19557d2297a751c11 Mon Sep 17 00:00:00 2001
From: Michael Lee <michael.lee@neustar.biz>
Date: Tue, 22 May 2007 20:27:36 +0000
Subject: [PATCH] Need to order WG sessions by area  - Legacy-Id: 150

---
 ietf/idtracker/models.py           |  2 ++
 ietf/meeting/views.py              |  5 +++--
 ietf/proceedings/models.py         | 22 ++++++++++++----------
 ietf/templates/meeting/agenda.html | 27 ++++++++++++++++++++++++---
 4 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/ietf/idtracker/models.py b/ietf/idtracker/models.py
index 3ee90d4c3..572be10d2 100644
--- a/ietf/idtracker/models.py
+++ b/ietf/idtracker/models.py
@@ -643,6 +643,8 @@ class GroupIETF(models.Model):
     def choices():
 	return [(wg.group_acronym_id, wg.group_acronym.acronym) for wg in GroupIETF.objects.all().select_related().order_by('acronym.acronym')]
     choices = staticmethod(choices)
+    def area_acronym(self):
+        return AreaGroup.objects.filter(group_acronym_id=self.group_acronym_id).area 
     class Meta:
         db_table = 'groups_ietf'
 	ordering = ['?']	# workaround django wanting to sort by acronym but not joining with it
diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py
index c24e1940a..343db9a7a 100644
--- a/ietf/meeting/views.py
+++ b/ietf/meeting/views.py
@@ -33,9 +33,10 @@ def show_html_materials(request, meeting_num=None):
 
 def show_html_agenda(request, meeting_num=None):
     meeting_info=Meeting.objects.filter(meeting_num=meeting_num)[0]
-    nonsession_info=NonSession.objects.filter(meeting=meeting_num)[0]
+    nonsession_info=NonSession.objects.filter(meeting=meeting_num,day_id__gte='0').order_by("day_id")
     meetingvenue_info=MeetingVenue.objects.filter(meeting_num=meeting_num)[0]
     queryset_list=MeetingTime.objects.filter(meeting=meeting_num).exclude(day_id=0).order_by("day_id","time_desc") 
+    op_ad_plenary_agenda = "17:00 Welcome\n17:05 NOC report (Wieslaw Blysz, Siemens Networks))\n Host presentation (Georg Haubs, CTO Innovations of Siemens Networks)\n 17:20 IETF Chair and IAD short reports\n 17:30 Jonathan B. Postel award\n 17:40 NomCom Chair (Andrew Lange)\n 17:45 Open Microphone\n 19:30 (latest) end" #only for testing. In production, this text will be pulled from actualy agenda file
     #queryset_list=WgMeetingSession.objects.filter(meeting_num=meeting_num, group_acronym_id > -3) 
 
     # Due to a bug in Django@0.96 we can't use foreign key lookup in
@@ -46,7 +47,7 @@ def show_html_agenda(request, meeting_num=None):
     ## queryset_list_sun=WgMeetingSession.objects.filter(meeting=meeting_num, sched_time_id1__day_id=0).order_by('sched_time_id1__time_desc')
     queryset_list_sun=list(WgMeetingSession.objects.filter(meeting=meeting_num, sched_time_id1__day_id=0))
     queryset_list_sun.sort(key=(lambda item: item.sched_time_id1.time_desc))
-    return object_list(request,queryset=queryset_list, template_name='meeting/agenda.html',allow_empty=True, extra_context={'qs_sun':queryset_list_sun, 'meeting_info':meeting_info, 'meeting_num':meeting_num, 'nonsession_info':nonsession_info, 'meetingvenue_info':meetingvenue_info})
+    return object_list(request,queryset=queryset_list, template_name='meeting/agenda.html',allow_empty=True, extra_context={'qs_sun':queryset_list_sun, 'meeting_info':meeting_info, 'meeting_num':meeting_num, 'nonsession_info':nonsession_info, 'meetingvenue_info':meetingvenue_info, 'op_ad_plenary_agenda':op_ad_plenary_agenda})
 
 def show(request):
     return 0
diff --git a/ietf/proceedings/models.py b/ietf/proceedings/models.py
index 4f47b6303..ef9aa9e53 100644
--- a/ietf/proceedings/models.py
+++ b/ietf/proceedings/models.py
@@ -1,5 +1,5 @@
 from django.db import models
-from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup
+from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup, GroupIETF
 import datetime
 
 # group_acronym is either an IETF Acronym
@@ -137,18 +137,10 @@ class SessionName(models.Model):
 	pass
 
 class MeetingTime(models.Model):
-    DAY_CHOICES=(
-        ('0', 'SUNDAY'), 
-        ('1', 'MONDAY'),
-        ('2', 'TUESDAY'),
-        ('3', 'WEDNESDAY'),
-        ('4', 'THURSDAY'),
-        ('5', 'FRIDAY'),
-    )
     time_id = models.AutoField(primary_key=True)
     time_desc = models.CharField(maxlength=100)
     meeting = models.ForeignKey(Meeting, db_column='meeting_num', unique=True)
-    day_id = models.IntegerField(choices=DAY_CHOICES)
+    day_id = models.IntegerField()
     session_name = models.ForeignKey(SessionName)
     def __str__(self):
 	return "[%d] |%s| %s" % (self.meeting_id, (self.meeting.start_date + datetime.timedelta(self.day_id)).strftime('%A'), self.time_desc)
@@ -170,6 +162,16 @@ class MeetingTime(models.Model):
 	    models.Q(combined_time_id2=self.time_id))
     def meeting_date(self):
         return self.meeting.get_meeting_date(self.day_id)
+    def reg_info(self):
+        return "%s %s" % (NonSession.objects.filter(meeting=self.meeting, day_id=self.day_id,non_session_ref=1)[0].time_desc, NonSession.objects.filter(meeting=self.meeting, day_id=self.day_id,non_session_ref=1)[0].non_session_ref)
+    def morning_br_info(self):
+        return "%s %s" % (NonSession.objects.filter(meeting=self.meeting, non_session_ref=2)[0].time_desc, NonSession.objects.filter(meeting=self.meeting, non_session_ref=2)[0].non_session_ref)
+    def lunch_br_info(self):
+        return NonSession.objects.filter(meeting=self.meeting, non_session_ref=3)[0].time_desc
+    def an_br1_info(self):
+        return "%s %s" % (NonSession.objects.filter(meeting=self.meeting, non_session_ref=4)[0].time_desc, NonSession.objects.filter(meeting=self.meeting, non_session_ref=4)[0].non_session_ref)
+    def an_br2_info(self):
+        return "%s %s" % (NonSession.objects.filter(meeting=self.meeting, non_session_ref=5)[0].time_desc, NonSession.objects.filter(meeting=self.meeting, non_session_ref=5)[0].non_session_ref)
     class Meta:
         db_table = 'meeting_times'
     class Admin:
diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html
index 6f9826dac..b6503a3ac 100644
--- a/ietf/templates/meeting/agenda.html
+++ b/ietf/templates/meeting/agenda.html
@@ -14,19 +14,40 @@ Updated As of : {% now "F j, Y" %}<br />
 *** Click on a name of the group to get a meeting agenda *** <br />
 </P>
 <p><b>{{ meeting_info.start_date|date:"l, F j, Y" }}</b><br>
-{{ nonsession_info.time_desc }} {{ nonsession_info.non_session_ref }} - {{ meetingvenue_info.reg_area_name }
+{{ nonsession_info.0.time_desc }} {{ nonsession_info.0.non_session_ref }} - {{ meetingvenue_info.reg_area_name }}
 <br>
 {% for item in qs_sun %}
 {{ item.sched_time_id1.time_desc }} {{ item.acronym_name }} - {{ item.sched_room_id1.room_name }}<br>
 {% endfor %}
+<br>
 {% regroup object_list by day_id as days %}
 {% for day in days %}
 <b>Day: {{ day.list.1.meeting_date|date:"l, F j, Y" }} </b><br>
+{{ day.list.1.reg_info }} - {{ meetingvenue_info.reg_area_name }} <br>
+{{ day.list.1.morning_br_info }} - {{ meetingvenue_info.break_area_name }} <br>
+<br>
 {% for item in day.list %}
+{% ifequal item.session_name_id 3 %}
+{{ day.list.1.lunch_br_info }} Break<br>
+{% endifequal %}
+{% ifequal item.session_name_id 4 %}
+{{ day.list.1.an_br1_info }}<br>
+{% endifequal %}
+{% ifequal item.session_name_id 5 %}
+{{ day.list.1.an_br2_info }}<br>
+{% endifequal %}
 <b>{{ item.time_desc }} {{ item.session_name }} </b><br>
-{% for session in item.sessions %}
-{{ session.sched_room_id1.room_name }} {{ session.area }} {{ session.acronym }} {{ session.acronym_name }} <br>
+<table border="0" cellspacing="0" cellpadding="0" width="800">
+{% for session in item.sessions|dictsort:"area" %}
+{% ifequal session.acronym "plenaryw" %}
+<tr><td>{{ op_ad_plenary_agenda|linebreaksbr }}</td></tr>
+{% else %}
+<tr><td width="200">{{ session.sched_room_id1.room_name }}</td><td width="50">{{ session.area|upper }}</td><td width="100">{{ session.acronym }}</td><td>{{ session.acronym_name }}</td></tr>
+{% endifequal %}
 {% endfor %}
+</table>
+<br>
 {% endfor %}
+<br>
 {% endfor %}
 {% endblock %}