Merged in [4604] from adam@nostrum.com, which fixes problems with the html agenda code related to the schema transition.

- Legacy-Id: 4611
Note: SVN reference [4604] has been migrated to Git commit 3e5e16371f2c0319d1c0bb738860a1f793038365
This commit is contained in:
Henrik Levkowetz 2012-07-10 09:55:34 +00:00
parent a1ea63c16a
commit cddec8fc48
3 changed files with 41 additions and 53 deletions

View file

@ -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

View file

@ -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")

View file

@ -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 %}
<h1>IETF {{ meeting.num }} Meeting Agenda</h1>
<p>{{ 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" }}<br />
<h1>IETF {{ meeting.number }} Meeting Agenda</h1>
<p>{{ meeting.city }}, {{ meeting.date|date:"F j" }} &#8211; {% ifnotequal meeting.date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}<br />
Updated {{ modified|date:"Y-m-d H:i:s T" }}</p>
<div class="noprint">
(There's also a <a href="/meeting/{{meeting.num}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{meeting.num}}/">tools-style agenda</a> available)</div>
(There's also a <a href="/meeting/{{meeting.number}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{meeting.number}}/">tools-style agenda</a> available)</div>
<p><strong>IETF agendas are subject to change, up to and during the meeting.</strong></p>
{# 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:
<div class="noprint" onclick="toggle_wg_selector()">
@ -291,34 +304,34 @@ You can customize the agenda below to show only selected working group sessions.
<td colspan="5">
{{slot.name}}
{% if slot.type.name != 'Session' %} -
{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.num}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}
{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.number}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}
{% endif %}
</td>
</tr>
{% endifchanged %}
{% if slot.type.name = 'Session' %} {% if slot.session.group %}
<tr id="{{meeting.num}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="grouprow">
<tr id="{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="grouprow">
<td>
<td>{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.num}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}</td>
<td>{% if slot.show_location %}<a href="http://tools.ietf.org/agenda/{{meeting.number}}/venue/?room={{ slot.get_location|slugify }}">{{slot.get_location|escape}}</a>{% endif %}</td>
<td>{{slot.session.group.parent.acronym|upper}}</td>
<td>
{% if slot.session.group.charter %}<a href="{{slot.session.group.charter.get_absolute_url}}">{{slot.session.group.acronym}}</a>
{% else %}{{slot.session.group.acronym}}{% endif %}</td>
<td>
<img src="/images/color-palette-4x4.gif" alt="" onclick="pickAgendaColor('{{meeting.num}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}',this);" title="color tag this line"/ class="noprint">
{% if slot.session.agenda %}<a href="/meeting/{{ meeting.num }}/agenda/{{ slot.session.group.acronym }}/">{{slot.session.group.name}}</a>
<img src="/images/color-palette-4x4.gif" alt="" onclick="pickAgendaColor('{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}',this);" title="color tag this line"/ class="noprint">
{% if slot.session.agenda %}<a href="/meeting/{{ meeting.number }}/agenda/{{ slot.session.group.acronym }}/">{{slot.session.group.name}}</a>
{% else %}{{slot.session.group.name}}{% endif %}
{% if slot.session.group.state.name = "BOF" %} BOF {% endif %}
{% if slot.session.agenda_note %}
<br/><span class="note">{{slot.session.agenda_note}}</span>{% endif %}</td>
<td class="materials">{% if slot.session.agenda %}drafts:&nbsp;<a href="/meeting/{{meeting.num}}/agenda/{{slot.session.group.acronym}}-drafts.tgz">tar</a>|<a href="/meeting/{{ meeting.num }}/agenda/{{slot.session.group.acronym}}-drafts.pdf">pdf</a>{%endif%}</td>
<td class="materials">{% if slot.session.agenda %}drafts:&nbsp;<a href="/meeting/{{meeting.number}}/agenda/{{slot.session.group.acronym}}-drafts.tgz">tar</a>|<a href="/meeting/{{ meeting.number }}/agenda/{{slot.session.group.acronym}}-drafts.pdf">pdf</a>{%endif%}</td>
</tr>
<tr id="{{meeting.num}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="groupagenda">
<tr id="{{meeting.number}}-{{slot.time|date:"D-Hi"|lower}}-{{slot.session.group.parent.acronym|upper}}-{{slot.session.group.acronym|lower}}" class="groupagenda">
<td></td>
<td colspan="5">
{% if slot.session.agenda %}
{% if slot.session.agenda.file_extension in show_inline%}
<iframe width="100%" height="1px" src="about:blank" xsrc="/meeting/{{ meeting.num }}/agenda/{{ slot.session.group.acronym }}/" onload="r(this)"></iframe>
<iframe width="100%" height="1px" src="about:blank" xsrc="/meeting/{{ meeting.number }}/agenda/{{ slot.session.group.acronym }}/" onload="r(this)"></iframe>
{% else %}
<b><i>Agenda submitted in {{slot.session.agenda.file_extension|upper}} format</i></b>
{% endif %}
@ -333,7 +346,7 @@ You can customize the agenda below to show only selected working group sessions.
<tr>
<td></td>
<td colspan="5">
<iframe width="100%" height="1px" src="/meeting/{{ meeting.num }}/agenda/{{ slot.session.group.acronym }}/" onload="r(this)"></iframe>
<iframe width="100%" height="1px" src="/meeting/{{ meeting.number }}/agenda/{{ slot.session.group.acronym }}/" onload="r(this)"></iframe>
</td>
</tr>
{% endif %}