当前位置: 首页>>代码示例>>Python>>正文


Python ExternalAccount.find_one方法代码示例

本文整理汇总了Python中website.oauth.models.ExternalAccount.find_one方法的典型用法代码示例。如果您正苦于以下问题:Python ExternalAccount.find_one方法的具体用法?Python ExternalAccount.find_one怎么用?Python ExternalAccount.find_one使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在website.oauth.models.ExternalAccount的用法示例。


在下文中一共展示了ExternalAccount.find_one方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_callback

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
    def test_callback(self):
        # Exchange temporary credentials for permanent credentials

        # Mock the exchange of the code for an access token
        _prepare_mock_oauth2_handshake_response()

        user = UserFactory()

        # Fake a request context for the callback
        with self.app.app.test_request_context(
                path="/oauth/callback/mock2/",
                query_string="code=mock_code&state=mock_state"
        ):

            # make sure the user is logged in
            authenticate(user=self.user, access_token=None, response=None)

            session = get_session()
            session.data['oauth_states'] = {
                self.provider.short_name: {
                    'state': 'mock_state',
                },
            }
            session.save()

            # do the key exchange

            self.provider.auth_callback(user=user)

        account = ExternalAccount.find_one()
        assert_equal(account.oauth_key, 'mock_access_token')
        assert_equal(account.provider_id, 'mock_provider_id')
开发者ID:GageGaskins,项目名称:osf.io,代码行数:34,代码来源:test_oauth.py

示例2: migrate_to_external_account

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
def migrate_to_external_account(user_settings_document):
    user_info = utils.get_user_info(access_key=user_settings_document['access_key'], secret_key=user_settings_document['secret_key'])
    user = User.load(user_settings_document['owner'])
    if not user_info:
        return (None, None, None)

    new = False
    try:
        external_account = ExternalAccount.find_one(Q('provider_id', 'eq', user_info.id))
        logger.info('Duplicate account use found: s3usersettings {0} with id {1}'.format(user_settings_document['_id'], user._id))
    except NoResultsFound:
        new = True
        external_account = ExternalAccount(
            provider=PROVIDER,
            provider_name=PROVIDER_NAME,
            provider_id=user_info.id,
            oauth_key=user_settings_document['access_key'],
            oauth_secret=user_settings_document['secret_key'],
            display_name=user_info.display_name,
        )
        external_account.save()

    user.external_accounts.append(external_account)
    user.save()
    return external_account, user, new
开发者ID:545zhou,项目名称:osf.io,代码行数:27,代码来源:migrate_to_external_accounts.py

示例3: s3_add_user_account

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
def s3_add_user_account(auth, **kwargs):
    """Verifies new external account credentials and adds to user's list"""
    try:
        access_key = request.json['access_key']
        secret_key = request.json['secret_key']
    except KeyError:
        raise HTTPError(httplib.BAD_REQUEST)

    if not (access_key and secret_key):
        return {
            'message': 'All the fields above are required.'
        }, httplib.BAD_REQUEST

    user_info = utils.get_user_info(access_key, secret_key)
    if not user_info:
        return {
            'message': ('Unable to access account.\n'
                'Check to make sure that the above credentials are valid, '
                'and that they have permission to list buckets.')
        }, httplib.BAD_REQUEST

    if not utils.can_list(access_key, secret_key):
        return {
            'message': ('Unable to list buckets.\n'
                'Listing buckets is required permission that can be changed via IAM')
        }, httplib.BAD_REQUEST

    account = None
    try:
        account = ExternalAccount(
            provider=SHORT_NAME,
            provider_name=FULL_NAME,
            oauth_key=access_key,
            oauth_secret=secret_key,
            provider_id=user_info.id,
            display_name=user_info.display_name,
        )
        account.save()
    except KeyExistsException:
        # ... or get the old one
        account = ExternalAccount.find_one(
            Q('provider', 'eq', SHORT_NAME) &
            Q('provider_id', 'eq', user_info.id)
        )
    assert account is not None

    if account not in auth.user.external_accounts:
        auth.user.external_accounts.append(account)

    # Ensure S3 is enabled.
    auth.user.get_or_add_addon('s3', auth=auth)
    auth.user.save()

    return {}
开发者ID:baylee-d,项目名称:osf.io,代码行数:56,代码来源:views.py

