Skip to content

Commit 1e30120

Browse files
committed
checkpoint. Model changes done and UI tweaked to match.
- Legacy-Id: 9588
1 parent 65f0fed commit 1e30120

16 files changed

Lines changed: 62 additions & 27 deletions

File tree

ietf/bin/create-break-sessions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ scheduled = SessionStatusName.objects.get(slug='sched')
2222

2323
for meeting in Meeting.objects.filter(type="ietf").order_by("date"):
2424
print "Checking %s schedules ..." % meeting
25-
brk, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Break', )
26-
reg, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Registration', )
25+
brk, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Break', type_id='break',)
26+
reg, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Registration', type_id='reg',)
2727

2828
for schedule in meeting.schedule_set.all():
2929
print " Checking for missing Break and Reg sessions in %s" % schedule

ietf/doc/tests.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ def test_document_material(self):
527527
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
528528
modified = datetime.datetime.now(),
529529
requested_by = Person.objects.get(user__username="marschairman"),
530+
type_id = "session",
530531
)
531532
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
532533

ietf/doc/tests_material.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ def test_revise(self):
148148
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
149149
modified = datetime.datetime.now(),
150150
requested_by = Person.objects.get(user__username="marschairman"),
151+
type_id="session",
151152
)
152153
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
153154

ietf/meeting/ajax.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ def timeslot_roomurl(request, num=None, roomid=None):
158158
# no authorization required to list.
159159
def timeslot_slotlist(request, mtg):
160160
slots = mtg.timeslot_set.all()
161+
# Restrict graphical editing to slots of type 'session' for now
162+
slots = slots.filter(type__slug='session')
161163
json_array=[]
162164
for slot in slots:
163165
json_array.append(slot.json_dict(request.build_absolute_uri('/')))

ietf/meeting/helpers.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,16 @@ def build_all_agenda_slices(meeting):
8585
time_slices.sort()
8686
return time_slices,date_slices
8787

88-
def get_scheduledsessions_from_schedule(schedule):
89-
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).exclude(session__isnull = True).order_by('timeslot__time','timeslot__name','session__group__group')
90-
91-
return ss
88+
# Not Used
89+
#def get_scheduledsessions_from_schedule(schedule):
90+
# ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).exclude(session__isnull = True).order_by('timeslot__time','timeslot__name','session__group__group')
91+
#
92+
# return ss
9293

9394
def get_all_scheduledsessions_from_schedule(schedule):
94-
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).order_by('timeslot__time','timeslot__name')
95+
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False)
96+
ss = ss.filter(session__type__slug='session')
97+
ss = ss.order_by('timeslot__time','timeslot__name')
9598

9699
return ss
97100

ietf/meeting/models.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,10 @@ def get_schedule_by_name(self, name):
161161

162162
@property
163163
def sessions_that_can_meet(self):
164-
return self.session_set.exclude(status__slug='notmeet').exclude(status__slug='disappr').exclude(status__slug='deleted').exclude(status__slug='apprw')
164+
qs = self.session_set.exclude(status__slug='notmeet').exclude(status__slug='disappr').exclude(status__slug='deleted').exclude(status__slug='apprw')
165+
# Restrict graphical scheduling to meeting requests (Sessions) of type 'session' for now
166+
qs = qs.filter(type__slug='session')
167+
return qs
165168

166169
def sessions_that_can_be_placed(self):
167170
from django.db.models import Q
@@ -286,6 +289,7 @@ class Room(models.Model):
286289
name = models.CharField(max_length=255)
287290
capacity = models.IntegerField(null=True, blank=True)
288291
resources = models.ManyToManyField(ResourceAssociation, blank = True)
292+
session_types = models.ManyToManyField(TimeSlotTypeName, blank = True)
289293

290294
def __unicode__(self):
291295
return "%s size: %s" % (self.name, self.capacity)
@@ -851,7 +855,8 @@ class Session(models.Model):
851855
meeting = models.ForeignKey(Meeting)
852856
name = models.CharField(blank=True, max_length=255, help_text="Name of session, in case the session has a purpose rather than just being a group meeting.")
853857
short = models.CharField(blank=True, max_length=32, help_text="Short version of 'name' above, for use in filenames.")
854-
group = models.ForeignKey(Group) # The group type determines the session type. BOFs also need to be added as a group.
858+
type = models.ForeignKey(TimeSlotTypeName)
859+
group = models.ForeignKey(Group) # The group type historically determined the session type. BOFs also need to be added as a group. Note that not all meeting requests have a natural group to associate with.
855860
attendees = models.IntegerField(null=True, blank=True)
856861
agenda_note = models.CharField(blank=True, max_length=255)
857862
requested = models.DateTimeField(default=datetime.datetime.now)
@@ -1007,7 +1012,13 @@ def agenda_text(self):
10071012
else:
10081013
return "The agenda has not been uploaded yet."
10091014

