Checkpoint: by-room view and basic leadership meetings support
- Legacy-Id: 8930
This commit is contained in:
parent
8686fd2a4e
commit
47901e8555
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue