Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion addons.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
"twofactor",
"wiki",
"googledrive",
"bitbucket"
"bitbucket",
"azureblobstorage"
],
"addons_default": [
"osfstorage"
Expand Down
Empty file.
36 changes: 36 additions & 0 deletions addons/azureblobstorage/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from addons.base.apps import BaseAddonAppConfig


class AzureBlobStorageAddonAppConfig(BaseAddonAppConfig):

default = True
name = 'addons.azureblobstorage'
label = 'addons_azureblobstorage'
full_name = 'Azure Blob Storage'
short_name = 'azureblobstorage'
owners = ['user', 'node']
configs = ['accounts', 'node']
categories = ['storage']
has_hgrid_files = True

# Define actions for NodeLog
FOLDER_SELECTED = 'azureblobstorage_folder_selected'
NODE_AUTHORIZED = 'azureblobstorage_node_authorized'
NODE_DEAUTHORIZED = 'azureblobstorage_node_deauthorized'

actions = (FOLDER_SELECTED, NODE_AUTHORIZED, NODE_DEAUTHORIZED, )

@property
def routes(self):
# No Flask routes needed for gravyvalet-managed addon
return []

@property
def user_settings(self):
# No UserSettings for gravyvalet-managed addon
return None

@property
def node_settings(self):
# No NodeSettings for gravyvalet-managed addon
return None
33 changes: 33 additions & 0 deletions addons/azureblobstorage/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-

from osf.models.files import File, Folder, BaseFileNode
from osf.models.external import ExternalProvider

class AzureBlobStorageFileNode(BaseFileNode):
_provider = 'azureblobstorage'


class AzureBlobStorageFolder(AzureBlobStorageFileNode, Folder):
pass


class AzureBlobStorageFile(AzureBlobStorageFileNode, File):
version_identifier = 'version'


class AzureBlobStorageProvider(ExternalProvider):
"""An alternative to `ExternalProvider` not tied to OAuth"""

name = 'Azure Blob Storage'
short_name = 'azureblobstorage'

def __init__(self, account=None):
super(AzureBlobStorageProvider, self).__init__()

self.account = account

def __repr__(self):
return '<{name}: {status}>'.format(
name=self.__class__.__name__,
status=self.account.display_name if self.account else 'anonymous'
)
1 change: 1 addition & 0 deletions api/base/settings/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@

# Addons
'addons.osfstorage',
'addons.azureblobstorage',
'addons.bitbucket',
'addons.boa',
'addons.box',
Expand Down
Loading