From cb95f7149ac434040481a80d24dbfe133409b99e Mon Sep 17 00:00:00 2001 From: Kálmán Viktor <kviktor@cloud.bme.hu> Date: Wed, 12 Mar 2014 14:01:56 +0100 Subject: [PATCH] dashboard: shut off button --- circle/dashboard/templates/dashboard/vm-detail.html | 7 +++++++ circle/dashboard/views.py | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/circle/dashboard/templates/dashboard/vm-detail.html b/circle/dashboard/templates/dashboard/vm-detail.html index 1cec6bf..5a2dd6b 100644 --- a/circle/dashboard/templates/dashboard/vm-detail.html +++ b/circle/dashboard/templates/dashboard/vm-detail.html @@ -36,6 +36,13 @@ <input type="hidden" name="reset" value="dummy"/> <button title="{% trans "Reset (power cycle)" %}" class="btn btn-default btn-xs" type="submit"><i class="icon-bolt"></i></button> </form> + <form style="display: inline;" method="POST" action="{% url "dashboard.views.detail" pk=instance.pk %}"> + {% csrf_token %} + <input type="hidden" name="shut_off"/> + <button title="{% trans "Shut off" %}" class="btn btn-default btn-xs" type="submit"> + <i class="icon-ban-circle"></i> + </button> + </form> <a title="Migrate" data-vm-pk="{{ instance.pk }}" href="{% url "dashboard.views.vm-migrate" pk=instance.pk %}" class="btn btn-default btn-xs vm-migrate"> <i class="icon-truck"></i> </a> diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index cc7021d..00d9d0e 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -231,6 +231,7 @@ class VmDetailView(CheckedDetailView): 'deploy': self.__deploy, 'reset': self.__reset, 'reboot': self.__reboot, + 'shut_off': self.__shut_off, } for k, v in options.iteritems(): if request.POST.get(k) is not None: @@ -465,6 +466,14 @@ class VmDetailView(CheckedDetailView): self.object.reboot_async(request.user) return redirect("%s#activity" % self.object.get_absolute_url()) + def __shut_off(self, request): + self.object = self.get_object() + if not self.object.has_level(request.user, 'owner'): + raise PermissionDenied() + + self.object.shut_off_async(request.user) + return redirect("%s#activity" % self.object.get_absolute_url()) + class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, DetailView): template_name = "dashboard/node-detail.html" -- libgit2 0.26.0