must_be_contributor_or_public) from website.util import rubeus, api_url_for from website.util.sanitize import assert_clean SHORT_NAME = 'dataverse' FULL_NAME = 'Dataverse' dataverse_account_list = generic_views.account_list(SHORT_NAME, DataverseSerializer) dataverse_import_auth = generic_views.import_auth(SHORT_NAME, DataverseSerializer) dataverse_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) dataverse_get_config = generic_views.get_config(SHORT_NAME, DataverseSerializer) ## Auth ## @must_be_logged_in def dataverse_user_config_get(auth, **kwargs): """View for getting a JSON representation of the logged-in user's Dataverse user settings. """ user_addon = auth.user.get_addon('dataverse') user_has_auth = False if user_addon: user_has_auth = user_addon.has_auth
############ # Generics # ############ github_account_list = generic_views.account_list( SHORT_NAME, GitHubSerializer ) github_import_auth = generic_views.import_auth( SHORT_NAME, GitHubSerializer ) github_get_config = generic_views.get_config( SHORT_NAME, GitHubSerializer ) github_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) ################# # Special Cased # ################# @must_not_be_registration @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) @must_have_permission('write')
dataverse_account_list = generic_views.account_list( SHORT_NAME, DataverseSerializer ) dataverse_import_auth = generic_views.import_auth( SHORT_NAME, DataverseSerializer ) dataverse_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) dataverse_get_config = generic_views.get_config( SHORT_NAME, DataverseSerializer ) ## Auth ## @must_be_logged_in def dataverse_user_config_get(auth, **kwargs): """View for getting a JSON representation of the logged-in user's Dataverse user settings. """ user_addon = auth.user.get_addon('dataverse') user_has_auth = False if user_addon: user_has_auth = user_addon.has_auth
bitbucket_account_list = generic_views.account_list(SHORT_NAME, BitbucketSerializer) bitbucket_import_auth = generic_views.import_auth(SHORT_NAME, BitbucketSerializer) def _get_folders(node_addon, folder_id): pass bitbucket_folder_list = generic_views.folder_list(SHORT_NAME, FULL_NAME, _get_folders) bitbucket_get_config = generic_views.get_config(SHORT_NAME, BitbucketSerializer) bitbucket_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) ################# # Special Cased # ################# @must_not_be_registration @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) @must_have_permission('write') def bitbucket_set_config(auth, **kwargs): node_settings = kwargs.get('node_addon', None)
must_have_permission, must_be_addon_authorizer, ) SHORT_NAME = 'azureblobstorage' FULL_NAME = 'Azure Blob Storage' azureblobstorage_account_list = generic_views.account_list( SHORT_NAME, AzureBlobStorageSerializer) azureblobstorage_import_auth = generic_views.import_auth( SHORT_NAME, AzureBlobStorageSerializer) azureblobstorage_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) azureblobstorage_get_config = generic_views.get_config( SHORT_NAME, AzureBlobStorageSerializer) def _set_folder(node_addon, folder, auth): folder_id = folder['id'] node_addon.set_folder(folder_id, auth=auth) node_addon.save() azureblobstorage_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, AzureBlobStorageSerializer, _set_folder) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) def azureblobstorage_folder_list(node_addon, **kwargs):
from website.project.decorators import ( must_have_addon, must_have_permission, must_be_addon_authorizer, ) SHORT_NAME = 's3' FULL_NAME = 'Amazon S3' s3_account_list = generic_views.account_list(SHORT_NAME, S3Serializer) s3_import_auth = generic_views.import_auth(SHORT_NAME, S3Serializer) s3_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) s3_get_config = generic_views.get_config(SHORT_NAME, S3Serializer) def _set_folder(node_addon, folder, auth): folder_id = folder['id'] node_addon.set_folder(folder_id, auth=auth) node_addon.save() s3_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, S3Serializer, _set_folder) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) def s3_folder_list(node_addon, **kwargs):
from website.project.decorators import must_have_addon, must_be_addon_authorizer from addons.base import generic_views from addons.googledrive.serializer import GoogleDriveSerializer SHORT_NAME = 'googledrive' FULL_NAME = 'Google Drive' googledrive_account_list = generic_views.account_list( SHORT_NAME, GoogleDriveSerializer ) googledrive_get_config = generic_views.get_config( SHORT_NAME, GoogleDriveSerializer ) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder, auth=auth) node_addon.save() googledrive_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, GoogleDriveSerializer, _set_folder ) googledrive_import_auth = generic_views.import_auth( SHORT_NAME,
# Generics # ############ gitlab_account_list = generic_views.account_list(SHORT_NAME, GitLabSerializer) gitlab_import_auth = generic_views.import_auth(SHORT_NAME, GitLabSerializer) def _get_folders(node_addon, folder_id): pass gitlab_folder_list = generic_views.folder_list(SHORT_NAME, FULL_NAME, _get_folders) gitlab_get_config = generic_views.get_config(SHORT_NAME, GitLabSerializer) gitlab_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) @must_be_logged_in def gitlab_user_config_get(auth, **kwargs): """View for getting a JSON representation of the logged-in user's GitLab user settings. """ user_addon = auth.user.get_addon('gitlab') user_has_auth = False if user_addon: user_has_auth = user_addon.has_auth
id=provider.account.id).exists(): user.external_accounts.add(provider.account) user.save() oauth_complete.send(provider, account=provider.account, user=user) return {} weko_account_list = generic_views.account_list(SHORT_NAME, WEKOSerializer) weko_import_auth = generic_views.import_auth(SHORT_NAME, WEKOSerializer) weko_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) weko_get_config = generic_views.get_config(SHORT_NAME, WEKOSerializer) ## Auth ## @must_be_logged_in def weko_user_config_get(auth, **kwargs): """View for getting a JSON representation of the logged-in user's WEKO user settings. """ user_addon = auth.user.get_addon('weko') user_has_auth = False if user_addon: user_has_auth = user_addon.has_auth
) from addons.base import generic_views from addons.onedrive.serializer import OneDriveSerializer SHORT_NAME = 'onedrive' FULL_NAME = 'OneDrive' onedrive_account_list = generic_views.account_list( SHORT_NAME, OneDriveSerializer ) onedrive_get_config = generic_views.get_config( SHORT_NAME, OneDriveSerializer ) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder, auth=auth) node_addon.save() onedrive_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, OneDriveSerializer, _set_folder ) onedrive_import_auth = generic_views.import_auth( SHORT_NAME,
user.get_or_add_addon('owncloud', auth=auth) user.save() return {} @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') def owncloud_folder_list(node_addon, user_addon, **kwargs): """ Returns all the subsequent folders under the folder id passed. Not easily generalizable due to `path` kwarg. """ path = request.args.get('path') return node_addon.get_folders(path=path) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder['path'], auth=auth) node_addon.save() owncloud_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, OwnCloudSerializer, _set_folder ) owncloud_get_config = generic_views.get_config( SHORT_NAME, OwnCloudSerializer )
if not user.external_accounts.filter(id=provider.account.id).exists(): user.external_accounts.add(provider.account) user.get_or_add_addon('nextcloud', auth=auth) user.save() return {} @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') def nextcloud_folder_list(node_addon, user_addon, **kwargs): """ Returns all the subsequent folders under the folder id passed. Not easily generalizable due to `path` kwarg. """ path = request.args.get('path') return node_addon.get_folders(path=path) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder['path'], auth=auth) node_addon.save() nextcloud_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, NextcloudSerializer, _set_folder) nextcloud_get_config = generic_views.get_config(SHORT_NAME, NextcloudSerializer)
must_have_permission, must_be_addon_authorizer, ) SHORT_NAME = 's3compat' FULL_NAME = 'S3 Compatible Storage' s3compat_account_list = generic_views.account_list(SHORT_NAME, S3CompatSerializer) s3compat_import_auth = generic_views.import_auth(SHORT_NAME, S3CompatSerializer) s3compat_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) s3compat_get_config = generic_views.get_config(SHORT_NAME, S3CompatSerializer) def _set_folder(node_addon, folder, auth): folder_id = folder['id'] node_addon.set_folder(folder_id, auth=auth) node_addon.save() s3compat_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, S3CompatSerializer, _set_folder) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) def s3compat_folder_list(node_addon, **kwargs):
dropbox_import_auth = generic_views.import_auth( SHORT_NAME, DropboxSerializer ) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) def dropbox_folder_list(node_addon, **kwargs): """ Returns all the subsequent folders under the folder id passed. """ folder_id = request.args.get('folder_id') return node_addon.get_folders(folder_id=folder_id) dropbox_get_config = generic_views.get_config( SHORT_NAME, DropboxSerializer ) def _set_folder(node_addon, folder, auth): uid = folder['id'] node_addon.set_folder(uid, auth=auth) node_addon.save() dropbox_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, DropboxSerializer, _set_folder ) dropbox_deauthorize_node = generic_views.deauthorize_node(
FULL_NAME = 'Box' box_account_list = generic_views.account_list(SHORT_NAME, BoxSerializer) box_import_auth = generic_views.import_auth(SHORT_NAME, BoxSerializer) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) def box_folder_list(node_addon, **kwargs): """ Returns all the subsequent folders under the folder id passed. """ folder_id = request.args.get('folder_id') return node_addon.get_folders(folder_id=folder_id) box_get_config = generic_views.get_config(SHORT_NAME, BoxSerializer) def _set_folder(node_addon, folder, auth): uid = folder['id'] node_addon.set_folder(uid, auth=auth) node_addon.save() box_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, BoxSerializer, _set_folder) box_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME)
logging.getLogger('github3').setLevel(logging.WARNING) logging.getLogger('requests.packages.urllib3.connectionpool').setLevel( logging.WARNING) SHORT_NAME = 'github' FULL_NAME = 'GitHub' ############ # Generics # ############ github_account_list = generic_views.account_list(SHORT_NAME, GitHubSerializer) github_import_auth = generic_views.import_auth(SHORT_NAME, GitHubSerializer) github_get_config = generic_views.get_config(SHORT_NAME, GitHubSerializer) github_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) ################# # Special Cased # ################# @must_not_be_registration @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME) @must_have_permission(WRITE) def github_set_config(auth, **kwargs): node_settings = kwargs.get('node_addon', None)
gitlab_import_auth = generic_views.import_auth( SHORT_NAME, GitLabSerializer ) def _get_folders(node_addon, folder_id): pass gitlab_folder_list = generic_views.folder_list( SHORT_NAME, FULL_NAME, _get_folders ) gitlab_get_config = generic_views.get_config( SHORT_NAME, GitLabSerializer ) gitlab_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) @must_be_logged_in def gitlab_user_config_get(auth, **kwargs): """View for getting a JSON representation of the logged-in user's GitLab user settings. """ user_addon = auth.user.get_addon('gitlab') user_has_auth = False if user_addon:
s3_account_list = generic_views.account_list( SHORT_NAME, S3Serializer ) s3_import_auth = generic_views.import_auth( SHORT_NAME, S3Serializer ) s3_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) s3_get_config = generic_views.get_config( SHORT_NAME, S3Serializer ) def _set_folder(node_addon, folder, auth): folder_id = folder['id'] node_addon.set_folder(folder_id, auth=auth) node_addon.save() s3_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, S3Serializer, _set_folder ) @must_have_addon(SHORT_NAME, 'node')
user = auth.user if not user.external_accounts.filter(id=provider.account.id).exists(): user.external_accounts.add(provider.account) user.get_or_add_addon('owncloud', auth=auth) user.save() return {} @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') def owncloud_folder_list(node_addon, user_addon, **kwargs): """ Returns all the subsequent folders under the folder id passed. Not easily generalizable due to `path` kwarg. """ path = request.args.get('path') return node_addon.get_folders(path=path) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder['path'], auth=auth) node_addon.save() owncloud_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, OwnCloudSerializer, _set_folder) owncloud_get_config = generic_views.get_config(SHORT_NAME, OwnCloudSerializer)
from website.project.decorators import must_have_addon, must_be_addon_authorizer from addons.base import generic_views from addons.googledrive.serializer import GoogleDriveSerializer SHORT_NAME = 'googledrive' FULL_NAME = 'Google Drive' googledrive_account_list = generic_views.account_list( SHORT_NAME, GoogleDriveSerializer ) googledrive_get_config = generic_views.get_config( SHORT_NAME, GoogleDriveSerializer ) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder, auth=auth) node_addon.save() googledrive_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, GoogleDriveSerializer, _set_folder ) googledrive_import_auth = generic_views.import_auth( SHORT_NAME,
bitbucket_import_auth = generic_views.import_auth( SHORT_NAME, BitbucketSerializer ) def _get_folders(node_addon, folder_id): pass bitbucket_folder_list = generic_views.folder_list( SHORT_NAME, FULL_NAME, _get_folders ) bitbucket_get_config = generic_views.get_config( SHORT_NAME, BitbucketSerializer ) bitbucket_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) ################# # Special Cased # ################# @must_not_be_registration @must_have_addon(SHORT_NAME, 'user') @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME)
) from website.util import rubeus SHORT_NAME = 'figshare' FULL_NAME = SHORT_NAME figshare_account_list = generic_views.account_list(SHORT_NAME, FigshareSerializer) figshare_import_auth = generic_views.import_auth(SHORT_NAME, FigshareSerializer) figshare_deauthorize_node = generic_views.deauthorize_node(SHORT_NAME) figshare_get_config = generic_views.get_config(SHORT_NAME, FigshareSerializer) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder['id'], auth=auth) node_addon.save() figshare_set_config = generic_views.set_config(SHORT_NAME, FULL_NAME, FigshareSerializer, _set_folder) def figshare_root_folder(node_settings, auth, **kwargs): """Return the Rubeus/HGrid-formatted response for the root folder only. Identical to the generic_views.root_folder except adds root_folder_type
swift_account_list = generic_views.account_list( SHORT_NAME, SwiftSerializer ) swift_import_auth = generic_views.import_auth( SHORT_NAME, SwiftSerializer ) swift_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) swift_get_config = generic_views.get_config( SHORT_NAME, SwiftSerializer ) def _set_folder(node_addon, folder, auth): folder_id = folder['id'] node_addon.set_folder(folder_id, auth=auth) node_addon.save() swift_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, SwiftSerializer, _set_folder ) @must_have_addon(SHORT_NAME, 'node')
figshare_account_list = generic_views.account_list( SHORT_NAME, FigshareSerializer ) figshare_import_auth = generic_views.import_auth( SHORT_NAME, FigshareSerializer ) figshare_deauthorize_node = generic_views.deauthorize_node( SHORT_NAME ) figshare_get_config = generic_views.get_config( SHORT_NAME, FigshareSerializer ) def _set_folder(node_addon, folder, auth): node_addon.set_folder(folder['id'], auth=auth) node_addon.save() figshare_set_config = generic_views.set_config( SHORT_NAME, FULL_NAME, FigshareSerializer, _set_folder ) @must_have_addon(SHORT_NAME, 'node') @must_be_addon_authorizer(SHORT_NAME)