def restore_address(orm, user, address_id, historic, d_time=None): LOG.info("Restoring address %d", address_id) d_time = historic and d_time or None address, address_v, d_time = get_deleted_entity( orm, Address, Address_v, "address_id", address_id, "address_v_id", d_time) d_time = historic and d_time or None if address: LOG.warning("Address %d already exists.", address_id) return address if not address_v: LOG.error( "Cannot restore address %d because no recently " "deleted versions exist.", address_id) return None LOG.info("deleted time: %s", d_time) address = Address( address_v.postal, address_v.source, address_v.lookup, address_v.manual_longitude, address_v.manual_latitude, address_v.longitude, address_v.latitude, user, address_v.public) address.address_id = address_v.address_id del address_v orm.add(address) note_id_list = get_deleted_child_id_list( orm, "address_note", "address_note_v", "address_id", address_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 address.note_list: LOG.warning( "Not linking note %s, already linked to this address.", note_id) continue address.note_list.append(note) return address