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,
)