def find_or_create_google_user(google_user_id, openid=None): user = db.session.query(Account).join(AccountGoogle).\ filter(AccountGoogle.google_user_id == google_user_id).first() if user is not None: return user if openid is not None: user = db.session.query(Account).join(AccountOpenID).\ filter(AccountOpenID.openid == openid).first() if user is not None: db.session.query(AccountOpenID).\ filter(AccountOpenID.openid == openid).delete() logger.info("Migrated OpenID user %s to Google user %s", openid, google_user_id) if user is None: user = Account() user.name = 'Google Account' user.apikey = generate_api_key() user.submission_count = 0 db.session.add(user) db.session.flush() logger.info("Created user %s (%s)", user.id, user.name) google_user = AccountGoogle() google_user.account = user google_user.google_user_id = google_user_id db.session.add(google_user) logger.info("Associated user %s (%s) with Google user %s", user.id, user.name, google_user_id) return user
def insert_account(conn, data): # type: (AppDB, Dict[str, Any]) -> Tuple[int, str] """ Insert a new account into the database """ insert_stmt = schema.account.insert().values({ 'name': data['name'], 'mbuser': data.get('mbuser'), 'created_from': data.get('created_from'), 'application_id': data.get('application_id'), 'application_version': data.get('application_version'), 'lastlogin': sql.text('now()'), 'apikey': generate_api_key(), }).returning(schema.account.c.id, schema.account.c.apikey) id, api_key = conn.execute(insert_stmt).fetchone() if 'openid' in data: insert_stmt = schema.account_openid.insert().values({ 'account_id': id, 'openid': data['openid'], }) conn.execute(insert_stmt) logger.debug("Inserted account %r with data %r", id, data) return id, api_key
def reset_account_apikey(conn, id): with conn.begin(): update_stmt = schema.account.update().where( schema.account.c.id == id) update_stmt = update_stmt.values(apikey=generate_api_key()) conn.execute(update_stmt) logger.debug("Reset API key for account %r", id)
def find_or_create_musicbrainz_user(mb_user_name): user = db.session.query(Account).filter_by(mbuser=mb_user_name).first() if user is not None: return user user = Account() user.name = mb_user_name user.mbuser = mb_user_name user.apikey = generate_api_key() user.submission_count = 0 db.session.add(user) db.session.flush() return user
def insert_application(conn, data): """ Insert a new application into the database """ api_key = generate_api_key() with conn.begin(): insert_stmt = schema.application.insert().values({ 'name': data['name'], 'version': data['version'], 'email': data.get('email'), 'website': data.get('website'), 'account_id': data['account_id'], 'apikey': api_key, }) id = conn.execute(insert_stmt).inserted_primary_key[0] logger.debug("Inserted application %r with data %r", id, data) return id, api_key
def insert_account(conn, data): """ Insert a new account into the database """ with conn.begin(): insert_stmt = schema.account.insert().values({ 'name': data['name'], 'mbuser': data.get('mbuser'), 'created_from': data.get('created_from'), 'application_id': data.get('application_id'), 'application_version': data.get('application_version'), 'lastlogin': sql.text('now()'), 'apikey': generate_api_key(), }).returning(schema.account.c.id, schema.account.c.apikey) id, api_key = conn.execute(insert_stmt).fetchone() if 'openid' in data: insert_stmt = schema.account_openid.insert().values({ 'account_id': id, 'openid': data['openid'], }) conn.execute(insert_stmt) logger.debug("Inserted account %r with data %r", id, data) return id, api_key
def new_api_key(): user = require_user() user.apikey = generate_api_key() db.session.commit() return redirect(url_for('.api_key'))
def reset_account_apikey(conn, id): # type: (AppDB, int) -> None update_stmt = schema.account.update().where(schema.account.c.id == id) update_stmt = update_stmt.values(apikey=generate_api_key()) conn.execute(update_stmt) logger.debug("Reset API key for account %r", id)
def reset_account_apikey(conn, id): with conn.begin(): update_stmt = schema.account.update().where(schema.account.c.id == id) update_stmt = update_stmt.values(apikey=generate_api_key()) conn.execute(update_stmt) logger.debug("Reset API key for account %r", id)