def load(self, info): getPlugin('jobs').load(info) name = 'thumbnails' info['apiRoot'].thumbnail = rest.Thumbnail() for model in (Item(), Collection(), Folder(), User()): model.exposeFields(level=AccessType.READ, fields='_thumbnails') events.bind('model.%s.remove' % model.name, name, removeThumbnails) events.bind('model.file.remove', name, removeThumbnailLink) events.bind('data.process', name, _onUpload)
def uploadFile(self, params): """ Providing this works around a limitation in phantom that makes us unable to upload binary files, or at least ones that contain certain byte values. The path parameter should be provided relative to the root directory of the repository. """ self.requireParams(('folderId', 'path'), params) if params['path'].startswith( '${'): # relative to plugin e.g. ${my_plugin}/path end = params['path'].find('}') plugin = params['path'][2:end] plugin = getPlugin(plugin) if plugin is None: raise Exception('Invalid plugin %s.' % plugin) root = os.path.dirname(inspect.getfile(plugin.__class__)) path = root + params['path'][end + 1:] else: # assume relative to core package path = os.path.join(ROOT_DIR, params['path']) name = os.path.basename(path) folder = Folder().load(params['folderId'], force=True) upload = Upload().createUpload(user=self.getCurrentUser(), name=name, parentType='folder', parent=folder, size=os.path.getsize(path)) with open(path, 'rb') as fd: file = Upload().handleChunk(upload, fd) return file
def _pluginNameToResponse(name): p = plugin.getPlugin(name) return { 'name': p.displayName, 'description': p.description, 'url': p.url, 'version': p.version }
def _collectPluginDependencies(): packages = {} for pluginName in allPlugins(): plugin = getPlugin(pluginName) packages.update(plugin.npmPackages()) return packages