diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 2c43e7f75..db5081924 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -36,7 +36,7 @@ class Meeting(models.Model): venue_addr = models.TextField(blank=True) break_area = models.CharField(blank=True, max_length=255) reg_area = models.CharField(blank=True, max_length=255) - + def __unicode__(self): if self.type_id == "ietf": return "IETF-%s" % (self.number) @@ -51,6 +51,9 @@ class Meeting(models.Model): def get_meeting_date (self,offset): return self.date + datetime.timedelta(days=offset) + def end_date(self): + return self.get_meeting_date(5) + @classmethod def get_first_cut_off(cls): date = cls.objects.all().filter(type="ietf").order_by('-date')[0].date diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 5db717a8d..f39845e49 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -209,7 +209,7 @@ def html_agenda(request, num=None): return iphone_agenda(request, num) meeting = get_meeting(num) - timeslots = TimeSlot.objects.filter(Q(meeting = meeting.number)).order_by('time','name') + timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id)).order_by('time','name') modified = timeslots.aggregate(Max('modified'))['modified__max'] area_list = timeslots.filter(type = 'Session', session__group__parent__isnull = False).order_by('session__group__parent__acronym').distinct('session__group__parent__acronym').values_list('session__group__parent__acronym',flat=True) @@ -224,26 +224,6 @@ def html_agenda(request, num=None): "show_inline": set(["txt","htm","html"]) }, RequestContext(request)), mimetype="text/html") -def deprecated_PLEASE_REMOVE_ME(request, num=None): - timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num) - - groups_meeting = []; - for slot in timeslots: - for session in slot.sessions(): - groups_meeting.append(session.acronym()) - groups_meeting = set(groups_meeting); - - wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).filter(group_acronym__acronym__in = groups_meeting).order_by('group_acronym__acronym') - rgs = IRTF.objects.all().filter(acronym__in = groups_meeting).order_by('acronym') - areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym') - - template = "meeting/agenda.html" - return render_to_response(template, - {"timeslots":timeslots, "update":update, "meeting":meeting, "venue":venue, "ads":ads, - "plenaryw_agenda":plenaryw_agenda, "plenaryt_agenda":plenaryt_agenda, - "wg_list" : wgs, "rg_list" : rgs, "area_list" : areas}, - context_instance=RequestContext(request)) - def iphone_agenda(request, num): timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num) @@ -457,19 +437,16 @@ def session_draft_pdf(request, num, session): os.unlink(pdfn) return HttpResponse(pdf_contents, mimetype="application/pdf") -def get_meeting (num=None): - try: - if num != None: - meeting = OldMeeting.objects.get(number=num) - else: - meeting = OldMeeting.objects.all().order_by('-date')[:1].get() - except OldMeeting.DoesNotExist: - raise Http404("No meeting information for meeting %s available" % num) +def get_meeting(num=None): + if (num == None): + meeting = Meeting.objects.filter(type="ietf").order_by("-date")[:1].get() + else: + meeting = get_object_or_404(Meeting, number=num) return meeting def week_view(request, num=None): meeting = get_meeting(num) - timeslots = TimeSlot.objects.filter(meeting = meeting.number) + timeslots = TimeSlot.objects.filter(meeting__id = meeting.id) template = "meeting/week-view.html" return render_to_response(template, @@ -500,7 +477,7 @@ def ical_agenda(request, num=None): if item[0] == '~': include_types.append(item[1:2].upper()+item[2:]) - timeslots = TimeSlot.objects.filter(Q(meeting = meeting.number), + timeslots = TimeSlot.objects.filter(Q(meeting__id = meeting.id), Q(type__name__in = include_types) | Q(session__group__acronym__in = filter) | Q(session__group__parent__acronym__in = filter) @@ -508,7 +485,6 @@ def ical_agenda(request, num=None): #Q(session__group__acronym__in = exclude) | #Q(session__group__parent__acronym__in = exclude)) -# return HttpResponse(render_to_string("meeting/agendaREDESIGN.ics" if settings.USE_DB_REDESIGN_PROXY_CLASSES else "meeting/agenda.ics", return HttpResponse(render_to_string("meeting/agendaREDESIGN.ics", {"timeslots":timeslots, "meeting":meeting }, RequestContext(request)), mimetype="text/calendar") @@ -528,11 +504,7 @@ def csv_agenda(request, num=None): RequestContext(request)), mimetype="text/csv") def meeting_requests(request, num=None) : - if (num == None): - meeting = Meeting.objects.filter(type="ietf").order_by("date").reverse()[0] - else: - meeting = get_object_or_404(Meeting, number=num) - + meeting = get_meeting(num) sessions = Session.objects.filter(meeting__number=meeting.number,group__parent__isnull = False).exclude(requested_by=0).order_by("group__parent__acronym","status__slug","group__acronym") groups_not_meeting = Group.objects.filter(state='Active',type__in=['WG','RG','BOF']).exclude(acronym__in = [session.group.acronym for session in sessions]).order_by("parent__acronym","acronym") diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index 8a96e8bc6..01e84e3c4 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {# Copyright The IETF Trust 2007, All Rights Reserved #} {% load humanize %} -{% block title %}IETF {{ meeting.num }} Meeting Agenda{% endblock %} +{% block title %}IETF {{ meeting.number }} Meeting Agenda{% endblock %} {% block morecss %} table#agenda { border: 0; border-collapse:collapse; } @@ -162,17 +162,30 @@ img.hidden { display: none; } } - /* Resizes an IFRAME to fit its contents and attempts to convert to a div */ + /* Resizes an IFRAME to fit its contents. */ function r(iframe) { try { iframe.height = 1; + iframe.style.border = "solid"; + iframe.style.borderWidth = "1px"; + iframe.style.margin = "0"; + iframe.style.padding = "10px"; + iframe.style.overflow = "auto"; docHeight = iframe.contentWindow.document.body.scrollHeight; iframe.height = docHeight; } catch (e) { return; } + /* The following code works really well UNLESS some crazy chair + decides to submit a text agenda that is, say, 500 columns wide. + But this tends to happen. So, until I find a way to stop + that brand of crazy from breaking the world, I'm disabling + this code. Too bad, really -- it made the page much nicer to + use. */ + return; + if (iframe.contentWindow.document.body.innerHTML) { var div = document.createElement("div"); @@ -236,16 +249,16 @@ img.hidden { display: none; } {% endblock pagehead %} {% block bodyAttrs %}onload='setGroupState();updateAgendaColors()'{% endblock %} {% block content %} -

IETF {{ meeting.num }} Meeting Agenda

-

{{ meeting.city }}, {{ meeting.start_date|date:"F j" }}-{% ifnotequal meeting.start_date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}
+

IETF {{ meeting.number }} Meeting Agenda

+

{{ meeting.city }}, {{ meeting.date|date:"F j" }} – {% ifnotequal meeting.date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}
Updated {{ modified|date:"Y-m-d H:i:s T" }}

-(There's also a plaintext agenda and a tools-style agenda available)
+(There's also a plaintext agenda and a tools-style agenda available)

IETF agendas are subject to change, up to and during the meeting.

{# cache this part for 15 minutes -- it takes 3-6 seconds to generate #} -{% load cache %}{% cache 900 ietf_meeting_agenda meeting.num %} +{% load cache %}{% cache 900 ietf_meeting_agenda meeting.number %} You can customize the agenda below to show only selected working group sessions. To be able to return to the customized view later, bookmark the resulting URL:
@@ -291,34 +304,34 @@ You can customize the agenda below to show only selected working group sessions. {{slot.name}} {% if slot.type.name != 'Session' %} - - {% if slot.show_location %}{{slot.get_location|escape}}{% endif %} + {% if slot.show_location %}{{slot.get_location|escape}}{% endif %} {% endif %} {% endifchanged %} {% if slot.type.name = 'Session' %} {% if slot.session.group %} - + - {% if slot.show_location %}{{slot.get_location|escape}}{% endif %} + {% if slot.show_location %}{{slot.get_location|escape}}{% endif %} {{slot.session.group.parent.acronym|upper}} {% if slot.session.group.charter %}{{slot.session.group.acronym}} {% else %}{{slot.session.group.acronym}}{% endif %} - - {% if slot.session.agenda %}{{slot.session.group.name}} + + {% if slot.session.agenda %}{{slot.session.group.name}} {% else %}{{slot.session.group.name}}{% endif %} {% if slot.session.group.state.name = "BOF" %} BOF {% endif %} {% if slot.session.agenda_note %}
{{slot.session.agenda_note}}{% endif %} - {% if slot.session.agenda %}drafts: tar|pdf{%endif%} + {% if slot.session.agenda %}drafts: tar|pdf{%endif%} - + {% if slot.session.agenda %} {% if slot.session.agenda.file_extension in show_inline%} - + {% else %} Agenda submitted in {{slot.session.agenda.file_extension|upper}} format {% endif %} @@ -333,7 +346,7 @@ You can customize the agenda below to show only selected working group sessions. - + {% endif %}