diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index 7bf8951ea..421c8456f 100644 --- a/netbox/extras/reports.py +++ b/netbox/extras/reports.py @@ -93,7 +93,7 @@ class Report(object): ('success', 0), ('info', 0), ('warning', 0), - ('failed', 0), + ('failure', 0), ('log', []), ]) if not test_methods: @@ -118,8 +118,19 @@ class Report(object): """ if level not in LOG_LEVEL_CODES: raise Exception("Unknown logging level: {}".format(level)) - logline = [timezone.now().isoformat(), level, str(obj), message] - self._results[self.active_test]['log'].append(logline) + self._results[self.active_test]['log'].append( + timezone.now().isoformat(), + LOG_LEVEL_CODES.get(level), + str(obj) if obj else None, + obj.get_absolute_url() if getattr(obj, 'get_absolute_url', None) else None, + message, + ) + + def log(self, message): + """ + Log a message which is not associated with a particular object. + """ + self._log(None, message, level=LOG_DEFAULT) def log_success(self, obj, message=None): """ @@ -148,7 +159,7 @@ class Report(object): Log a failure. Calling this method will automatically mark the report as failed. """ self._log(obj, message, level=LOG_FAILURE) - self._results[self.active_test]['failed'] += 1 + self._results[self.active_test]['failure'] += 1 self.failed = True def run(self): diff --git a/netbox/templates/extras/report.html b/netbox/templates/extras/report.html index cb3e716f5..2c087e437 100644 --- a/netbox/templates/extras/report.html +++ b/netbox/templates/extras/report.html @@ -24,7 +24,7 @@ {% endif %}

{{ report.name }}{% include 'extras/inc/report_label.html' %}

-
+
{% if report.description %}

{{ report.description }}

{% endif %} @@ -34,5 +34,59 @@

Last run: Never

{% endif %}
+
+ {% if report.result %} + + + + + + + + + + {% for method, data in report.result.data.items %} + + + + {% for time, level, obj, url, message in data.log %} + + + + + + + {% endfor %} + {% endfor %} +
TimeLevelObjectMessage
{{ method }}
{{ time }} + + + {% if obj and url %} + {{ obj }} + {% elif obj %} + {{ obj }} + {% endif %} + {{ message }}
+ {% else %} +
No results are available for this report. Please run the report first.
+ {% endif %} +
+
+ {% if report.result %} +
+
+ Methods +
+
    + {% for method, data in report.result.data.items %} +
  • + {{ method }} + {{ data.log|length }} +
  • + {% endfor %} +
+
+ {% endif %} +
{% endblock %}