From 592ad18317a1a8efd4833f8659aaa646324af753 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 6 Jul 2020 13:30:13 -0400 Subject: [PATCH] Provide a default view for Report instances --- netbox/extras/reports.py | 11 +++++-- netbox/templates/extras/report.html | 38 ++++++++++++++++++++++ netbox/templates/extras/report_list.html | 22 ++++++++----- netbox/templates/extras/report_result.html | 2 +- 4 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 netbox/templates/extras/report.html diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index 45496d396..439868dfd 100644 --- a/netbox/extras/reports.py +++ b/netbox/extras/reports.py @@ -146,12 +146,19 @@ class Report(object): return self.__module__ @property - def name(self): + def class_name(self): return self.__class__.__name__ + @property + def name(self): + """ + Override this attribute to set a custom display name. + """ + return self.class_name + @property def full_name(self): - return '.'.join([self.__module__, self.__class__.__name__]) + return f'{self.module}.{self.class_name}' def _log(self, obj, message, level=LogLevelChoices.LOG_DEFAULT): """ diff --git a/netbox/templates/extras/report.html b/netbox/templates/extras/report.html new file mode 100644 index 000000000..58bee4059 --- /dev/null +++ b/netbox/templates/extras/report.html @@ -0,0 +1,38 @@ +{% extends 'base.html' %} +{% load helpers %} + +{% block title %}{{ report.name }}{% endblock %} + +{% block content %} +
+
+ +
+
+ {% if perms.extras.run_report %} +
+
+ {% csrf_token %} + {{ run_form }} + +
+
+ {% endif %} +

{{ report.name }}

+
+
+ {% if report.description %} +

{{ report.description }}

+ {% endif %} + {% if report.result %} +

Last run: + {{ report.result.created }} +

+ {% endif %} +
+
+{% endblock %} diff --git a/netbox/templates/extras/report_list.html b/netbox/templates/extras/report_list.html index f507cf2b1..7918366d9 100644 --- a/netbox/templates/extras/report_list.html +++ b/netbox/templates/extras/report_list.html @@ -6,7 +6,7 @@
{% if reports %} - {% for module, module_reports in reports %} + {% for module, module_reports in reports %}

{{ module|bettertitle }}

@@ -21,17 +21,21 @@ {% for report in module_reports %} - - {% if report.result %} - - {% else %} - - {% endif %} + + {% for method, stats in report.result.data.items %} @@ -66,7 +70,7 @@
- {{ report.name }} + + {{ report.name }} + {% include 'extras/inc/job_label.html' with result=report.result %} {{ report.description|default:"" }}{{ report.result.created }}Never{{ report.description|placeholder }} + {% if report.result %} + {{ report.result.created }} + {% else %} + Never + {% endif %} +