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}
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)
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)
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
def test_location_get_all_pickup_locations(es, db, library, location): """.""" locations = Location.get_pickup_location_pids() assert list(locations)[0] == location.pid
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])