Ported week view over to use the new meeting data model
- Legacy-Id: 4207
This commit is contained in:
parent
03980c3882
commit
6a9c7d1dbb
|
@ -105,6 +105,9 @@ class TimeSlot(models.Model):
|
||||||
|
|
||||||
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)
|
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)
|
||||||
|
|
||||||
|
def end_time(self):
|
||||||
|
return self.time + self.duration
|
||||||
|
|
||||||
def get_location(self):
|
def get_location(self):
|
||||||
location = self.location
|
location = self.location
|
||||||
if location:
|
if location:
|
||||||
|
@ -152,6 +155,12 @@ class Session(models.Model):
|
||||||
|
|
||||||
materials = models.ManyToManyField(Document, blank=True)
|
materials = models.ManyToManyField(Document, blank=True)
|
||||||
|
|
||||||
|
def agenda(self):
|
||||||
|
try:
|
||||||
|
return self.materials.get(type="agenda",states__type="agenda",states__slug="active")
|
||||||
|
except Exception, e:
|
||||||
|
return None
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
if self.meeting.type_id == "interim":
|
if self.meeting.type_id == "interim":
|
||||||
return self.meeting.number
|
return self.meeting.number
|
||||||
|
|
|
@ -24,12 +24,16 @@ from ietf.idtracker.models import InternetDraft
|
||||||
from ietf.idrfc.idrfc_wrapper import IdWrapper
|
from ietf.idrfc.idrfc_wrapper import IdWrapper
|
||||||
from ietf.utils.pipe import pipe
|
from ietf.utils.pipe import pipe
|
||||||
|
|
||||||
from ietf.proceedings.models import Meeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities, SessionConflict
|
|
||||||
|
|
||||||
from ietf.group.models import Group
|
|
||||||
from ietf.utils.history import find_history_active_at
|
from ietf.utils.history import find_history_active_at
|
||||||
from ietf.doc.models import Document, State
|
from ietf.doc.models import Document, State
|
||||||
|
|
||||||
|
# Old model -- needs to be removed
|
||||||
|
from ietf.proceedings.models import Meeting as OldMeeting, MeetingTime, WgMeetingSession, MeetingVenue, IESGHistory, Proceeding, Switches, WgProceedingsActivities, SessionConflict
|
||||||
|
|
||||||
|
# New models
|
||||||
|
from ietf.meeting.models import Meeting, Room, TimeSlot, Constraint, Session
|
||||||
|
from ietf.group.models import Group
|
||||||
|
|
||||||
|
|
||||||
@decorator_from_middleware(GZipMiddleware)
|
@decorator_from_middleware(GZipMiddleware)
|
||||||
def show_html_materials(request, meeting_num=None):
|
def show_html_materials(request, meeting_num=None):
|
||||||
|
@ -91,7 +95,7 @@ def show_html_materials(request, meeting_num=None):
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
def current_materials(request):
|
def current_materials(request):
|
||||||
meeting = Meeting.objects.order_by('-meeting_num')[0]
|
meeting = OldMeeting.objects.order_by('-meeting_num')[0]
|
||||||
return HttpResponseRedirect( reverse(show_html_materials, args=[meeting.meeting_num]) )
|
return HttpResponseRedirect( reverse(show_html_materials, args=[meeting.meeting_num]) )
|
||||||
|
|
||||||
def get_plenary_agenda(meeting_num, id):
|
def get_plenary_agenda(meeting_num, id):
|
||||||
|
@ -118,10 +122,10 @@ def agenda_info(num=None):
|
||||||
try:
|
try:
|
||||||
timeslots = MeetingTime.objects.select_related().filter(meeting=n).order_by("day_id", "time_desc")
|
timeslots = MeetingTime.objects.select_related().filter(meeting=n).order_by("day_id", "time_desc")
|
||||||
update = Switches.objects.get(id=1)
|
update = Switches.objects.get(id=1)
|
||||||
meeting= Meeting.objects.get(meeting_num=n)
|
meeting= OldMeeting.objects.get(meeting_num=n)
|
||||||
venue = MeetingVenue.objects.get(meeting_num=n)
|
venue = MeetingVenue.objects.get(meeting_num=n)
|
||||||
break
|
break
|
||||||
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, Meeting.DoesNotExist, MeetingVenue.DoesNotExist):
|
except (MeetingTime.DoesNotExist, Switches.DoesNotExist, OldMeeting.DoesNotExist, MeetingVenue.DoesNotExist):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
raise Http404("No meeting information for meeting %s available" % num)
|
raise Http404("No meeting information for meeting %s available" % num)
|
||||||
|
@ -136,10 +140,10 @@ def agenda_info(num=None):
|
||||||
def agenda_infoREDESIGN(num=None):
|
def agenda_infoREDESIGN(num=None):
|
||||||
try:
|
try:
|
||||||
if num != None:
|
if num != None:
|
||||||
meeting = Meeting.objects.get(number=num)
|
meeting = OldMeeting.objects.get(number=num)
|
||||||
else:
|
else:
|
||||||
meeting = Meeting.objects.all().order_by('-date')[:1].get()
|
meeting = OldMeeting.objects.all().order_by('-date')[:1].get()
|
||||||
except Meeting.DoesNotExist:
|
except OldMeeting.DoesNotExist:
|
||||||
raise Http404("No meeting information for meeting %s available" % num)
|
raise Http404("No meeting information for meeting %s available" % num)
|
||||||
|
|
||||||
# now go through the timeslots, only keeping those that are
|
# now go through the timeslots, only keeping those that are
|
||||||
|
@ -413,19 +417,24 @@ def session_draft_pdf(request, num, session):
|
||||||
os.unlink(pdfn)
|
os.unlink(pdfn)
|
||||||
return HttpResponse(pdf_contents, mimetype="application/pdf")
|
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)
|
||||||
|
return meeting
|
||||||
|
|
||||||
def week_view(request, num=None):
|
def week_view(request, num=None):
|
||||||
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
#timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||||
wgs = IETFWG.objects.filter(status=IETFWG.ACTIVE).order_by('group_acronym__acronym')
|
meeting = get_meeting(num)
|
||||||
rgs = IRTF.objects.all().order_by('acronym')
|
timeslots = TimeSlot.objects.filter(meeting = meeting.number)
|
||||||
areas = Area.objects.filter(status=Area.ACTIVE).order_by('area_acronym__acronym')
|
|
||||||
conflicts = SessionConflict.objects.filter(meeting_num=meeting.meeting_num)
|
|
||||||
template = "meeting/week-view.html"
|
template = "meeting/week-view.html"
|
||||||
return render_to_response(template,
|
return render_to_response(template,
|
||||||
{"timeslots":timeslots, "update":update, "meeting":meeting,
|
{"timeslots":timeslots,"render_types":["Session","Other","Break","Plenary"]}, context_instance=RequestContext(request))
|
||||||
"venue":venue, "ads":ads, "plenaryw_agenda":plenaryw_agenda,
|
|
||||||
"plenaryt_agenda":plenaryt_agenda, "wg_list" : wgs,
|
|
||||||
"rg_list" : rgs, "area_list" : areas, "conflicts":conflicts},
|
|
||||||
context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
def ical_agenda(request, num=None):
|
def ical_agenda(request, num=None):
|
||||||
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
timeslots, update, meeting, venue, ads, plenaryw_agenda, plenaryt_agenda = agenda_info(num)
|
||||||
|
|
|
@ -1,5 +1,21 @@
|
||||||
# Copyright The IETF Trust 2007, All Rights Reserved
|
# Copyright The IETF Trust 2007, All Rights Reserved
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
##### #####
|
||||||
|
##### WARNING WARNING WARNING WARNING WARNING WARNING WARNING #####
|
||||||
|
##### #####
|
||||||
|
##### These models are old, deprecated, and should not be #####
|
||||||
|
##### used. Use the models in the meetings directory #####
|
||||||
|
##### instead. #####
|
||||||
|
##### #####
|
||||||
|
##### WARNING WARNING WARNING WARNING WARNING WARNING WARNING #####
|
||||||
|
##### #####
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup, Area, IETFWG
|
from ietf.idtracker.models import Acronym, PersonOrOrgInfo, IRTF, AreaGroup, Area, IETFWG
|
||||||
|
|
|
@ -7,10 +7,16 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var items = new Array();
|
var items = new Array();
|
||||||
{% autoescape off %}
|
{% autoescape off %}
|
||||||
{% for slot in timeslots %}{% for session in slot.sessions %}
|
|
||||||
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 %}
|
{% for slot in timeslots %} {% if slot.type.name in render_types %}
|
||||||
|
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 %}
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|
||||||
|
/* Saturday events need to be moved to the day -1 */
|
||||||
|
for (var i = 0; i < items.length; i++)
|
||||||
|
{
|
||||||
|
if (items[i].day == 6) { items[i].day = -1; }
|
||||||
|
}
|
||||||
|
|
||||||
var fg = {
|
var fg = {
|
||||||
'app': "#008",
|
'app': "#008",
|
||||||
|
@ -21,7 +27,8 @@ var fg = {
|
||||||
'rtg': "#880",
|
'rtg': "#880",
|
||||||
'sec': "#488",
|
'sec': "#488",
|
||||||
'tsv': "#484",
|
'tsv': "#484",
|
||||||
'irtf': "#448"
|
'irtf': "#448",
|
||||||
|
'break': "#000"
|
||||||
};
|
};
|
||||||
|
|
||||||
var bg = {
|
var bg = {
|
||||||
|
@ -33,7 +40,8 @@ var bg = {
|
||||||
'rtg': "#ffe",
|
'rtg': "#ffe",
|
||||||
'sec': "#dff",
|
'sec': "#dff",
|
||||||
'tsv': "#dfd",
|
'tsv': "#dfd",
|
||||||
'irtf': "#ddf"
|
'irtf': "#ddf",
|
||||||
|
'break': "#fff"
|
||||||
};
|
};
|
||||||
|
|
||||||
var day = [
|
var day = [
|
||||||
|
@ -87,20 +95,16 @@ function draw_calendar()
|
||||||
{
|
{
|
||||||
include[(frag[i]+"").toLowerCase()] = true;
|
include[(frag[i]+"").toLowerCase()] = true;
|
||||||
}
|
}
|
||||||
include[''] = true;
|
|
||||||
include['1plenary'] = true;
|
|
||||||
include['2plenary'] = true;
|
|
||||||
|
|
||||||
/* Find our boundaries */
|
/* Find our boundaries */
|
||||||
for (i = 0; i < items.length; i++)
|
for (i = 0; i < items.length; i++)
|
||||||
{
|
{
|
||||||
if (include[(items[i].wg).toLowerCase()]
|
if (!("wg" in items[i]) || (include[(items[i].wg).toLowerCase()]
|
||||||
|| include[(items[i].area).toLowerCase()])
|
|| include[(items[i].area).toLowerCase()]))
|
||||||
{
|
{
|
||||||
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
|
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
|
||||||
parseInt(items[i].time.substr(2,2),10);
|
parseInt(items[i].time.substr(2,2),10);
|
||||||
var end_time = parseInt(items[i].time.substr(5,2),10) * 60 +
|
var end_time = start_time + (items[i].duration / 60)
|
||||||
parseInt(items[i].time.substr(7,2),10);
|
|
||||||
|
|
||||||
if (!day_start || start_time < day_start) { day_start = start_time; }
|
if (!day_start || start_time < day_start) { day_start = start_time; }
|
||||||
if (end_time > day_end) { day_end = end_time; }
|
if (end_time > day_end) { day_end = end_time; }
|
||||||
|
@ -203,13 +207,12 @@ function draw_calendar()
|
||||||
|
|
||||||
for (i = 0; i < items.length; i++)
|
for (i = 0; i < items.length; i++)
|
||||||
{
|
{
|
||||||
if (include[(items[i].wg).toLowerCase()]
|
if (!("wg" in items[i])|| (include[(items[i].wg).toLowerCase()]
|
||||||
|| include[(items[i].area).toLowerCase()])
|
|| include[(items[i].area).toLowerCase()]))
|
||||||
{
|
{
|
||||||
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
|
var start_time = parseInt(items[i].time.substr(0,2),10) * 60 +
|
||||||
parseInt(items[i].time.substr(2,2),10);
|
parseInt(items[i].time.substr(2,2),10);
|
||||||
var end_time = parseInt(items[i].time.substr(5,2),10) * 60 +
|
var end_time = start_time + (items[i].duration / 60)
|
||||||
parseInt(items[i].time.substr(7,2),10);
|
|
||||||
|
|
||||||
var sess_width = day_width / sessions[items[i].time_id];
|
var sess_width = day_width / sessions[items[i].time_id];
|
||||||
var sess_height = ((end_time - start_time) * minute_height)
|
var sess_height = ((end_time - start_time) * minute_height)
|
||||||
|
@ -269,7 +272,8 @@ function draw_calendar()
|
||||||
div.appendChild(document.createElement("br"));
|
div.appendChild(document.createElement("br"));
|
||||||
|
|
||||||
var label = items[i].name;
|
var label = items[i].name;
|
||||||
if (fg[items[i].area])
|
if (label.length === 0) { label = "Free Slot"; }
|
||||||
|
if (items[i].wg && fg[items[i].area])
|
||||||
{
|
{
|
||||||
label = label + " (" + items[i].wg + ")";
|
label = label + " (" + items[i].wg + ")";
|
||||||
}
|
}
|
||||||
|
@ -278,11 +282,14 @@ function draw_calendar()
|
||||||
bold.style.fontWeight="bold";
|
bold.style.fontWeight="bold";
|
||||||
div.appendChild(bold);
|
div.appendChild(bold);
|
||||||
|
|
||||||
div.appendChild(document.createElement("br"));
|
if (items[i].room)
|
||||||
var italics = document.createElement("span");
|
{
|
||||||
italics.appendChild(document.createTextNode(items[i].room));
|
div.appendChild(document.createElement("br"));
|
||||||
italics.style.fontStyle="oblique";
|
var italics = document.createElement("span");
|
||||||
div.appendChild(italics);
|
italics.appendChild(document.createTextNode(items[i].room));
|
||||||
|
italics.style.fontStyle="oblique";
|
||||||
|
div.appendChild(italics);
|
||||||
|
}
|
||||||
|
|
||||||
e.appendChild(div);
|
e.appendChild(div);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue