def process_request(self, req): data = { 'systeminfo': None, 'plugins': None, 'config': None, 'interface': None } if 'CONFIG_VIEW' in req.perm('config', 'systeminfo'): # Collect system information data['systeminfo'] = self.env.get_systeminfo() Chrome(self.env).add_jquery_ui(req) if 'CONFIG_VIEW' in req.perm('config', 'plugins'): # Collect plugin information data['plugins'] = get_plugin_info(self.env) if 'CONFIG_VIEW' in req.perm('config', 'interface'): data['interface'] = \ Chrome(self.env).get_interface_customization_files() if 'CONFIG_VIEW' in req.perm('config', 'ini'): # Collect config information data['config'] = self.env.get_configinfo() return 'about.html', data, None
def process_request(self, req): data = {'systeminfo': None, 'plugins': None, 'config': None} if 'CONFIG_VIEW' in req.perm('config', 'systeminfo'): # Collect system information data['systeminfo'] = self.env.get_systeminfo() if 'CONFIG_VIEW' in req.perm('config', 'plugins'): # Collect plugin information data['plugins'] = get_plugin_info(self.env) if 'CONFIG_VIEW' in req.perm('config', 'ini'): # Collect config information defaults = self.config.defaults(self.compmgr) sections = [] for section in self.config.sections(self.compmgr): options = [] default_options = defaults.get(section, {}) for name, value in self.config.options(section, self.compmgr): default = default_options.get(name) or '' options.append({ 'name': name, 'value': value, 'modified': unicode(value) != unicode(default) }) options.sort(key=lambda o: o['name']) sections.append({'name': section, 'options': options}) sections.sort(key=lambda s: s['name']) data['config'] = sections return 'about.html', data, None
def _do_export_tools(self): plugins = get_plugin_info(self.env, include_core=True) t = {} for p in plugins: for (m_name, m) in p["modules"].iteritems(): for (c_name, c) in m["components"].iteritems(): t[self.base_url + "/#" + c["full_name"]] = {"name": c["full_name"], "type": "UnknownTool"} return t
def _render_view(self, req): plugins = get_plugin_info(self.env, include_core=True) def safe_wiki_to_html(context, text): try: return format_to_html(self.env, context, text) except Exception, e: self.log.error('Unable to render component documentation: %s', exception_to_unicode(e, traceback=True)) return tag.pre(text)
def _do_export_tools(self): plugins = get_plugin_info(self.env, include_core=True) t = {} for p in plugins: for (m_name, m) in p['modules'].iteritems(): for (c_name, c) in m['components'].iteritems(): t[self.base_url + "/#" + c['full_name']] = { 'name': c['full_name'], 'type': 'UnknownTool' } return t
def _render_view(self, req): plugins = get_plugin_info(self.env, include_core=True) def safe_wiki_to_html(context, text): try: return format_to_html(self.env, context, text) except Exception as e: self.log.error("Unable to render component documentation: %s", exception_to_unicode(e, traceback=True)) return tag.pre(text) data = { 'plugins': plugins, 'show': req.args.get('show'), 'readonly': not os.access(self.env.plugins_dir, os.F_OK + os.W_OK), 'safe_wiki_to_html': safe_wiki_to_html, } return 'admin_plugins.html', data
def _render_view(self, req): plugins = get_plugin_info(self.env, include_core=True) def safe_wiki_to_html(context, text): try: return format_to_html(self.env, context, text) except Exception as e: self.log.error("Unable to render component documentation: %s", exception_to_unicode(e, traceback=True)) return tag.pre(text) data = { 'plugins': plugins, 'show': req.args.get('show'), 'readonly': not os.access(get_plugins_dir(self.env), os.F_OK + os.W_OK), 'safe_wiki_to_html': safe_wiki_to_html, } return 'admin_plugins.html', data
def get_system_info(self): trac_ver = 'xmail' try: # get trac-version info = self.env.get_systeminfo() val = info[0][1] if type(val) != list: trac_ver = "Trac %s" % (val) # get xmail-version plugins = get_plugin_info(self.env) xmail_ver = 'XMail' for plugin in plugins: if plugin['name'] == "xmailplugin": xmail_ver = "%s %s" % (xmail_ver, plugin['version']) trac_ver = "%s (%s)" % (xmail_ver, trac_ver) except Exception, e: print "error when getting trac_ver: %s" % e
def process_request(self, req): data = {'systeminfo': None, 'plugins': None, 'config': None, 'interface': None} if 'CONFIG_VIEW' in req.perm('config', 'systeminfo'): # Collect system information data['systeminfo'] = self.env.get_systeminfo() Chrome(self.env).add_jquery_ui(req) if 'CONFIG_VIEW' in req.perm('config', 'plugins'): # Collect plugin information data['plugins'] = get_plugin_info(self.env) if 'CONFIG_VIEW' in req.perm('config', 'interface'): data['interface'] = \ Chrome(self.env).get_interface_customization_files() if 'CONFIG_VIEW' in req.perm('config', 'ini'): # Collect config information data['config'] = get_configinfo(self.env) return 'about.html', data, None
def send_internal_error(env, req, exc_info): if env: env.log.error("Internal Server Error: %r, referrer %r%s", req, req.environ.get('HTTP_REFERER'), exception_to_unicode(exc_info[1], traceback=True)) message = exception_to_unicode(exc_info[1]) traceback = get_last_traceback() frames, plugins, faulty_plugins, interface_custom = [], [], [], [] th = 'http://trac-hacks.org' has_admin = False try: has_admin = 'TRAC_ADMIN' in req.perm except Exception: pass tracker = default_tracker tracker_args = {} if has_admin and not isinstance(exc_info[1], MemoryError): # Collect frame and plugin information frames = get_frame_info(exc_info[2]) if env: plugins = [ p for p in get_plugin_info(env) if any(c['enabled'] for m in p['modules'].itervalues() for c in m['components'].itervalues()) ] match_plugins_to_frames(plugins, frames) # Identify the tracker where the bug should be reported faulty_plugins = [p for p in plugins if 'frame_idx' in p] faulty_plugins.sort(key=lambda p: p['frame_idx']) if faulty_plugins: info = faulty_plugins[0]['info'] if 'trac' in info: tracker = info['trac'] elif info.get('home_page', '').startswith(th): tracker = th plugin_name = info.get('home_page', '').rstrip('/') \ .split('/')[-1] tracker_args = {'component': plugin_name} interface_custom = Chrome(env).get_interface_customization_files() def get_description(_): if env and has_admin: sys_info = "".join("|| '''`%s`''' || `%s` ||\n" % (k, v.replace('\n', '` [[br]] `')) for k, v in env.get_systeminfo()) sys_info += "|| '''`jQuery`''' || `#JQUERY#` ||\n" \ "|| '''`jQuery UI`''' || `#JQUERYUI#` ||\n" \ "|| '''`jQuery Timepicker`''' || `#JQUERYTP#` ||\n" enabled_plugins = "".join("|| '''`%s`''' || `%s` ||\n" % (p['name'], p['version'] or _('N/A')) for p in plugins) files = Chrome(env).get_interface_customization_files().items() interface_files = "".join("|| **%s** || %s ||\n" % (k, ", ".join("`%s`" % f for f in v)) for k, v in sorted(files)) else: sys_info = _("''System information not available''\n") enabled_plugins = _("''Plugin information not available''\n") interface_files = _("''Interface customization information not " "available''\n") return _("""\ ==== How to Reproduce ==== While doing a %(method)s operation on `%(path_info)s`, Trac issued an internal error. ''(please provide additional details here)'' Request parameters: {{{ %(req_args)s }}} User agent: `#USER_AGENT#` ==== System Information ==== %(sys_info)s ==== Enabled Plugins ==== %(enabled_plugins)s ==== Interface Customization ==== %(interface_customization)s ==== Python Traceback ==== {{{ %(traceback)s}}}""", method=req.method, path_info=req.path_info, req_args=pformat(req.args), sys_info=sys_info, enabled_plugins=enabled_plugins, interface_customization=interface_files, traceback=to_unicode(traceback)) # Generate the description once in English, once in the current locale description_en = get_description(lambda s, **kw: safefmt(s, kw)) try: description = get_description(_) except Exception: description = description_en data = { 'title': 'Internal Error', 'type': 'internal', 'message': message, 'traceback': traceback, 'frames': frames, 'shorten_line': shorten_line, 'repr': safe_repr, 'plugins': plugins, 'faulty_plugins': faulty_plugins, 'interface': interface_custom, 'tracker': tracker, 'tracker_args': tracker_args, 'description': description, 'description_en': description_en } Chrome(env).add_jquery_ui(req) try: req.send_error(exc_info, status=500, env=env, data=data) except RequestDone: pass
def send_internal_error(env, req, exc_info): if env: env.log.error("Internal Server Error: %s", exception_to_unicode(exc_info[1], traceback=True)) message = exception_to_unicode(exc_info[1]) traceback = get_last_traceback() frames, plugins, faulty_plugins = [], [], [] th = 'http://trac-hacks.org' has_admin = False try: has_admin = 'TRAC_ADMIN' in req.perm except Exception: pass tracker = default_tracker tracker_args = {} if has_admin and not isinstance(exc_info[1], MemoryError): # Collect frame and plugin information frames = get_frame_info(exc_info[2]) if env: plugins = [p for p in get_plugin_info(env) if any(c['enabled'] for m in p['modules'].itervalues() for c in m['components'].itervalues())] match_plugins_to_frames(plugins, frames) # Identify the tracker where the bug should be reported faulty_plugins = [p for p in plugins if 'frame_idx' in p] faulty_plugins.sort(key=lambda p: p['frame_idx']) if faulty_plugins: info = faulty_plugins[0]['info'] if 'trac' in info: tracker = info['trac'] elif info.get('home_page', '').startswith(th): tracker = th plugin_name = info.get('home_page', '').rstrip('/') \ .split('/')[-1] tracker_args = {'component': plugin_name} def get_description(_): if env and has_admin: sys_info = "".join("|| '''`%s`''' || `%s` ||\n" % (k, v.replace('\n', '` [[br]] `')) for k, v in env.get_systeminfo()) sys_info += "|| '''`jQuery`''' || `#JQUERY#` ||\n" \ "|| '''`jQuery UI`''' || `#JQUERYUI#` ||\n" \ "|| '''`jQuery Timepicker`''' || `#JQUERYTP#` ||\n" enabled_plugins = "".join("|| '''`%s`''' || `%s` ||\n" % (p['name'], p['version'] or _('N/A')) for p in plugins) else: sys_info = _("''System information not available''\n") enabled_plugins = _("''Plugin information not available''\n") return _("""\ ==== How to Reproduce ==== While doing a %(method)s operation on `%(path_info)s`, Trac issued an internal error. ''(please provide additional details here)'' Request parameters: {{{ %(req_args)s }}} User agent: `#USER_AGENT#` ==== System Information ==== %(sys_info)s ==== Enabled Plugins ==== %(enabled_plugins)s ==== Python Traceback ==== {{{ %(traceback)s}}}""", method=req.method, path_info=req.path_info, req_args=pformat(req.args), sys_info=sys_info, enabled_plugins=enabled_plugins, traceback=to_unicode(traceback)) # Generate the description once in English, once in the current locale description_en = get_description(lambda s, **kw: safefmt(s, kw)) try: description = get_description(_) except Exception: description = description_en data = {'title': 'Internal Error', 'type': 'internal', 'message': message, 'traceback': traceback, 'frames': frames, 'shorten_line': shorten_line, 'repr': safe_repr, 'plugins': plugins, 'faulty_plugins': faulty_plugins, 'tracker': tracker, 'tracker_args': tracker_args, 'description': description, 'description_en': description_en} Chrome(env).add_jquery_ui(req) try: req.send_error(exc_info, status=500, env=env, data=data) except RequestDone: pass