def render_widget(self, name, context, options): """Count ocurrences of values assigned to given ticket field. """ dbsys = DashboardSystem(self.env) params = ('layout', 'schema', 'show_captions', 'title') layout, schema, show_captions, title = \ self.bind_params(name, options, *params) lp = dbsys.resolve_layout(layout) dbmod = DashboardModule(self.env) layout_data = lp.expand_layout(layout, context, { 'schema' : schema, 'embed' : True }) widgets = dbmod.expand_widget_data(context, schema) return layout_data['template'], \ { 'title' : title, 'data' : dict( context=context, layout=schema, widgets=widgets, title='', default={ 'height' : dbmod.default_widget_height or None } ), }, \ context
def render_widget(self, name, context, options): """Count ocurrences of values assigned to given ticket field. """ dbsys = DashboardSystem(self.env) params = ('layout', 'schema', 'show_captions', 'title') layout, schema, show_captions, title = \ self.bind_params(name, options, *params) lp = dbsys.resolve_layout(layout) dbmod = DashboardModule(self.env) layout_data = lp.expand_layout(layout, context, { 'schema': schema, 'embed': True }) widgets = dbmod.expand_widget_data(context, schema) return layout_data['template'], \ { 'title' : title, 'data' : dict( context=context, layout=schema, widgets=widgets, title='', default={ 'height' : dbmod.default_widget_height or None } ), }, \ context
def expand_macro(self, formatter, name, content): """Render widget contents by re-using wiki markup implementation """ if self.env[DashboardModule] is None: return DashboardModule(self.env).alert_disabled() largs, kwargs = parse_args(content, strict=True) try: (widget_name, ) = largs except ValueError: template = 'widget_alert.html' data = { 'msgtype' : 'error', 'msglabel' : 'Error', 'msgbody' : tag('Expected ', tag.code(1), ' positional argument (i.e. widget name), but got ', tag.code(len(largs)), ' instead'), 'msgdetails' : [ ('Macro name', tag.code('WidgetMacro')), ('Arguments', ', '.join(largs) if largs \ else tag.span('None', class_='label')), ], } else: widget_name = widget_name.strip() wopts = {} wargs = {} def parse_literal(value): try: return literal_eval(value) except (SyntaxError, ValueError): return value for argnm, value in kwargs.iteritems(): if argnm.startswith('wo_'): wopts[argnm[3:]] = value else: wargs[argnm] = parse_literal(value) template = 'widget.html' data = { 'args': wargs, 'bhdb': DashboardChrome(self.env), 'id': None, 'opts': wopts, 'widget': widget_name } return Chrome(self.env).render_template(formatter.req, template, data, fragment=True)
def get_templates_dirs(self): """Ensure dashboard templates will be there even if `bhdashboard.web_ui.DashboardModule` is disabled. """ if not self.env.is_component_enabled(DashboardModule): return DashboardModule(self.env).get_templates_dirs()