diff --git a/operations/templates/operations/job.html b/operations/templates/operations/job.html index 2aa3dfa6..e786b16e 100644 --- a/operations/templates/operations/job.html +++ b/operations/templates/operations/job.html @@ -2,6 +2,7 @@ {% load i18n %} {% load bootstrap_icons %} {% load operations %} +{% load tz %} {% block title %}{{ job.label }}{% endblock %} @@ -45,9 +46,10 @@ {% endif %} -
| {% trans "Created" %} | + {% get_current_timezone as TIME_ZONE %} +{% blocktrans %}Created ({{ TIME_ZONE }}){% endblocktrans %} | {% trans "Job" %} | {% trans "State" %} | {% trans "Resource" %} | @@ -66,7 +68,7 @@|
|---|---|---|---|---|---|
| {{ op.created_at|date:"M d H:i:s" }} | +{{ op.created_at|date:"Y-m-d H:i:s" }} |
{{ row.label }}
{% if op.state in active_states and op.phase %}
@@ -75,7 +77,7 @@
{{ op.error|truncatechars:80 }}
{% endif %}
{# below md the hidden columns show here #}
- {{ row.resource_label|wrap_at_slash }}
+ {{ op.created_at|date:"M d H:i:s" }}{% if request.user.is_superuser %} · {{ row.username }}{% endif %} {{ row.resource_label|wrap_at_slash }}
{{ op.created_at|date:"Y-m-d H:i:s" }}{% if request.user.is_superuser %} · {{ row.username }}{% endif %} |
{% include "operations/state_badge.html" with state=op.state %} | {{ row.resource_label|wrap_at_slash }} | diff --git a/operations/tests/test_views.py b/operations/tests/test_views.py index 44c3b501..e1964b38 100644 --- a/operations/tests/test_views.py +++ b/operations/tests/test_views.py @@ -54,6 +54,13 @@ class JobsPageTestCase(TransactionTestCase): self.assertContains(self.client.get(reverse("operations:jobs"), {"compute": "c"}), link) self.assertNotContains(self.client.get(reverse("operations:jobs"), {"state": "failed"}), link) + def test_host_and_user_filters_match_part_of_the_name(self): + self.client.force_login(self.admin) + link = reverse("operations:job", args=[self.op.pk]) + for filters in ({"compute": "C"}, {"username": "PAGE_U"}): + self.assertContains(self.client.get(reverse("operations:jobs"), filters), link) + self.assertNotContains(self.client.get(reverse("operations:jobs"), {"username": "other"}), link) + def test_resolve_needs_a_superuser_an_outcome_and_a_note(self): jobs.finish(self.op, Outcome(Operation.UNCERTAIN, error="check")) self.client.force_login(self.user) @@ -121,7 +128,8 @@ class JobsPageTestCase(TransactionTestCase): self.client.force_login(self.admin) for response in (self.client.get(reverse("operations:jobs")), self.client.get(reverse("operations:job", args=[self.op.pk]))): - self.assertContains(response, "Oct 13 23:04:00") + self.assertContains(response, "2026-10-13 23:04:00") + self.assertContains(response, f"Created ({django_timezone.get_current_timezone_name()})") self.assertNotContains(response, "2026-10-13T20:04") def test_list_and_detail_refresh_while_a_job_is_active(self): @@ -196,12 +204,12 @@ class JobsPageTestCase(TransactionTestCase): self.client.force_login(self.admin) html = self.client.get(reverse("operations:jobs")).content.decode() # below md only Job and State are columns - for header in ("Created", "Resource", "User"): + for header in (f"Created ({django_timezone.get_current_timezone_name()})", "Resource", "User"): self.assertIn(f'{header} | ', html) narrow = re.search(r'