diff --git a/instances/templates/instance.html b/instances/templates/instance.html index 55888d45..5d980d43 100644 --- a/instances/templates/instance.html +++ b/instances/templates/instance.html @@ -290,10 +290,9 @@ var label = $(this).parent(); var newPos = label.index() - 1; if (newPos > -1) { - $('#b_order label').eq(newPos).before(""); - label.remove(); + // moved, not rebuilt: the checkbox keeps its handler + $('#b_order label').eq(newPos).before(label); } - $(".multiselect").multiselect(); }); set_orderlist($("#bootorder")); }); @@ -305,10 +304,8 @@ var label = $(this).parent(); var newPos = label.index() + countSelected; if (newPos < countOptions) { - $('#b_order label').eq(newPos).after(""); - label.remove(); + $('#b_order label').eq(newPos).after(label); } - $(".multiselect").multiselect(); }); set_orderlist($("#bootorder")); }); diff --git a/instances/tests/test_change_network.py b/instances/tests/test_change_network.py index 2f97028f..0e5cbae1 100644 --- a/instances/tests/test_change_network.py +++ b/instances/tests/test_change_network.py @@ -2,6 +2,7 @@ from unittest.mock import patch from computes.models import Compute from django.contrib.auth import get_user_model +from django.contrib.messages import get_messages from django.test import TestCase from django.urls import reverse from instances.models import Instance @@ -33,6 +34,13 @@ class ChangeNetworkViewTestCase(TestCase): }) change.assert_called_once_with("52:54:00:00:00:02", "52:54:00:00:00:03", "default", "net", "e1000", "") + def test_a_shut_off_vm_is_told_the_change_is_made(self): + with patch("instances.models.wvmInstance") as wvm: + wvm.return_value.get_status.return_value = 5 + response = self.client.post(self.url, {"net-old-mac-1": "52:54:00:00:00:02", "net-source-1": "net:default", + "net-model-1": "virtio"}, HTTP_REFERER="/instances/%d/" % self.instance.id) + self.assertEqual([str(m) for m in get_messages(response.wsgi_request)], ["Network device changed"]) + def test_invalid_mac_is_rejected(self): change = self.post({ "net-old-mac-0": "52:54:00:00:00:01", diff --git a/instances/tests/test_vm_audit_rows.py b/instances/tests/test_vm_audit_rows.py index ab4fb703..f3d20213 100644 --- a/instances/tests/test_vm_audit_rows.py +++ b/instances/tests/test_vm_audit_rows.py @@ -6,6 +6,7 @@ from unittest.mock import patch import libvirt from computes.models import Compute from django.contrib.auth import get_user_model +from django.contrib.messages import get_messages from django.test import TestCase from django.urls import reverse from instances.models import Instance @@ -62,6 +63,11 @@ class VMRowTests(TestCase): self.post("poweron") self.assertEqual(self.rows(), []) + def test_an_empty_root_password_is_refused_with_a_message(self): + response = self.post("rootpasswd", {"passwd": ""}) + self.assertEqual([str(m) for m in get_messages(response.wsgi_request)], ["Enter a password"]) + self.assertEqual(self.rows(), []) + def test_qos_is_logged(self): self.post("set_qos", {"qos_direction": "inbound", "net-mac-0": "52:54:00:00:00:01", "qos_average": "100"}) self.post("unset_qos", {"qos_direction": "inbound", "net-mac": "52:54:00:00:00:01"}) diff --git a/instances/views.py b/instances/views.py index 31ffb997..a7788644 100755 --- a/instances/views.py +++ b/instances/views.py @@ -911,6 +911,8 @@ def set_root_pass(request, pk): messages.success(request, _("Reset root password")) else: messages.error(request, AGENT_OR_SHUT_OFF) + else: + messages.error(request, _("Enter a password")) return get_safe_redirect( request, default=reverse("instances:instance", args=[instance.id]) + "#access" ) @@ -1727,9 +1729,10 @@ def change_network(request, pk): messages.error(request, err) return redirect(back) - msg = _("Network Device Config is changed. Please shutdown instance to activate.") if instance.proxy.get_status() != 5: - messages.success(request, msg) + messages.success(request, _("Network Device Config is changed. Please shutdown instance to activate.")) + else: + messages.success(request, _("Network device changed")) return redirect(back)