Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
0
def new_api_key():
    user = require_user()
    user.apikey = generate_api_key()
    db.session.commit()
    return redirect(url_for('.api_key'))
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
def new_api_key():
    user = require_user()
    user.apikey = generate_api_key()
    db.session.commit()
    return redirect(url_for('.api_key'))