示例#1
0
def test_location_get_all_pickup_locations(
        patron_martigny, loc_public_martigny, loc_public_sion):
    """Test pickup locations retrieval."""
    locations = Location.get_pickup_location_pids()
    assert set(locations) == {loc_public_martigny.pid, loc_public_sion.pid}

    locations = Location.get_pickup_location_pids(patron_martigny.pid)
    assert set(locations) == {loc_public_martigny.pid}
示例#2
0
def test_location_pickup_locations(locations, patron_martigny_no_email,
                                   patron_sion_no_email, loc_public_martigny,
                                   item2_lib_martigny):
    """Test for pickup locations."""

    # At the beginning, if we load all locations from fixtures, there are 4
    # pickup locations (loc1, loc3, loc5, loc7)
    pickup_locations = Location.get_pickup_location_pids()
    assert set(pickup_locations) == set(['loc1', 'loc3', 'loc5', 'loc7'])

    # check pickup restrictions by patron_pid
    pickup_locations = Location.get_pickup_location_pids(
        patron_pid=patron_martigny_no_email.pid)
    assert set(pickup_locations) == set(['loc1', 'loc3', 'loc5'])
    pickup_locations = Location.get_pickup_location_pids(
        patron_pid=patron_sion_no_email.pid)
    assert set(pickup_locations) == set(['loc7'])

    # check pickup restrictions by item_barcode
    #   * update `loc1` to restrict_pickup_to 'loc3' and 'loc6'
    #     --> 'loc6' isn't a pickup location... it's just for test
    loc_public_martigny['restrict_pickup_to'] = [
        {'$ref': 'https://ils.rero.ch/api/locations/loc3'},
        {'$ref': 'https://ils.rero.ch/api/locations/loc6'},
    ]
    loc_public_martigny.update(
        loc_public_martigny,
        dbcommit=True,
        reindex=True
    )
    flush_index(LocationsSearch.Meta.index)
    pickup_locations = Location.get_pickup_location_pids(
        item_pid=item2_lib_martigny.pid)
    assert set(pickup_locations) == set(['loc3'])

    pickup_locations = Location.get_pickup_location_pids(
        patron_pid=patron_sion_no_email.pid,
        item_pid=item2_lib_martigny.pid)
    assert set(pickup_locations) == set([])

    # check document.views::item_library_pickup_locations
    #   As we limit pickup to two specific location, this tests will also
    #   return only these two records instead of all pickups for the
    #   organisation
    picks = item_library_pickup_locations(item2_lib_martigny)
    assert len(picks) == 2

    # reset the location to default value before leaving
    del loc_public_martigny['restrict_pickup_to']
    loc_public_martigny.update(
        loc_public_martigny,
        dbcommit=True,
        reindex=True
    )
    flush_index(LocationsSearch.Meta.index)
示例#3
0
def get_pickup_location_options():
    """Get all pickup location for all patron accounts."""
    for ptrn_pid in [ptrn.pid for ptrn in current_patrons]:
        for pid in Location.get_pickup_location_pids(ptrn_pid):
            location = Location.get_record_by_pid(pid)
            location_name = location.get('pickup_name', location.get('name'))
            yield (location.pid, location_name)
示例#4
0
文件: cli.py 项目: lauren-d/rero-ils
def get_locations():
    """Get one pickup_location for each organisation.

    :return: A dict of locations pids by organisation
    """
    location_data = {}
    for pid in Location.get_pickup_location_pids():
        record = Location.get_record_by_pid(pid)
        if record.organisation_pid not in location_data:
            location_data[record.organisation_pid] = pid
    return location_data
示例#5
0
def test_location_get_all_pickup_locations(es, db, library, location):
    """."""
    locations = Location.get_pickup_location_pids()
    assert list(locations)[0] == location.pid
示例#6
0
def get_pickup_location_options():
    """Get all pickup location."""
    for pid in Location.get_pickup_location_pids(current_patron.pid):
        location = Location.get_record_by_pid(pid)
        location_name = location.get('pickup_name', location.get('name'))
        yield tuple([location.pid, location_name])