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)
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
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()
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"]