def test_patron_organisation_pid(org_martigny, patron_martigny, librarian_martigny): """Test organisation pid has been added during the indexing.""" search = PatronsSearch() librarian = next(search.filter('term', pid=librarian_martigny.pid).scan()) patron = next(search.filter('term', pid=patron_martigny.pid).scan()) assert patron.organisation.pid == org_martigny.pid assert librarian.organisation.pid == org_martigny.pid
def test_patron_es_mapping(roles, es, lib_martigny, librarian_martigny_data_tmp): """Test patron elasticsearch mapping.""" search = PatronsSearch() mapping = get_mapping(search.Meta.index) # TODO: create of an patron assert mapping == get_mapping(search.Meta.index)
def upgrade(): """Fix incorrectly set patron communication channels.""" query = PatronsSearch()\ .filter('term', patron__communication_channel=CommunicationChannel.EMAIL)\ .filter('bool', must_not=[ Q('exists', field='patron.additional_communication_email')])\ .filter('bool', must_not=[Q('exists', field='email')])\ .source(includes='pid') pids = [(hit['pid'], hit.meta.id) for hit in query.scan()] errors = 0 ids = [] for idx, (pid, id) in enumerate(pids, 1): if patron := Patron.get_record_by_pid(pid): ids.append(id) try: patron['patron']['communication_channel'] = \ CommunicationChannel.MAIL db.session.query(patron.model_cls).filter_by( id=patron.id).update({patron.model_cls.json: patron}) except Exception as err: LOGGER.error(f'{idx} * Update patron: {pid} {err}') errors += 1
def test_patron_search_mapping(app, patrons_records, librarian_saxon): """Test patron search mapping.""" search = PatronsSearch() assert search.query('query_string', query='Roduit').count() == 1 assert search.query('match', first_name='Eric').count() == 1 assert search.query('match', last_name='Moret').count() == 1 assert search.query('match', first_name='Elena').count() == 1 eq_query = search.query('match', first_name='Eléna').source(['pid']).scan() pids = [hit.pid for hit in eq_query] assert len(pids) == 1 assert librarian_saxon.pid in pids
def test_patron_search_mapping(app, patrons_records, librarian_saxon_no_email): """Test patron search mapping.""" search = PatronsSearch() c = search.query('query_string', query='Roduit').count() assert c == 1 c = search.query('match', first_name='Eric').count() assert c == 1 c = search.query('match', last_name='Moret').count() assert c == 1 c = search.query('match', first_name='Eléna').count() assert c == 1 c = search.query('match', first_name='Elena').count() assert c == 1 pids = [r.pid for r in search.query( 'match', first_name='Eléna').source(['pid']).scan()] assert librarian_saxon_no_email.pid in pids