|
17 | 17 |
|
18 | 18 | from ietf.idtracker.models import AreaDirector, IETFWG, Acronym, IRTF, PersonOrOrgInfo |
19 | 19 | 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 |
21 | 21 | from redesign.person.models import * |
22 | 22 | from redesign.doc.models import Document, DocAlias, State, DocEvent |
23 | 23 | from redesign.importing.utils import old_person_to_person, dont_save_queries |
|
28 | 28 |
|
29 | 29 | # imports Meeting, MeetingVenue, MeetingRoom, NonSession, |
30 | 30 | # WgMeetingSession, WgAgenda, Minute, Slide, upload events from |
31 | | -# WgProceedingsActivities |
| 31 | +# WgProceedingsActivities, NotMeetingGroup |
32 | 32 |
|
33 | 33 | # assumptions: |
34 | 34 | # - persons have been imported |
|
46 | 46 | 6: name(SessionStatusName, "disappr", "Disapproved"), |
47 | 47 | } |
48 | 48 |
|
| 49 | +status_not_meeting = name(SessionStatusName, "notmeet", "Not meeting") |
| 50 | + |
49 | 51 | session_status_mapping[0] = session_status_mapping[1] # assume broken statuses of 0 are actually cancelled |
50 | 52 |
|
51 | 53 | session_slot = name(TimeSlotTypeName, "session", "Session") |
|
133 | 135 |
|
134 | 136 | m.save() |
135 | 137 |
|
| 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 | + |
136 | 144 | for o in MeetingRoom.objects.all(): |
137 | 145 | print "importing MeetingRoom", o.pk |
138 | 146 |
|
|
141 | 149 | except Room.DoesNotExist: |
142 | 150 | r = Room(pk=o.pk) |
143 | 151 |
|
144 | | - r.meeting = Meeting.objects.get(number="%s" % o.meeting_id) |
| 152 | + r.meeting = get_meeting(o.meeting_id) |
145 | 153 | r.name = o.room_name |
146 | 154 | r.save() |
147 | 155 |
|
@@ -265,7 +273,7 @@ def import_material_kind(kind, doctype): |
265 | 273 | s = Session.objects.get(pk=pk) |
266 | 274 | except: |
267 | 275 | s = Session(pk=pk) |
268 | | - s.meeting = Meeting.objects.get(number=o.meeting_id) |
| 276 | + s.meeting = get_meeting(o.meeting_id) |
269 | 277 |
|
270 | 278 | def get_timeslot(attr): |
271 | 279 | meeting_time = getattr(o, attr) |
@@ -375,7 +383,7 @@ def get_timeslot(attr): |
375 | 383 | print "IGNORING non-scheduled NonSession", o.non_session_ref.name |
376 | 384 | continue |
377 | 385 |
|
378 | | - meeting = Meeting.objects.get(number=o.meeting_id) |
| 386 | + meeting = get_meeting(o.meeting_id) |
379 | 387 |
|
380 | 388 | # some non-sessions are scheduled every day, but only if there's a |
381 | 389 | # session nearby, figure out which days this corresponds to |
@@ -408,3 +416,25 @@ def get_timeslot(attr): |
408 | 416 | slot.duration = ends - starts |
409 | 417 | slot.show_location = o.show_break_location |
410 | 418 | 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