Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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)
Exemple #4
0
 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()