summaryrefslogtreecommitdiff
path: root/openstack_dashboard/dashboards/project/floating_ips/workflows.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack_dashboard/dashboards/project/floating_ips/workflows.py')
-rw-r--r--openstack_dashboard/dashboards/project/floating_ips/workflows.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/openstack_dashboard/dashboards/project/floating_ips/workflows.py b/openstack_dashboard/dashboards/project/floating_ips/workflows.py
index 44da77da0..b3a0e0338 100644
--- a/openstack_dashboard/dashboards/project/floating_ips/workflows.py
+++ b/openstack_dashboard/dashboards/project/floating_ips/workflows.py
@@ -23,9 +23,9 @@ from horizon.utils import memoized
from horizon import workflows
from openstack_dashboard import api
+from openstack_dashboard import policy
from openstack_dashboard.utils import filters
-
ALLOCATE_URL = "horizon:project:floating_ips:allocate"
@@ -34,8 +34,7 @@ class AssociateIPAction(workflows.Action):
ip_id = forms.ThemableDynamicTypedChoiceField(
label=_("IP Address"),
coerce=filters.get_int_or_uuid,
- empty_value=None,
- add_item_link=ALLOCATE_URL
+ empty_value=None
)
instance_id = forms.ThemableChoiceField(
label=_("Port to be associated")
@@ -56,6 +55,11 @@ class AssociateIPAction(workflows.Action):
# and set the initial value of instance_id ChoiceField.
q_instance_id = self.request.GET.get('instance_id')
q_port_id = self.request.GET.get('port_id')
+
+ if policy.check((("network", "create_floatingip"),),
+ request=self.request):
+ self.fields['ip_id'].widget.add_item_link = ALLOCATE_URL
+
if q_instance_id:
targets = self._get_target_list(q_instance_id)
# Setting the initial value here is required to avoid a situation