Пример #1
0
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