コード例 #1
0
    def get_queryset(self):
        query_params = self.request.query_params

        addons = self.get_node().get_addons()
        user = self.request.user
        cookie = None if self.request.user.is_anonymous(
        ) else user.get_or_create_cookie()
        node_id = self.get_node()._id
        obj_args = self.request.parser_context['args']

        provider = query_params.get('provider')
        path = query_params.get('path', '/')
        files = []

        if provider is None:
            valid_self_link_methods = self.get_valid_self_link_methods(True)
            for addon in addons:
                if addon.config.has_hgrid_files:
                    files.append({
                        'valid_self_link_methods':
                        valid_self_link_methods['folder'],
                        'provider':
                        addon.config.short_name,
                        'name':
                        addon.config.short_name,
                        'path':
                        path,
                        'node_id':
                        node_id,
                        'cookie':
                        cookie,
                        'args':
                        obj_args,
                        'waterbutler_type':
                        'file',
                        'item_type':
                        'folder',
                        'metadata': {},
                    })
        else:
            url = waterbutler_url_for('data', provider, path,
                                      self.kwargs['node_id'], cookie, obj_args)
            waterbutler_request = requests.get(url)
            if waterbutler_request.status_code == 401:
                raise PermissionDenied
            try:
                waterbutler_data = waterbutler_request.json()['data']
            except KeyError:
                raise ValidationError(
                    detail='detail: Could not retrieve files information.')

            if isinstance(waterbutler_data, list):
                for item in waterbutler_data:
                    file = self.get_file_item(item, cookie, obj_args)
                    files.append(file)
            else:
                files.append(
                    self.get_file_item(waterbutler_data, cookie, obj_args))

        return files
コード例 #2
0
ファイル: views.py プロジェクト: billyhunt/osf.io
    def get_queryset(self):
        query_params = self.request.query_params

        addons = self.get_node().get_addons()
        user = self.request.user
        cookie = None if self.request.user.is_anonymous() else user.get_or_create_cookie()
        node_id = self.get_node()._id
        obj_args = self.request.parser_context['args']

        provider = query_params.get('provider')
        path = query_params.get('path', '/')
        files = []

        if provider is None:
            valid_self_link_methods = self.get_valid_self_link_methods(True)
            for addon in addons:
                if addon.config.has_hgrid_files:
                    files.append({
                        'valid_self_link_methods': valid_self_link_methods['folder'],
                        'provider': addon.config.short_name,
                        'name': addon.config.short_name,
                        'path': path,
                        'node_id': node_id,
                        'cookie': cookie,
                        'args': obj_args,
                        'waterbutler_type': 'file',
                        'item_type': 'folder',
                        'metadata': {},
                    })
        else:
            url = waterbutler_url_for('data', provider, path, self.kwargs['node_id'], cookie, obj_args)
            waterbutler_request = requests.get(url)
            if waterbutler_request.status_code == 401:
                raise PermissionDenied
            try:
                waterbutler_data = waterbutler_request.json()['data']
            except KeyError:
                raise ValidationError(detail='detail: Could not retrieve files information.')

            if isinstance(waterbutler_data, list):
                for item in waterbutler_data:
                    file = self.get_file_item(item, cookie, obj_args)
                    files.append(file)
            else:
                files.append(self.get_file_item(waterbutler_data, cookie, obj_args))

        return files
コード例 #3
0
ファイル: serializers.py プロジェクト: cldershem/osf.io
 def resolve_url(self, obj):
     """Reverse URL lookup for WaterButler routes
     """
     return waterbutler_url_for(obj['waterbutler_type'], obj['provider'], obj['path'], obj['node_id'], obj['cookie'], obj['args'])
コード例 #4
0
ファイル: serializers.py プロジェクト: njantrania/osf.io
 def resolve_url(self, obj):
     """Reverse URL lookup for WaterButler routes
     """
     return waterbutler_url_for(
         obj["waterbutler_type"], obj["provider"], obj["path"], obj["node_id"], obj["cookie"], obj["args"]
     )
コード例 #5
0
 def resolve_url(self, obj):
     """Reverse URL lookup for WaterButler routes
     """
     return waterbutler_url_for(obj['waterbutler_type'], obj['provider'],
                                obj['path'], obj['node_id'], obj['cookie'],
                                obj['args'])