def restore_event(orm, user, event_id, historic, d_time=None): LOG.info("Restoring event %d", event_id) d_time = historic and d_time or None event, event_v, d_time = get_deleted_entity( orm, Event, Event_v, "event_id", event_id, "event_v_id", d_time) d_time = historic and d_time or None if event: LOG.warning("Event %d already exists.", event_id) return event if not event_v: LOG.error( "Cannot restore event %d because no recently " "deleted versions exist.", event_id) return None LOG.info("deleted time: %s", d_time) event = Event( event_v.name, event_v.start_date, event_v.end_date, event_v.description, event_v.start_time, event_v.end_time, user, event_v.public) event.event_id = event_v.event_id del event_v orm.add(event) eventtag_id_list = get_deleted_child_id_list( orm, "event_eventtag", "event_eventtag_v", "event_id", event_id, "eventtag_id", d_time) for eventtag_id in eventtag_id_list: eventtag = restore_eventtag(orm, user, eventtag_id) if not eventtag: continue if eventtag in event.eventtag_list: LOG.warning( "Not linking eventtag %s, already linked to this event.", eventtag_id) continue event.eventtag_list.append(eventtag) address_id_list = get_deleted_child_id_list( orm, "event_address", "event_address_v", "event_id", event_id, "address_id", d_time) for address_id in address_id_list: address = restore_address(orm, user, address_id, historic, d_time) if not address: continue if address.org_list or address.event_list: LOG.warning( "Not linking address %s, already linked to another entity.", address_id) continue if address in event.address_list: LOG.warning( "Not linking address %s, already linked to this event.", address_id) continue event.address_list.append(address) note_id_list = get_deleted_child_id_list( orm, "event_note", "event_note_v", "event_id", event_id, "note_id", d_time) for note_id in note_id_list: note = restore_note(orm, user, note_id, historic, d_time) if not note: continue if note in event.note_list: LOG.warning( "Not linking note %s, already linked to this event.", note_id) continue event.note_list.append(note) org_id_list = get_deleted_child_id_list( orm, "org_event", "org_event_v", "event_id", event_id, "org_id", d_time) for org_id in org_id_list: org = get_existing_entity(orm, Org, "org_id", org_id) if org: if org in event.org_list: LOG.warning( "Not linking org %s, already linked to this event.", org_id) continue event.org_list.append(org) else: LOG.warning("Not restoring link to deleted org %d.", org_id) return event