Skip to content

Commit 2c81e8d

Browse files
committed
Add support for not-meeting meeting sessions
- Legacy-Id: 3744
1 parent 3ed0219 commit 2c81e8d

3 files changed

Lines changed: 42 additions & 6 deletions

File tree

ietf/meeting/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class Session(models.Model):
138138
attendees = models.IntegerField(null=True, blank=True)
139139
agenda_note = models.CharField(blank=True, max_length=255)
140140
#
141-
requested = models.DateTimeField()
141+
requested = models.DateTimeField(default=datetime.datetime.now)
142142
requested_by = models.ForeignKey(Person)
143143
requested_duration = TimedeltaField()
144144
comments = models.TextField()

ietf/proceedings/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,12 @@ def __unicode__(self):
584584
class Meta:
585585
db_table = u'meeting_hours'
586586

587+
class NotMeetingGroup(models.Model):
588+
# note: phony key, there's no primary key in db
589+
group_acronym = models.ForeignKey(Acronym, primary_key=True, null=True, blank=True)
590+
meeting = models.ForeignKey(Meeting, db_column='meeting_num', null=True, blank=True)
591+
class Meta:
592+
db_table = u'not_meeting_groups'
587593

588594
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
589595
MeetingOld = Meeting

redesign/importing/import-meetings.py

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from ietf.idtracker.models import AreaDirector, IETFWG, Acronym, IRTF, PersonOrOrgInfo
1919
from ietf.meeting.models import *
20-
from ietf.proceedings.models import Meeting as MeetingOld, MeetingVenue, MeetingRoom, NonSession, WgMeetingSession, WgAgenda, Minute, Slide, WgProceedingsActivities
20+
from ietf.proceedings.models import Meeting as MeetingOld, MeetingVenue, MeetingRoom, NonSession, WgMeetingSession, WgAgenda, Minute, Slide, WgProceedingsActivities, NotMeetingGroup
2121
from redesign.person.models import *
2222
from redesign.doc.models import Document, DocAlias, State, DocEvent
2323
from redesign.importing.utils import old_person_to_person, dont_save_queries
@@ -28,7 +28,7 @@
2828

2929
# imports Meeting, MeetingVenue, MeetingRoom, NonSession,
3030
# WgMeetingSession, WgAgenda, Minute, Slide, upload events from
31-
# WgProceedingsActivities
31+
# WgProceedingsActivities, NotMeetingGroup
3232

3333
# assumptions:
3434
# - persons have been imported
@@ -46,6 +46,8 @@
4646
6: name(SessionStatusName, "disappr", "Disapproved"),
4747
}
4848

49+
status_not_meeting = name(SessionStatusName, "notmeet", "Not meeting")
50+
4951
session_status_mapping[0] = session_status_mapping[1] # assume broken statuses of 0 are actually cancelled
5052

5153
session_slot = name(TimeSlotTypeName, "session", "Session")
@@ -133,6 +135,12 @@
133135

134136
m.save()
135137

138+
meeting_cache = {}
139+
def get_meeting(num):
140+
if not num in meeting_cache:
141+
meeting_cache[num] = Meeting.objects.get(number="%s" % num)
142+
return meeting_cache[num]
143+
136144
for o in MeetingRoom.objects.all():
137145
print "importing MeetingRoom", o.pk
138146

@@ -141,7 +149,7 @@
141149
except Room.DoesNotExist:
142150
r = Room(pk=o.pk)
143151

144-
r.meeting = Meeting.objects.get(number="%s" % o.meeting_id)
152+
r.meeting = get_meeting(o.meeting_id)
145153
r.name = o.room_name
146154
r.save()
147155

@@ -265,7 +273,7 @@ def import_material_kind(kind, doctype):
265273
s = Session.objects.get(pk=pk)
266274
except:
267275
s = Session(pk=pk)
268-
s.meeting = Meeting.objects.get(number=o.meeting_id)
276+
s.meeting = get_meeting(o.meeting_id)
269277

270278
def get_timeslot(attr):
271279
meeting_time = getattr(o, attr)
@@ -375,7 +383,7 @@ def get_timeslot(attr):
375383
print "IGNORING non-scheduled NonSession", o.non_session_ref.name
376384
continue
377385

378-
meeting = Meeting.objects.get(number=o.meeting_id)
386+
meeting = get_meeting(o.meeting_id)
379387

380388
# some non-sessions are scheduled every day, but only if there's a
381389
# session nearby, figure out which days this corresponds to
@@ -408,3 +416,25 @@ def get_timeslot(attr):
408416
slot.duration = ends - starts
409417
slot.show_location = o.show_break_location
410418
slot.save()
419+
420+
421+
for o in NotMeetingGroup.objects.all().select_related('group_acronym'):
422+
if o.group_acronym_id == None or o.group_acronym == None:
423+
print "SKIPPING NotMeetingGroup with group_acronym_id", o.group_acronym_id
424+
continue # bogus data
425+
426+
print "importing NotMeetingGroup", o.group_acronym.acronym, o.meeting_id
427+
try:
428+
group = Group.objects.get(acronym=o.group_acronym.acronym)
429+
except Group.DoesNotExist:
430+
print "SKIPPING", o.group_acronym.acronym
431+
continue
432+
meeting = get_meeting(o.meeting_id)
433+
434+
if not Session.objects.filter(meeting=meeting, group=group):
435+
Session.objects.get_or_create(meeting=meeting,
436+
group=group,
437+
status=status_not_meeting,
438+
defaults=dict(requested_by=system_person,
439+
requested_duration=0))
440+

0 commit comments

Comments
 (0)