def store_slot(slot, event): convert_dates(slot) session_id = slot['sessionId'] is_poster = slot['isPoster'] slot_id = slot['id'] color = slot['color'] slot['event'] = ref(event) slot.pop('conveners') slot.pop('_type') db_slot = db.SessionSlot() db_slot.update(slot) db_slot['entries'] = [] db_slot.save() entries = [] for contribution, block_content in slot.get('entries', {}).iteritems(): if block_content['_type'] == 'ContribSchEntry': entries.append(ref(store_contribution(block_content, color, is_poster, db_slot))) db_slot['entries'] = entries if len(db_slot['entries']) > 0: db_slot.save() store_material(slot) return db_slot
def store_event(event_http, event_tt): convert_dates(event_http) event_id = event_http['id'] store_chairs(event_http) event_db = db.Event() event_db.update(event_http) event_db.pop('_type') event_db.save() for day, day_content in event_tt.get(event_id, {}).iteritems(): entries = [] for block, block_content in day_content.iteritems(): if block_content['_type'] == 'LinkedTimeSchEntry': entry = store_slot(block_content, event_db) else: entry = store_contribution(block_content) entries.append(ref(entry)) if len(day_content.keys()) > 0: date = datetime.strptime(day, '%Y%M%d').strftime('%Y-%M-%d').decode('utf-8') day = db.Day() day['date'] = date day['conferenceId'] = event_id day['entries'] = entries day.save()
def store_contribution(contribution, event, color=None, is_poster=False, slot=None): convert_dates(contribution) contribution.update({ 'isPoster': is_poster, 'slot': ref(slot) if slot else None, 'color': color}) contribution.pop('id') contribution.pop('_type') contribution.pop('sessionId') contribution.pop('sessionSlotId') contribution.pop('sessionCode') contribution['event'] = ref(event) contribution['hasAnyProtection'] = event['hasAnyProtection'] store_material(contribution) store_presenters(contribution) db_contribution = db.Contribution() db_contribution.update(contribution) db_contribution.save() return db_contribution