示例#1
0
def index():
    """Index patrons."""
    from invenio_app_ils.proxies import current_app_ils

    patrons = User.query.all()
    indexer = PatronIndexer()

    click.secho("Now indexing {0} patrons".format(len(patrons)), fg="green")

    Patron = current_app_ils.patron_cls
    for pat in patrons:
        patron = Patron(pat.id)
        indexer.index(patron)
示例#2
0
def index():
    """Index patrons."""
    from flask import current_app
    from invenio_app_ils.pidstore.pids import PATRON_PID_TYPE

    patrons = User.query.all()
    indexer = PatronIndexer()

    click.secho("Now indexing {0} patrons".format(len(patrons)), fg="green")

    rest_config = current_app.config["RECORDS_REST_ENDPOINTS"]
    patron_cls = rest_config[PATRON_PID_TYPE]["record_class"] or Patron
    for pat in patrons:
        patron = patron_cls(pat.id)
        indexer.index(patron)
    def test_on_patron_update():
        """Test patron resolvers."""
        indexer = _get_mock()

        pid = "2"
        patron = Patron.get_patron(pid)
        PatronIndexer().index(patron)

        referenced = _assert_origin(indexer, PATRON_PID_TYPE, pid)

        # should re-index loans
        n_loans = 3  # from test data
        _assert_contains(referenced, CIRCULATION_LOAN_PID_TYPE)

        # should re-index document request
        n_doc_req = 1  # from test data
        _assert_contains(referenced, DOCUMENT_REQUEST_PID_TYPE)

        # should re-index acq
        n_acq = 1  # from test data
        _assert_contains(referenced, ORDER_PID_TYPE)

        # should re-index ill
        n_ill = 3  # from test data
        _assert_contains(referenced, BORROWING_REQUEST_PID_TYPE)

        expected_total = n_loans + n_doc_req + n_acq + n_ill
        assert len(referenced) == expected_total
示例#4
0
def import_users_from_json(dump_file):
    """Imports additional user data from JSON."""
    dump_file = dump_file[0]
    with click.progressbar(json.load(dump_file)) as bar:
        for record in bar:
            click.echo(
                'Importing user "{0}({1})"...'.format(
                    record["id"], record["email"]
                )
            )
            user = get_user_by_person_id(record["ccid"])
            if not user:
                click.secho(
                    "User {0}({1}) not synced via LDAP".format(
                        record["id"], record["email"]
                    ),
                    fg="red",
                )
                continue
                # todo uncomment when more data
                # raise UserMigrationError
            else:
                client_id = current_app.config["CERN_APP_OPENID_CREDENTIALS"][
                    "consumer_key"
                ]
                account = RemoteAccount.get(
                    user_id=user.id, client_id=client_id
                )
                extra_data = account.extra_data
                # add legacy_id information
                account.extra_data.update(legacy_id=record["id"], **extra_data)
                db.session.add(account)
                patron = Patron(user.id)
                PatronIndexer().index(patron)
        db.session.commit()
示例#5
0
def test_patron_loans_view(app, patron1, testdata, client):
    """Test check for users update in sync command."""

    db.session.add(
        ActionUsers.allow(retrieve_patron_loans_access_action, user=patron1))
    db.session.commit()

    patron = Patron(patron1.id)
    PatronIndexer().index(patron)
    current_search.flush_and_refresh(index="*")

    login_user_via_session(client, email=patron1.email)

    resp = client.get(url_for("cds_ils_patron_loans.patron_loans",
                              person_id=1))

    assert resp.status_code == 200

    expected_books_on_loan = [{
        "barcode":
        "123456789-3",
        "end_date":
        "2018-07-28",
        "library":
        "Main Library",
        "location":
        "Route de Meyrin",
        "title":
        "Prairie Fires: The American Dreams of "
        "Laura Ingalls Wilder",
    }]
    expected_loan_requests = [{
        "request_start_date":
        "2018-06-28",
        "request_end_date":
        "2018-07-28",
        "library":
        "Main Library",
        "location":
        "Route de Meyrin",
        "title":
        "The Gulf: The Making of An American Sea",
    }]
    data = resp.json
    assert data["books_on_loan"] == expected_books_on_loan
    assert data["loan_requests"] == expected_loan_requests

    # test extra_info
    assert patron.extra_info
    assert data["person_id"] == patron.extra_info["person_id"]
    assert data["department"] == patron.extra_info["department"]