From abfafd7a0cdc64c165741aebaa4f9dac43b13ac6 Mon Sep 17 00:00:00 2001
From: Szabolcs Gelencser <gelencser.szabolcs.94@gmail.com>
Date: Tue, 22 May 2018 15:41:17 +0200
Subject: [PATCH] Show permitted leases only on renew dialog

---
 circle/dashboard/views/vm.py |  9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/circle/dashboard/views/vm.py b/circle/dashboard/views/vm.py
index 1009995..e57cb49 100644
--- a/circle/dashboard/views/vm.py
+++ b/circle/dashboard/views/vm.py
@@ -724,8 +724,15 @@ class VmRenewView(FormOperationMixin, VmOperationView):
     template_name = 'dashboard/_vm-renew.html'
 
     def get_form_kwargs(self):
-        choices = Lease.objects.all() #TODO: filter on permissions
         instance = self.get_op().instance
+        user_role_names = [role["name"] for role in self.request.user.roles]
+
+        leases_from_roles = Lease.objects.filter(roles_permitted__role_name__in=user_role_names)
+        default_lease = Lease.objects.filter(name=settings.DEFAULT_LEASE_NAME)
+        current_lease = Lease.objects.filter(vmlease__os_server_id=instance.id)
+
+        choices = (leases_from_roles | default_lease | current_lease).distinct()
+
         default = VmLease.objects.get(os_server_id=instance.id).lease
         # if default and default not in choices:
         #     choices = (choices.distinct() |
--
libgit2 0.26.0