示例4: owncloud_add_user_account

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
def owncloud_add_user_account(auth, **kwargs):
    """
        Verifies new external account credentials and adds to user's list

        This view expects `host`, `username` and `password` fields in the JSON
        body of the request.
    """

    # Ensure that ownCloud uses https
    host_url = request.json.get('host')
    host = furl()
    host.host = host_url.rstrip('/').replace('https://', '').replace('http://', '')
    host.scheme = 'https'

    username = request.json.get('username')
    password = request.json.get('password')

    try:
        oc = owncloud.Client(host.url, verify_certs=settings.USE_SSL)
        oc.login(username, password)
        oc.logout()
    except requests.exceptions.ConnectionError:
        return {
            'message': 'Invalid ownCloud server.'
        }, http.BAD_REQUEST
    except owncloud.owncloud.HTTPResponseError:
        return {
            'message': 'ownCloud Login failed.'
        }, http.UNAUTHORIZED

    provider = OwnCloudProvider(account=None, host=host.url,
                            username=username, password=password)
    try:
        provider.account.save()
    except KeyExistsException:
        # ... or get the old one
        provider.account = ExternalAccount.find_one(
            Q('provider', 'eq', provider.short_name) &
            Q('provider_id', 'eq', '{}:{}'.format(host.url, username).lower())
        )

    user = auth.user
    if provider.account not in user.external_accounts:
        user.external_accounts.append(provider.account)

    user.get_or_add_addon('owncloud', auth=auth)
    user.save()

    return {}
开发者ID:baylee-d,项目名称:osf.io,代码行数:51,代码来源:views.py

示例5: do_migration

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
def do_migration(records):
    host = 'dataverse.harvard.edu'

    for user_addon in records:
        user = user_addon.owner
        api_token = user_addon.api_token

        logger.info('Record found for user {}'.format(user._id))

        # Modified from `dataverse_add_user_account`
        # Create/load external account and append to user
        try:
            account = ExternalAccount(
                provider='dataverse',
                provider_name='Dataverse',
                display_name=host,
                oauth_key=host,
                oauth_secret=api_token,
                provider_id=api_token,
            )
            account.save()
        except KeyExistsException:
            # ... or get the old one
            account = ExternalAccount.find_one(
                Q('provider', 'eq', 'dataverse') &
                Q('provider_id', 'eq', api_token)
            )
            assert account is not None
        user.external_accounts.append(account)
        user.save()

        # Remove api_token from user settings object
        user_addon.api_token = None
        user_addon.save()

        logger.info('Added external account {0} to user {1}'.format(
            account._id, user._id,
        ))

        ####### BROKEN #######
        # Field user_addon needed to be user_addon._id for lookup.
        #
        # Add external account to authorized nodes
        for node_addon in get_authorized_node_settings(user_addon):
            node_addon.set_auth(account, user)

            logger.info('Added external account {0} to node {1}'.format(
                account._id, node_addon.owner._id,
            ))
开发者ID:545zhou,项目名称:osf.io,代码行数:51,代码来源:migrate_to_external_account.py

示例6: dataverse_add_user_account

# 需要导入模块: from website.oauth.models import ExternalAccount [as 别名]
# 或者: from website.oauth.models.ExternalAccount import find_one [as 别名]
def dataverse_add_user_account(auth, **kwargs):
    """Verifies new external account credentials and adds to user's list"""
    user = auth.user
    provider = DataverseProvider()

    host = request.json.get('host').rstrip('/')
    api_token = request.json.get('api_token')

    # Verify that credentials are valid
    client.connect_or_error(host, api_token)

    # Note: `DataverseSerializer` expects display_name to be a URL
    try:
        provider.account = ExternalAccount(
            provider=provider.short_name,
            provider_name=provider.name,
            display_name=host,       # no username; show host
            oauth_key=host,          # hijacked; now host
            oauth_secret=api_token,  # hijacked; now api_token
            provider_id=api_token,   # Change to username if Dataverse allows
        )
        provider.account.save()
    except KeyExistsException:
        # ... or get the old one
        provider.account = ExternalAccount.find_one(
            Q('provider', 'eq', provider.short_name) &
            Q('provider_id', 'eq', api_token)
        )
        assert provider.account is not None

    if provider.account not in user.external_accounts:
        user.external_accounts.append(provider.account)

    user_addon = auth.user.get_addon('dataverse')
    if not user_addon:
        user.add_addon('dataverse')
    user.save()

    # Need to ensure that the user has dataverse enabled at this point
    user.get_or_add_addon('dataverse', auth=auth)
    user.save()

    return {}
开发者ID:AllisonLBowers,项目名称:osf.io,代码行数:45,代码来源:config.py


注:本文中的website.oauth.models.ExternalAccount.find_one方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。