From a8c08de875715b51c2a3e6c072d4e85b045d1903 Mon Sep 17 00:00:00 2001
From: Ana Krivokapic <akrivoka@redhat.com>
Date: Thu, 11 Sep 2014 13:31:45 +0200
Subject: [PATCH] Add support for row actions to detail pages
Add support for performing actions on an object from the object's
detail page. Actions are displayed in the page header, in a
row of buttons. To use this newly added capability, `row=True`
must be passed as a parameter to the render_row_actions method,
when called from a DetailView.
Change-Id: I4fd96433f9514242c21d6c47f79bf83f3a5e4fc0
Implements: blueprint detail-pages-ia
---
openstack_dashboard/dashboards/admin/networks/tests.py | 7 -------
openstack_dashboard/dashboards/project/images/images/views.py | 3 +++
openstack_dashboard/dashboards/project/instances/views.py | 3 +++
openstack_dashboard/dashboards/project/networks/views.py | 3 +++
openstack_dashboard/dashboards/project/stacks/views.py | 4 ----
openstack_dashboard/dashboards/project/volumes/backups/views.py | 4 ++++
openstack_dashboard/dashboards/project/volumes/snapshots/views.py | 3 +++
openstack_dashboard/dashboards/project/volumes/volumes/views.py | 4 ++++
openstack_dashboard/dashboards/theme/theme_index/panel.py | 1 +
openstack_dashboard/enabled/_99_customization.py | 1 -
10 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/openstack_dashboard/dashboards/admin/networks/tests.py b/openstack_dashboard/dashboards/admin/networks/tests.py
index e233302..764a070 100644
--- a/openstack_dashboard/dashboards/admin/networks/tests.py
+++ b/openstack_dashboard/dashboards/admin/networks/tests.py
@@ -191,19 +191,12 @@ class NetworkTests(test.BaseAdminViewTests):
api.neutron.is_extension_supported(IsA(http.HttpRequest),
'mac-learning')\
.AndReturn(mac_learning)
-<<<<<<< HEAD
api.neutron.is_extension_supported(
IsA(http.HttpRequest),
'dhcp_agent_scheduler').AndReturn(True)
api.neutron.is_extension_supported(
IsA(http.HttpRequest),
'dhcp_agent_scheduler').AndReturn(True)
-=======
- api.neutron.is_extension_supported(IsA(http.HttpRequest),
- 'dhcp_agent_scheduler').AndReturn(True)
- api.neutron.is_extension_supported(IsA(http.HttpRequest),
- 'dhcp_agent_scheduler').AndReturn(True)
->>>>>>> dc6b1ce... Add dropdown actions to all details pages
self.mox.ReplayAll()
diff --git a/openstack_dashboard/dashboards/project/images/images/views.py b/openstack_dashboard/dashboards/project/images/images/views.py
index 2bf34bd..5b5b36d 100644
--- a/openstack_dashboard/dashboards/project/images/images/views.py
+++ b/openstack_dashboard/dashboards/project/images/images/views.py
@@ -94,6 +94,9 @@ class DetailView(tabs.TabView):
context["image"] = image
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(image)
+ context["page_title"] = _("Image Details: "
+ "%(image_name)s") % {'image_name':
+ image.name}
return context
@staticmethod
diff --git a/openstack_dashboard/dashboards/project/instances/views.py b/openstack_dashboard/dashboards/project/instances/views.py
index 674e201..05ad37c 100644
--- a/openstack_dashboard/dashboards/project/instances/views.py
+++ b/openstack_dashboard/dashboards/project/instances/views.py
@@ -300,6 +300,9 @@ class DetailView(tabs.TabView):
table = project_tables.InstancesTable(self.request)
context["url"] = reverse(self.redirect_url)
context["actions"] = table.render_row_actions(instance)
+ context["page_title"] = _("Instance Details: "
+ "%(instance_name)s") % {'instance_name':
+ instance.name}
return context
@memoized.memoized_method
diff --git a/openstack_dashboard/dashboards/project/networks/views.py b/openstack_dashboard/dashboards/project/networks/views.py
index 5dec3a8..1f4b2a9 100644
--- a/openstack_dashboard/dashboards/project/networks/views.py
+++ b/openstack_dashboard/dashboards/project/networks/views.py
@@ -143,6 +143,9 @@ class DetailView(tables.MultiTableView):
table = project_tables.NetworksTable(self.request)
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(network)
+ context["page_title"] = _("Network Details: "
+ "%(network_name)s") % {'network_name':
+ network.name}
return context
@staticmethod
diff --git a/openstack_dashboard/dashboards/project/stacks/views.py b/openstack_dashboard/dashboards/project/stacks/views.py
index 87a86a3..dc34564 100644
--- a/openstack_dashboard/dashboards/project/stacks/views.py
+++ b/openstack_dashboard/dashboards/project/stacks/views.py
@@ -308,10 +308,6 @@ class DetailView(tabs.TabView):
def get_redirect_url():
return reverse('horizon:project:stacks:index')
- @staticmethod
- def get_redirect_url():
- return reverse('horizon:project:stacks:index')
-
class ResourceView(tabs.TabView):
tab_group_class = project_tabs.ResourceDetailTabs
diff --git a/openstack_dashboard/dashboards/project/volumes/backups/views.py b/openstack_dashboard/dashboards/project/volumes/backups/views.py
index c4f9065..09c7f47 100644
--- a/openstack_dashboard/dashboards/project/volumes/backups/views.py
+++ b/openstack_dashboard/dashboards/project/volumes/backups/views.py
@@ -60,6 +60,10 @@ class BackupDetailView(tabs.TabView):
context["backup"] = backup
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(backup)
+ context["page_title"] = _("Volume Backup Details: "
+ "%(backup_name)s") % {'backup_name':
+ backup.name}
+
return context
@memoized.memoized_method
diff --git a/openstack_dashboard/dashboards/project/volumes/snapshots/views.py b/openstack_dashboard/dashboards/project/volumes/snapshots/views.py
index 6a37c5d..e6749f9 100644
--- a/openstack_dashboard/dashboards/project/volumes/snapshots/views.py
+++ b/openstack_dashboard/dashboards/project/volumes/snapshots/views.py
@@ -77,6 +77,9 @@ class DetailView(tabs.TabView):
context["snapshot"] = snapshot
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(snapshot)
+ context["page_title"] = _("Volume Snapshot Details: "
+ "%(snapshot_name)s") % {'snapshot_name':
+ snapshot.name}
return context
@memoized.memoized_method
diff --git a/openstack_dashboard/dashboards/project/volumes/volumes/views.py b/openstack_dashboard/dashboards/project/volumes/volumes/views.py
index b5bd7fc..d52f198 100644
--- a/openstack_dashboard/dashboards/project/volumes/volumes/views.py
+++ b/openstack_dashboard/dashboards/project/volumes/volumes/views.py
@@ -52,6 +52,10 @@ class DetailView(tabs.TabView):
context["volume"] = volume
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(volume)
+ context["page_title"] = _("Volume Details: "
+ "%(volume_name)s") % {'volume_name':
+ volume.name}
+
return context
@memoized.memoized_method
diff --git a/openstack_dashboard/dashboards/theme/theme_index/panel.py b/openstack_dashboard/dashboards/theme/theme_index/panel.py
index 9c42a79..7d85f3c 100644
--- a/openstack_dashboard/dashboards/theme/theme_index/panel.py
+++ b/openstack_dashboard/dashboards/theme/theme_index/panel.py
@@ -20,6 +20,7 @@ import horizon
from openstack_dashboard.dashboards.theme import dashboard
+
class ThemePanel(horizon.Panel):
name = _("Panel providing a theme")
slug = 'theme_index'
diff --git a/openstack_dashboard/enabled/_99_customization.py b/openstack_dashboard/enabled/_99_customization.py
index f37f848..272bcbe 100644
--- a/openstack_dashboard/enabled/_99_customization.py
+++ b/openstack_dashboard/enabled/_99_customization.py
@@ -6,4 +6,3 @@ DEFAULT = False
ADD_EXCEPTIONS = {}
# A list of applications to be added to INSTALLED_APPS.
ADD_INSTALLED_APPS = ['openstack_dashboard.dashboards.theme']
-