def _folder_data(self, folder_id):
        # Split out from set_folder for ease of testing, due to
        # outgoing requests. Should only be called by set_folder
        try:
            Provider(self.external_account).refresh_oauth_key(force=True)
        except InvalidGrantError:
            raise exceptions.InvalidAuthError()
        try:
            oauth = OAuth2(client_id=settings.BOX_KEY,
                           client_secret=settings.BOX_SECRET,
                           access_token=ensure_str(
                               self.external_account.oauth_key))
            client = Client(oauth)
            folder_data = client.folder(self.folder_id).get()
        except BoxAPIException:
            raise exceptions.InvalidFolderError()

        folder_name = folder_data['name'].replace('All Files',
                                                  '') or '/ (Full Box)'
        folder_path = '/'.join([
            x['name']
            for x in folder_data['path_collection']['entries'] if x['name']
        ] + [folder_data['name']]).replace('All Files', '') or '/'

        return folder_name, folder_path
示例#2
0
    def set_folder(self, folder_id, auth):
        if not bucket_exists(self.external_account.oauth_key,
                             self.external_account.oauth_secret, folder_id):
            error_message = (
                'We are having trouble connecting to that bucket. '
                'Try a different one.')
            raise exceptions.InvalidFolderError(error_message)

        self.folder_id = str(folder_id)

        bucket_location = get_bucket_location_or_error(
            self.external_account.oauth_key,
            self.external_account.oauth_secret, folder_id)
        try:
            bucket_location = BUCKET_LOCATIONS[bucket_location]
        except KeyError:
            # Unlisted location, S3 may have added it recently.
            # Default to the key. When hit, add mapping to settings
            pass

        self.folder_name = '{} ({})'.format(folder_id, bucket_location)
        self.save()

        self.nodelogger.log(action='bucket_linked',
                            extra={'bucket': str(folder_id)},
                            save=True)
示例#3
0
    def set_folder(self, folder_id, auth):
        try:
            info = FigshareClient(self.external_account.oauth_key).get_linked_folder_info(folder_id)
        except HTTPError as e:
            raise exceptions.InvalidFolderError(e.message)

        self.folder_id = info['id']
        self.folder_name = info['name']
        self.folder_path = info['path']
        self.save()

        self.nodelogger.log(action='folder_selected', save=True)
示例#4
0
    def set_folder(self, folder_id, auth):
        if not bucket_exists(self.external_account.provider_id.split('\t')[0],
                             self.external_account.oauth_key,
                             self.external_account.oauth_secret, folder_id):
            error_message = ('We are having trouble connecting to that bucket. '
                             'Try a different one.')
            raise exceptions.InvalidFolderError(error_message)

        self.folder_id = str(folder_id)
        self.folder_name = str(folder_id)
        self.save()

        self.nodelogger.log(action='bucket_linked', extra={'bucket': str(folder_id)}, save=True)
示例#5
0
    def set_folder(self, folder_id, auth):
        provider = SwiftProvider(self.external_account)
        if not container_exists(provider.auth_version, provider.auth_url,
                                provider.username, provider.user_domain_name,
                                provider.password, provider.tenant_name,
                                provider.project_domain_name, folder_id):
            error_message = (
                'We are having trouble connecting to that container. '
                'Try a different one.')
            raise exceptions.InvalidFolderError(error_message)

        self.folder_id = str(folder_id)
        self.folder_name = str(folder_id)
        self.save()

        self.nodelogger.log(action='bucket_linked',
                            extra={'bucket': str(folder_id)},
                            save=True)
示例#6
0
    def _folder_data(self, folder_id):
        # Split out from set_folder for ease of testing, due to
        # outgoing requests. Should only be called by set_folder
        try:
            Provider(self.external_account).refresh_oauth_key(force=True)
        except InvalidGrantError:
            raise exceptions.InvalidAuthError()
        try:
            client = BoxClient(self.external_account.oauth_key)
            folder_data = client.get_folder(self.folder_id)
        except BoxClientException:
            raise exceptions.InvalidFolderError()

        folder_name = folder_data['name'].replace('All Files', '') or '/ (Full Box)'
        folder_path = '/'.join(
            [x['name'] for x in folder_data['path_collection']['entries'] if x['name']] +
            [folder_data['name']]
        ).replace('All Files', '') or '/'

        return folder_name, folder_path