def make_report(app, err): """ Formats a bug report. """ from ajenti.plugmgr import PluginLoader pr = '' for p in sorted(PluginLoader.list_plugins().keys()): pr += p + '\n' # Finalize the reported log app.log.blackbox.stop() return ( ('Ajenti %s bug report\n' + '--------------------\n\n' + 'System: %s\n' + 'Detected platform: %s\n' + 'Detected distro: %s\n' + 'Python: %s\n\n' + 'Config path: %s\n\n' + '%s\n\n' 'Loaded plugins:\n%s\n\n' + 'Log:\n%s\n') % ( version(), shell('uname -a'), detect_platform(), detect_distro(), '.'.join([str(x) for x in platform.python_version_tuple()]), app.config.filename, err, pr, app.log.blackbox.buffer, ))
def make_report(app, err): """ Formats a bug report. """ from ajenti.plugmgr import PluginLoader pr = '' for p in sorted(PluginLoader.list_plugins().keys()): pr += p + '\n' # Finalize the reported log app.log.blackbox.stop() return (('Ajenti %s bug report\n' + '--------------------\n\n' + 'System: %s\n' + 'Detected platform: %s\n' + 'Detected distro: %s\n' + 'Python: %s\n\n' + 'Config path: %s\n\n' + '%s\n\n' 'Loaded plugins:\n%s\n\n' + 'Log:\n%s\n' ) % (version(), shell('uname -a'), detect_platform(), detect_distro(), '.'.join([str(x) for x in platform.python_version_tuple()]), app.config.filename, err, pr, app.log.blackbox.buffer, ))
def refresh_plugin_data(self): """ Rescans plugins for JS, CSS, LESS, XSLT widgets and XML templates. """ self.template_path = [] self.less_styles = [] self.template_styles = [] self.template_scripts = [] self.layouts = {} includes = [] functions = {} for f in self.grab_plugins(IXSLTFunctionProvider): functions.update(f.get_funcs()) # Get path for static content and templates plugins = [] plugins.extend(PluginLoader.list_plugins().keys()) plugins.extend(ajenti.plugins.plist) for c in plugins: path = os.path.join(PluginLoader.get_plugin_path(self, c), c) fp = os.path.join(path, 'files') if os.path.exists(fp): self.template_styles.extend([ '/dl/' + c + '/' + s for s in os.listdir(fp) if s.endswith('.css') ]) self.less_styles.extend([ '/dl/' + c + '/' + s for s in os.listdir(fp) if s.endswith('.less') ]) self.template_scripts.extend([ '/dl/' + c + '/' + s for s in os.listdir(fp) if s.endswith('.js') ]) wp = os.path.join(path, 'widgets') if os.path.exists(wp): includes.extend([ os.path.join(wp, s) for s in os.listdir(wp) if s.endswith('.xslt') ]) lp = os.path.join(path, 'layout') if os.path.exists(lp): for s in os.listdir(lp): if s.endswith('.xml'): self.layouts['%s:%s' % (c, s)] = os.path.join(lp, s) tp = os.path.join(path, 'templates') if os.path.exists(tp): self.template_path.append(tp) if xslt.xslt is None: xslt.prepare(includes, functions)
def refresh_plugin_data(self): """ Rescans plugins for JS, CSS, LESS, XSLT widgets and XML templates. """ self.template_path = [] self.less_styles = [] self.template_styles = [] self.template_scripts = [] self.layouts = {} includes = [] functions = {} for f in self.grab_plugins(IXSLTFunctionProvider): functions.update(f.get_funcs()) # Get path for static content and templates plugins = [] plugins.extend(PluginLoader.list_plugins().keys()) plugins.extend(ajenti.plugins.plist) for c in plugins: path = os.path.join(PluginLoader.get_plugin_path(self, c), c) fp = os.path.join(path, 'files') if os.path.exists(fp): self.template_styles.extend([ '/dl/'+c+'/'+s for s in os.listdir(fp) if s.endswith('.css') ]) self.less_styles.extend([ '/dl/'+c+'/'+s for s in os.listdir(fp) if s.endswith('.less') ]) self.template_scripts.extend([ '/dl/'+c+'/'+s for s in os.listdir(fp) if s.endswith('.js') ]) wp = os.path.join(path, 'widgets') if os.path.exists(wp): includes.extend([ os.path.join(wp, s) for s in os.listdir(wp) if s.endswith('.xslt') ]) lp = os.path.join(path, 'layout') if os.path.exists(lp): for s in os.listdir(lp): if s.endswith('.xml'): self.layouts['%s:%s'%(c,s)] = os.path.join(lp, s) tp = os.path.join(path, 'templates') if os.path.exists(tp): self.template_path.append(tp) if xslt.xslt is None: xslt.prepare( includes, functions )