Beispiel #1
0
def data_set(flask_report, id_):
    flask_report.try_edit_data_set()
    data_set = DataSet(flask_report, id_)
    SQL_html = highlight(query_to_sql(data_set.query), SqlLexer(),
                         HtmlFormatter())
    params = dict(data_set=data_set, SQL=SQL_html)
    extra_params = flask_report.data_set_template_param(data_set)
    if extra_params:
        params.update(extra_params)
    return render_template("report____/data-set.html", **params)
Beispiel #2
0
def data_set(flask_report, id_):
    flask_report.try_edit_data_set()
    data_set = DataSet(flask_report, id_)
    SQL_html = highlight(query_to_sql(data_set.query), SqlLexer(),
                         HtmlFormatter())
    params = dict(data_set=data_set, SQL=SQL_html)
    extra_params = flask_report.data_set_template_param(data_set)
    if extra_params:
        params.update(extra_params)
    return render_template("report____/data-set.html", **params)
Beispiel #3
0
 def data_set(self, id_):
     self.try_edit_data_set()
     data_set = DataSet(self, id_)
     SQL_html = highlight(query_to_sql(data_set.query), SqlLexer(), HtmlFormatter())
     params = dict(data_set=data_set, SQL=SQL_html)
     extra_params = self.extra_params.get('data_set')
     if extra_params:
         if isinstance(extra_params, types.FunctionType):
             extra_params = extra_params(id_)
         params.update(extra_params)
     return render_template("report____/data-set.html", **params)
Beispiel #4
0
def report(flask_report, id_=None):
    flask_report.try_view_report()
    if id_ is not None:
        report = Report(flask_report, id_)

        code = report.raw_filter_condition

        SQL_html = highlight(query_to_sql(report.query), SqlLexer(),
                             HtmlFormatter())
        params = dict(report=report, SQL=SQL_html)
        if code is not None:
            customized_filter_condition = highlight(code, PythonLexer(),
                                                    HtmlFormatter())
            params['customized_filter_condition'] = \
                customized_filter_condition
        extra_params = flask_report.report_template_param(report)
        if extra_params:
            params.update(extra_params)
        return report.html_template.render(**params)
    else:  # create report
        form = _ReportForm(flask_report, request.form)

        if form.validate():
            name = form.name.data
            id = None
            if request.args.get('preview'):
                name += '(' + _('Preview') + ')'
                id = 0

            filter_map = {}
            for filter_ in json.loads(form.filters.data):
                filter_map.setdefault(filter_['col'], []).append({
                    'operator':
                    filter_['op'],
                    'value':
                    filter_['val'],
                    'synthetic':
                    filter_['synthetic']
                })

            report_id = create_report(form.data_set,
                                      name=name,
                                      creator=form.creator.data,
                                      description=form.description.data,
                                      id=id,
                                      columns=form.columns.data,
                                      filters=filter_map)
            return jsonify({
                'id': report_id,
                'name': form.name.data,
                'url': url_for('.report', id_=report_id)
            })
        else:
            return jsonify({'errors': form.errors}), 403
Beispiel #5
0
def report(flask_report, id_=None):
    flask_report.try_view_report()
    if id_ is not None:
        report = Report(flask_report, id_)

        code = report.raw_filter_condition

        SQL_html = highlight(query_to_sql(report.query), SqlLexer(),
                             HtmlFormatter())
        params = dict(report=report, SQL=SQL_html)
        if code is not None:
            customized_filter_condition = highlight(code, PythonLexer(),
                                                    HtmlFormatter())
            params['customized_filter_condition'] = \
                customized_filter_condition
        extra_params = flask_report.report_template_param(report)
        if extra_params:
            params.update(extra_params)
        return report.html_template.render(**params)
    else:  # create report
        form = _ReportForm(flask_report, request.form)

        if form.validate():
            name = form.name.data
            id = None
            if request.args.get('preview'):
                name += '(' + _('Preview') + ')'
                id = 0

            filter_map = {}
            for filter_ in json.loads(form.filters.data):
                filter_map.setdefault(filter_['col'], []).append({
                    'operator': filter_['op'],
                    'value': filter_['val'],
                    'synthetic': filter_['synthetic']
                })

            report_id = create_report(form.data_set, name=name,
                                      creator=form.creator.data,
                                      description=form.description.data,
                                      id=id, columns=form.columns.data,
                                      filters=filter_map)
            return jsonify({'id': report_id, 'name': form.name.data,
                            'url': url_for('.report', id_=report_id)})
        else:
            return jsonify({'errors': form.errors}), 403
Beispiel #6
0
    def report(self, id_=None):
        self.try_view_report()
        if id_ is not None:
            report = Report(self, id_)

            html_report = report.html_template.render(report=report)
            code = report.read_literal_filter_condition()

            SQL_html = highlight(query_to_sql(report.query), SqlLexer(), HtmlFormatter())
            params = dict(report=report, html_report=html_report, SQL=SQL_html)
            if code is not None:
                customized_filter_condition = highlight(code, PythonLexer(), HtmlFormatter())
                params['customized_filter_condition'] = customized_filter_condition
            extra_params = self.extra_params.get("report")
            if extra_params:
                if isinstance(extra_params, types.FunctionType):
                    extra_params = extra_params(id_)
                params.update(extra_params)
            return render_template("report____/report.html", **params)