diff --git a/netbox/extras/views.py b/netbox/extras/views.py index f2cf1b38a..d5d36d364 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -694,16 +694,26 @@ class ReportResultView(ContentTypePermissionRequiredMixin, View): def get(self, request, job_result_pk): report_content_type = ContentType.objects.get(app_label='extras', model='report') - jobresult = get_object_or_404(JobResult.objects.all(), pk=job_result_pk, obj_type=report_content_type) + result = get_object_or_404(JobResult.objects.all(), pk=job_result_pk, obj_type=report_content_type) # Retrieve the Report and attach the JobResult to it - module, report_name = jobresult.name.split('.') + module, report_name = result.name.split('.') report = get_report(module, report_name) - report.result = jobresult + report.result = result + + # If this is an HTMX request, return only the result HTML + if is_htmx(request): + response = render(request, 'extras/htmx/report_result.html', { + 'report': report, + 'result': result, + }) + if result.completed: + response.status_code = 286 + return response return render(request, 'extras/report_result.html', { 'report': report, - 'result': jobresult, + 'result': result, }) @@ -821,7 +831,7 @@ class ScriptResultView(ContentTypePermissionRequiredMixin, GetScriptMixin, View) script = self._get_script(result.name) - # If this is an HTMX request, return only the rendered table HTML + # If this is an HTMX request, return only the result HTML if is_htmx(request): response = render(request, 'extras/htmx/script_result.html', { 'script': script, diff --git a/netbox/templates/extras/htmx/report_result.html b/netbox/templates/extras/htmx/report_result.html new file mode 100644 index 000000000..3bc5ad27d --- /dev/null +++ b/netbox/templates/extras/htmx/report_result.html @@ -0,0 +1,81 @@ +{% load helpers %} + +

+ Run: {{ result.created|annotated_date }} + {% if result.completed %} + Duration: {{ result.duration }} + {% else %} +

+ Loading... +
+ {% endif %} + {% include 'extras/inc/job_label.html' with result=result %} +

+{% if result.completed %} +
+
+ Report Methods +
+
+ + {% for method, data in result.data.items %} + + + + + {% endfor %} +
{{ method }} + {{ data.success }} + {{ data.info }} + {{ data.warning }} + {{ data.failure }} +
+
+
+
+
+ Report Results +
+
+ + + + + + + + + + + {% for method, data in 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 }} + {% else %} + + {% endif %} + {{ message|render_markdown }}
+
+
+{% else %} +
Pending results
+{% endif %} diff --git a/netbox/templates/extras/report_result.html b/netbox/templates/extras/report_result.html index 90726d287..9dd733bef 100644 --- a/netbox/templates/extras/report_result.html +++ b/netbox/templates/extras/report_result.html @@ -2,98 +2,10 @@ {% load helpers %} {% load static %} -{% block head %} - -{% endblock %} - {% block content-wrapper %} -
-
-

- Run: {{ result.created|annotated_date }} - {% if result.completed %} - Duration: {{ result.duration }} - {% else %} -

- Loading... -
- {% endif %} - {% include 'extras/inc/job_label.html' with result=result %} -

- {% if result.completed %} -
-
- Report Methods -
-
- - {% for method, data in result.data.items %} - - - - - {% endfor %} -
{{ method }} - {{ data.success }} - {{ data.info }} - {{ data.warning }} - {{ data.failure }} -
-
-
-
-
- Report Results -
-
- - - - - - - - - - - {% for method, data in 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 }} - {% else %} - - {% endif %} - {{ message|render_markdown }}
-
-
- {% else %} -
Pending results
- {% endif %} +
+
+ {% include 'extras/htmx/report_result.html' %}
-
-{% endblock %} - -{% block data %} - - +
{% endblock %}