Checkpoint: by-room view and basic leadership meetings support

- Legacy-Id: 8930
This commit is contained in:
Robert Sparks 2015-01-27 19:15:25 +00:00
parent 8686fd2a4e
commit 47901e8555
6 changed files with 43 additions and 2 deletions

View file

@ -67,6 +67,8 @@ def build_all_agenda_slices(meeting):
date_slices = {}
for ts in meeting.timeslot_set.exclude(type__in=['reg','break']).order_by('time','name'):
#for ts in meeting.timeslot_set.exclude(type__in=['reg','break','other']).order_by('time','name'):
#for ts in meeting.timeslot_set.order_by('time','name'):
ymd = ts.time.date()
if ymd not in date_slices and ts.location != None:

View file

@ -322,7 +322,7 @@ 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)
def end_time(self):
return self.time + self.duration
def get_location(self):
def get_hidden_location(self):
location = self.location
if location:
location = location.name
@ -330,6 +330,10 @@ class TimeSlot(models.Model):
location = self.meeting.reg_area
elif self.type_id == "break":
location = self.meeting.break_area
return location
def get_location(self):
location = self.get_hidden_location()
if not self.show_location:
location = ""
return location

View file

@ -20,6 +20,7 @@ def make_meeting_test_data():
pname = RoomResourceName.objects.create(name='projector',slug='proj')
projector = ResourceAssociation.objects.create(name=pname,icon="notfound.png",desc="Basic projector")
room = Room.objects.create(meeting=meeting, name="Test Room", capacity=123)
breakfast_room = Room.objects.create(meeting=meeting, name="Breakfast Room", capacity=40)
room.resources = [projector]
# mars WG
@ -41,6 +42,17 @@ def make_meeting_test_data():
scheduled=datetime.datetime.now())
ScheduledSession.objects.create(timeslot=slot, session=ames_session, schedule=schedule)
# IESG breakfast
breakfast_slot = TimeSlot.objects.create(meeting=meeting, type_id="lead", duration=90 * 60,
location=breakfast_room,
time=datetime.datetime.combine(datetime.date.today(),datetime.time(7,0)))
iesg_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="iesg"),
name="IESG Breakfast",
attendees=25, requested_by=system_person,
requested_duration=20, status_id="schedw",
scheduled=datetime.datetime.now())
ScheduledSession.objects.create(timeslot=breakfast_slot, session=iesg_session, schedule=schedule)
meeting.agenda = schedule
meeting.save()

View file

@ -11,7 +11,7 @@ from pyquery import PyQuery
from ietf.doc.models import Document
from ietf.meeting.models import Session, TimeSlot
from ietf.meeting.test_data import make_meeting_test_data
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
class MeetingTests(TestCase):
def setUp(self):
@ -98,6 +98,13 @@ class MeetingTests(TestCase):
self.assertTrue(session.group.acronym in agenda_content)
self.assertTrue(slot.location.name in agenda_content)
def test_agenda_by_room(self):
meeting = make_meeting_test_data()
url = urlreverse("ietf.meeting.views.agenda_by_room",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url)
r = self.client.get(url,kwargs=dict(num=meeting.number))
self.assertTrue(all([x in r.content for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
def test_materials(self):
meeting = make_meeting_test_data()
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

View file

@ -35,6 +35,7 @@ urlpatterns = patterns('',
(r'^(?P<num>\d+)/agenda(?P<ext>.txt)$', views.agenda),
(r'^(?P<num>\d+)/agenda.ics$', views.ical_agenda),
(r'^(?P<num>\d+)/agenda(?P<ext>.csv)$', views.agenda),
(r'^(?P<num>\d+)/agenda/by-room$', views.agenda_by_room),
(r'^(?P<num>\d+)/agendas/edit$', views.edit_agendas),
(r'^(?P<num>\d+)/timeslots/edit$', views.edit_timeslots),
(r'^(?P<num>\d+)/rooms$', ajax.timeslot_roomsurl),

View file

@ -6,6 +6,7 @@ import re
import tarfile
import urllib
from tempfile import mkstemp
from collections import OrderedDict
import debug # pyflakes:ignore
@ -376,6 +377,20 @@ def agenda(request, num=None, name=None, base=None, ext=None):
return HttpResponse(render_to_string("meeting/"+base+ext,
{"schedule":schedule, "updated": updated}, RequestContext(request)), content_type=mimetype[ext])
#TODO - let the IAB in
@role_required('Area Director','Secretariat')
@ensure_csrf_cookie
def agenda_by_room(request,num=None):
meeting = get_meeting(num)
schedule = get_schedule(meeting)
ss_by_day = OrderedDict()
for day in schedule.scheduledsession_set.dates('timeslot__time','day'):
ss_by_day[day]=[]
for ss in schedule.scheduledsession_set.order_by('timeslot__location','timeslot__time'):
day = ss.timeslot.time.date()
ss_by_day[day].append(ss)
return render(request,"meeting/agenda_by_room.html",{"meeting":meeting,"ss_by_day":ss_by_day})
def read_agenda_file(num, doc):
# XXXX FIXME: the path fragment in the code below should be moved to
# settings.py. The *_PATH settings should be generalized to format()