1010-
def type(self):
1015+
# FIXME - This used to be called 'type'. It is only used in agenda.csv and agenda.txt.
1016+
# It will return the _wrong thing_ if you look back at an agenda of an earlier meeting
1017+
# where group X was a BOF at the time, but is now a WG.
1018+
# It also doesn't return anything useful for RG, area sessions, or anything that's not group type 'wg'.
1019+
# A better thing to do is find a way to note when a meeting was a BoF meeting and use that, removing this
1020+
# function altogether.
1021+
def lame_description(self):
10111022
if self.group.type.slug in [ "wg" ]:
10121023
return "BOF" if self.group.state.slug in ["bof", "bof-conc"] else "WG"
10131024
else:

ietf/meeting/test_data.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ def make_meeting_test_data():
2121
projector = ResourceAssociation.objects.create(name=pname,icon="notfound.png",desc="Basic projector")
2222
room = Room.objects.create(meeting=meeting, name="Test Room", capacity=123)
2323
breakfast_room = Room.objects.create(meeting=meeting, name="Breakfast Room", capacity=40)
24+
room.session_types.add("session")
25+
breakfast_room.session_types.add("lead")
2426
room.resources = [projector]
2527

2628
# mars WG
@@ -30,7 +32,7 @@ def make_meeting_test_data():
3032
mars_session = Session.objects.create(meeting=meeting, group=mars,
3133
attendees=10, requested_by=system_person,
3234
requested_duration=20, status_id="schedw",
33-
scheduled=datetime.datetime.now())
35+
scheduled=datetime.datetime.now(),type_id="session")
3436
mars_session.resources = [projector]
3537
ScheduledSession.objects.create(timeslot=slot, session=mars_session, schedule=schedule)
3638

@@ -40,7 +42,7 @@ def make_meeting_test_data():
4042
ames_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="ames"),
4143
attendees=10, requested_by=system_person,
4244
requested_duration=20, status_id="schedw",
43-
scheduled=datetime.datetime.now())
45+
scheduled=datetime.datetime.now(),type_id="session")
4446
ScheduledSession.objects.create(timeslot=slot, session=ames_session, schedule=schedule)
4547

4648
# IESG breakfast
@@ -51,7 +53,7 @@ def make_meeting_test_data():
5153
name="IESG Breakfast",
5254
attendees=25, requested_by=system_person,
5355
requested_duration=20, status_id="schedw",
54-
scheduled=datetime.datetime.now())
56+
scheduled=datetime.datetime.now(),type_id="lead")
5557
ScheduledSession.objects.create(timeslot=breakfast_slot, session=iesg_session, schedule=schedule)
5658

5759
meeting.agenda = schedule

ietf/meeting/tests_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ def test_sessions_json(self):
204204
r = self.client.get(url)
205205
self.assertEqual(r.status_code, 200)
206206
info = json.loads(r.content)
207-
self.assertEqual(set([x['short_name'] for x in info]),set([s.session.short_name for s in meeting.agenda.scheduledsession_set.all()]))
207+
self.assertEqual(set([x['short_name'] for x in info]),set([s.session.short_name for s in meeting.agenda.scheduledsession_set.filter(session__type_id='session')]))
208208

209209
schedule = meeting.agenda
210210
url = urlreverse("ietf.meeting.ajax.scheduledsessions_json",

ietf/meeting/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ def edit_agenda(request, num=None, owner=None, name=None):
261261

262262
#rooms = meeting.room_set.order_by("capacity")
263263
#rooms = rooms.all()
264-
rooms = meeting.room_set.filter(timeslot__type__slug='session').distinct().order_by("capacity")
264+
rooms = meeting.room_set.filter(session_types__slug='session').distinct().order_by("capacity")
265265
saveas = SaveAsForm()
266266
saveasurl=reverse(edit_agenda,
267267
args=[meeting.number, schedule.owner_email(), schedule.name])
@@ -644,7 +644,7 @@ def ical_agenda(request, num=None, name=None, ext=None):
644644

645645
def meeting_requests(request, num=None) :
646646
meeting = get_meeting(num)
647-
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")
647+
sessions = Session.objects.filter(meeting__number=meeting.number, type__slug='session', group__parent__isnull = False).exclude(requested_by=0).order_by("group__parent__acronym","status__slug","group__acronym")
648648

649649
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")
650650

ietf/secr/meetings/views.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,17 @@ def build_nonsession(meeting,schedule):
105105
short=get_session(slot).short,
106106
group=get_session(slot).group,
107107
requested_by=system,
108-
status_id='sched')
108+
status_id='sched',
109+
type=slot.type,
110+
)
109111
else:
110112
session, __ = Session.objects.get_or_create(meeting=meeting,
111113
name=slot.name,
112114
group=secretariat,
113115
requested_by=system,
114-
status_id='sched')
116+
status_id='sched',
117+
type=slot.type,
118+
)
115119
session.save()
116120

117121
ts = TimeSlot.objects.create(type=slot.type,
@@ -469,7 +473,9 @@ def non_session(request, meeting_id, schedule_name):
469473
short=short,
470474
group=group,
471475
requested_by=Person.objects.get(name='(system)'),
472-
status_id='sched')
476+
status_id='sched',
477+
type=type,
478+
)
473479
session.save()
474480

475481
# create association

0 commit comments

Comments
 (0)