예제 #1
0
def _virtualChildItems(self, event):
    params = event.info['params']

    if not params.get('folderId'):
        return  # This is not a child listing request

    user = self.getCurrentUser()
    folder = Folder().load(params['folderId'], user=user, level=AccessType.READ)

    if not folder or not folder.get('isVirtual') or 'virtualItemsQuery' not in folder:
        return  # Parent is not a virtual folder, proceed as normal

    limit, offset, sort = self.getPagingParameters(params, defaultSortField='name')
    q = json_util.loads(folder['virtualItemsQuery'])
    # Add other parameter options with $and to ensure they don't clobber the
    # virtual items query.
    if params.get('text'):
        q = {'$and': [q, {'$text': {'$search': params['text']}}]}
    if params.get('name'):
        q = {'$and': [q, {'name': params['name']}]}

    if 'virtualItemsSort' in folder:
        sort = json.loads(folder['virtualItemsSort'])

    item = Item()
    # These items may reside in folders that the user cannot read, so we must
    # find with permissions
    items = item.findWithPermissions(
        q, sort=sort, user=user, level=AccessType.READ, limit=limit, offset=offset)
    # We have to add this here, as we can't use filtermodel since we return the
    # results in addResponse.
    if callable(getattr(items, 'count', None)):
        cherrypy.response.headers['Girder-Total-Count'] = items.count()
    items = [item.filter(i, user) for i in items]
    event.preventDefault().addResponse(items)
예제 #2
0
    def getCLIs(self):
        itemModel = Item()
        q = {'meta.slicerCLIType': 'task', 'folderId': self.tagFolder['_id']}
        if self.user:
            items = itemModel.findWithPermissions(q,
                                                  user=self.user,
                                                  level=AccessType.READ)
        else:
            items = itemModel.find(q)

        return [CLIItem(item) for item in items]
예제 #3
0
    def _findAllItemImpl(user=None, extraQuery=None):
        itemModel = Item()
        q = {'meta.slicerCLIType': 'task'}

        if extraQuery:
            q.update(extraQuery)

        if user:
            items = itemModel.findWithPermissions(q,
                                                  user=user,
                                                  level=AccessType.READ)
        else:
            items = itemModel.find(q)

        return [CLIItem(item) for item in items]
예제 #4
0
def _virtualFolderDetails(self, event):
    folderId = event.info['id']
    user = self.getCurrentUser()
    folder = Folder().load(folderId, user=user, level=AccessType.READ)

    if not folder or not folder.get('isVirtual') or 'virtualItemsQuery' not in folder:
        return  # Parent is not a virtual folder, proceed as normal

    q = json_util.loads(folder['virtualItemsQuery'])
    item = Item()
    # Virtual folders can't contain subfolders
    result = {
        'nFolders': 0,
        'nItems': item.findWithPermissions(q, user=user, level=AccessType.READ).count()
    }
    event.preventDefault().addResponse(result)