Source code for ferrosoft.apps.reporting.views

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import DetailView
from django.utils.translation import gettext_lazy as _

from ferrosoft.apps.ferrobase.views import PlatformActivityMixin, render_ajax_result
from ferrosoft.apps.reporting.models import Report, ReportStatus


def _generator_context(report: Report):
    return {
        "enable_kickoff": report.status == ReportStatus.NEW.value,
        "data_layer_json": {
            "websockets": {
                "ui-events": "/ws/reporting/generator/%s/" % report.pk,
            }
        },
    }


[docs] class ReportGeneratorView(LoginRequiredMixin, PlatformActivityMixin, DetailView): activity_title = _("Report") model = Report template_name = "reporting/generator/index.html"
[docs] def get_context_data(self, **kwargs): return super().get_context_data(**kwargs) | _generator_context(self.object)
[docs] def report_generator_modal_content(request, report: Report): """Render HTML content for a report generator modal. It is expected that the report.content has the HTML content of the report written to it. The content will be replaced with PDF content.""" context = _generator_context(report) return render_ajax_result( request, success=None, template="reporting/generator/modal_content.html", **context, )