(ui) Standardize primary form actions

Add shared form action styling and consistent Cancel links across config,
schedule, and SSH key forms so create/edit flows behave predictably.

Refs #25
This commit is contained in:
2026-05-21 14:13:05 +02:00
parent c0eca3da55
commit af548f11c4
7 changed files with 58 additions and 6 deletions

View File

@@ -542,6 +542,19 @@ class ViewTests(TestCase):
self.assertEqual(credential.private_key, "UPLOADED PRIVATE KEY\n")
self.assertEqual(credential.public_key, "DERIVED PUBLIC KEY")
def test_ssh_credential_forms_render_cancel_actions(self) -> None:
self.client.force_login(self.staff_user)
credential = SshCredential.objects.create(name="backup-key")
create_response = self.client.get(reverse("create_ssh_credential"))
edit_response = self.client.get(reverse("edit_ssh_credential", args=[credential.id]))
generate_response = self.client.get(reverse("generate_ssh_credential"))
for response in (create_response, edit_response, generate_response):
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Cancel")
self.assertContains(response, reverse("ssh_credentials"))
def test_ssh_credentials_view_generates_filesystem_key(self) -> None:
self.client.force_login(self.staff_user)
with TemporaryDirectory() as tmp, override_settings(POBSYNC_HOME=str(Path(tmp) / "home")):
@@ -746,6 +759,8 @@ class ViewTests(TestCase):
self.assertContains(response, f'value="{credential.id}" selected')
self.assertContains(response, "--archive")
self.assertContains(response, "/proc/***")
self.assertContains(response, "Cancel")
self.assertContains(response, reverse("dashboard"))
def test_global_config_form_renders_static_container_backup_root_on_edit(self) -> None:
self.client.force_login(self.staff_user)
@@ -2142,6 +2157,8 @@ class ViewTests(TestCase):
self.assertContains(response, "evaluated by the pobsync scheduler service")
self.assertContains(response, "15 2 * * *")
self.assertContains(response, "Save schedule")
self.assertContains(response, "Cancel")
self.assertContains(response, reverse("host_detail", args=[host.host]))
def test_schedule_form_creates_schedule(self) -> None:
self.client.force_login(self.staff_user)
@@ -2243,6 +2260,8 @@ class ViewTests(TestCase):
self.assertContains(response, "/srv")
self.assertContains(response, "*.tmp")
self.assertContains(response, "--numeric-ids")
self.assertContains(response, "Cancel")
self.assertContains(response, reverse("host_detail", args=[host.host]))
def test_host_config_form_renders_effective_config_check(self) -> None:
self.client.force_login(self.staff_user)