Beispiel #1
0
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
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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