diff --git a/netbox/extras/views.py b/netbox/extras/views.py index ab9e3ba52..f2cf1b38a 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -10,6 +10,7 @@ from rq import Worker from netbox.views import generic from utilities.forms import ConfirmationForm +from utilities.htmx import is_htmx from utilities.tables import paginate_table from utilities.utils import copy_safe_request, count_related, normalize_querydict, shallow_compare_dict from utilities.views import ContentTypePermissionRequiredMixin @@ -820,6 +821,16 @@ class ScriptResultView(ContentTypePermissionRequiredMixin, GetScriptMixin, View) script = self._get_script(result.name) + # If this is an HTMX request, return only the rendered table HTML + if is_htmx(request): + response = render(request, 'extras/htmx/script_result.html', { + 'script': script, + 'result': result, + }) + if result.completed: + response.status_code = 286 + return response + return render(request, 'extras/script_result.html', { 'script': script, 'result': result, diff --git a/netbox/templates/extras/htmx/script_result.html b/netbox/templates/extras/htmx/script_result.html new file mode 100644 index 000000000..013b4c81d --- /dev/null +++ b/netbox/templates/extras/htmx/script_result.html @@ -0,0 +1,52 @@ +{% load helpers %} +{% load log_levels %} + +{% if result.completed %} +
+ Run: {{ result.created|annotated_date }} + {% if result.completed %} + Duration: {{ result.duration }} + {% endif %} +
+Line | +Level | +Message | +
---|---|---|
{{ forloop.counter }} | +{% log_level log.status %} | +{{ log.message|render_markdown }} | +
+ No log output + | +
{{ result.data.output }}+ {% else %} +
None
+ {% endif %} +{% else %} +- Run: {{ result.created|annotated_date }} - {% if result.completed %} - Duration: {{ result.duration }} - {% else %} -
Line | -Level | -Message | -
---|---|---|
{{ forloop.counter }} | -{% log_level log.status %} | -{{ log.message|render_markdown }} | -
- No log output - | -
{{ result.data.output }}-
{{ script.filename }}
{{ script.source }}+
{{ script.filename }}
{{ script.source }}+