def mock_user(app, request): def teardown(app): with app.app_context(): user = User.query.filter_by(id=2).first() token = RemoteToken.query.filter_by(access_token='123').first() user_identity = UserIdentity.query.filter_by( id='0000-0001-9412-8627', method='orcid').first() remote_account = RemoteAccount.query.filter_by(user_id=2).first() with db.session.begin_nested(): db.session.delete(token) db.session.delete(user_identity) db.session.delete(remote_account) db.session.delete(user) db.session.commit() request.addfinalizer(lambda: teardown(app)) user = User(id=2, ) token = RemoteToken(id_remote_account=1, access_token='123') user_identity = UserIdentity(id='0000-0001-9412-8627', id_user='******', method='orcid') remote_account = RemoteAccount(id=1, user_id=2, extra_data={}, client_id=1, user=user) with app.app_context(): with db.session.begin_nested(): db.session.add(user) db.session.add(user_identity) db.session.add(remote_account) db.session.add(token) db.session.commit() return MockUser(app)
def system_user(app, db): """Create a regular system user.""" user = User(**dict(email="*****@*****.**", active=True)) db.session.add(user) db.session.commit() user_id = user.id identity = UserIdentity(**dict(id="1", method="cern", id_user=user_id)) db.session.add(identity) profile = UserProfile( **dict( user_id=user_id, _displayname="id_" + str(user_id), full_name="System User", ) ) db.session.add(profile) remote_account = RemoteAccount( client_id="CLIENT_ID", **dict( user_id=user_id, extra_data=dict(person_id="1", department="Department"), ) ) db.session.add(remote_account) db.session.commit() return user
def _import_users(users, users_identities, users_profiles, remote_accounts): """Import users in db.""" click.secho('Migrating {0} users'.format(len(users)), fg='green') for user in users: user = User(**user) db.session.add(user) click.secho('Migrating {0} user identities'.format( len(users_identities)), fg='green') for identity in users_identities: user_identity = UserIdentity(**identity) db.session.add(user_identity) click.secho('Migrating {0} user profiles'.format(len(users_profiles)), fg='green') for profile in users_profiles: user_profile = UserProfile(**profile) db.session.add(user_profile) click.secho('Migrating {0} remote accoutns'.format( len(remote_accounts)), fg='green') client_id = current_app.config['CERN_APP_CREDENTIALS']['consumer_key'] for account in remote_accounts: remote_account = RemoteAccount(client_id=client_id, **account) db.session.add(remote_account) db.session.commit()
def patron1(app, db): """Create a patron user.""" user = User(**dict(email="*****@*****.**", active=True)) db.session.add(user) db.session.commit() user_id = user.id identity = UserIdentity(**dict(id="1", method="cern", id_user=user_id)) db.session.add(identity) profile = UserProfile( **dict( user_id=user_id, _displayname="id_" + str(user_id), full_name="System User", ) ) db.session.add(profile) client_id = app.config["CERN_APP_OPENID_CREDENTIALS"]["consumer_key"] remote_account = RemoteAccount( client_id=client_id, **dict( user_id=user_id, extra_data=dict(person_id="1", department="Department"), ) ) db.session.add(remote_account) db.session.commit() return user
def import_users(self): """Return location and internal location records.""" def _commit_user(user_data): """Commit new user in db.""" user = User(**self.import_user(user_data)) db.session.add(user) db.session.commit() return user.id for ldap_user in self.ldap_users: print("Importing user with person id {}".format( ldap_user["employeeID"][0].decode("utf8"))) user_id = _commit_user(ldap_user) identity = UserIdentity( **self.import_user_identity(user_id, ldap_user)) db.session.add(identity) profile = UserProfile( **self.import_user_profile(user_id, ldap_user)) db.session.add(profile) client_id = (current_app.config.get( "CERN_APP_CREDENTIALS", {}).get("consumer_key") or "CLIENT_ID") remote_account = RemoteAccount(client_id=client_id, **self.import_remote_account( user_id, ldap_user)) db.session.add(remote_account) db.session.commit()
def create_invenio_remote_account(self, user_id, ldap_user): """Return new user entry.""" employee_id = ldap_user_get(ldap_user, "employeeID") department = ldap_user_get(ldap_user, "department") return RemoteAccount( client_id=self.client_id, user_id=user_id, extra_data=dict(person_id=employee_id, department=department), )