def do_migration(): for node_addon in GoogleDriveNodeSettings.find(Q('foreign_user_settings', 'ne', None)): f_id = None user_addon = node_addon.foreign_user_settings user = user_addon.owner if not user_addon.external_accounts: logger.warning('User {0} has no googledrive external account'.format(user._id)) continue account = user_addon.external_accounts[0] if node_addon.folder_id: f_id = node_addon.folder_id node_addon.set_auth(account, user_addon.owner) #.set_auth will reset the folder_id field node_addon.folder_id = f_id node_addon.save() user_addon.grant_oauth_access( node=node_addon.owner, external_account=account, metadata={'folder': f_id} ) logger.info('Added external account {0} to node {1}'.format( account._id, node_addon.owner._id, ))
def do_migration(): for node_addon in GoogleDriveNodeSettings.find( Q('foreign_user_settings', 'ne', None)): f_id = None user_addon = node_addon.foreign_user_settings user = user_addon.owner if not user_addon.external_accounts: logger.warning( 'User {0} has no googledrive external account'.format( user._id)) continue account = user_addon.external_accounts[0] if node_addon.folder_id: f_id = node_addon.folder_id node_addon.set_auth( account, user_addon.owner) #.set_auth will reset the folder_id field node_addon.folder_id = f_id node_addon.save() user_addon.grant_oauth_access(node=node_addon.owner, external_account=account, metadata={'folder': f_id}) logger.info('Added external account {0} to node {1}'.format( account._id, node_addon.owner._id, ))
def do_migration(records): database['googledrivenodesettings'].update({'user_settings': { '$type': 2 }}, {'$rename': { 'user_settings': 'foreign_user_settings' }}, multi=True) for user_addon in records: user = user_addon.owner old_account = user_addon.oauth_settings logger.info('Record found for user {}'.format(user._id)) # Create/load external account and append to user try: account = ExternalAccount( provider='googledrive', provider_name='Google Drive', display_name=old_account.username, oauth_key=old_account.access_token, refresh_token=old_account.refresh_token, provider_id=old_account.user_id, expires_at=old_account.expires_at, ) account.save() except KeyExistsException: # ... or get the old one account = ExternalAccount.find_one( Q('provider', 'eq', 'googledrive') & Q('provider_id', 'eq', old_account.user_id)) assert account is not None user.external_accounts.append(account) user.save() # Remove oauth_settings from user settings object user_addon.oauth_settings = None user_addon.save() logger.info('Added external account {0} to user {1}'.format( account._id, user._id, )) # Add external account to authorized nodes for node in GoogleDriveNodeSettings.find(): if node.foreign_user_settings is None: continue logger.info('Migrating user_settings for googledrive {}'.format( node._id)) node.user_settings = node.foreign_user_settings node.save()
def do_migration(records): database['googledrivenodesettings'].update({'user_settings': {'$type': 2}}, {'$rename': { 'user_settings': 'foreign_user_settings'}}, multi=True) for user_addon in records: user = user_addon.owner old_account = user_addon.oauth_settings logger.info('Record found for user {}'.format(user._id)) # Create/load external account and append to user try: account = ExternalAccount( provider='googledrive', provider_name='Google Drive', display_name=old_account.username, oauth_key=old_account.access_token, refresh_token=old_account.refresh_token, provider_id=old_account.user_id, expires_at=old_account.expires_at, ) account.save() except KeyExistsException: # ... or get the old one account = ExternalAccount.find_one( Q('provider', 'eq', 'googledrive') & Q('provider_id', 'eq', old_account.user_id) ) assert account is not None user.external_accounts.append(account) user.save() # Remove oauth_settings from user settings object user_addon.oauth_settings = None user_addon.save() logger.info('Added external account {0} to user {1}'.format( account._id, user._id, )) # Add external account to authorized nodes for node in GoogleDriveNodeSettings.find(): if node.foreign_user_settings is None: continue logger.info('Migrating user_settings for googledrive {}'.format(node._id)) node.user_settings = node.foreign_user_settings node.save()