summaryrefslogtreecommitdiff
path: root/horizon/browsers
diff options
context:
space:
mode:
authorRadomir Dopieralski <openstack@sheep.art.pl>2013-10-28 11:24:00 +0100
committerRadomir Dopieralski <openstack@sheep.art.pl>2013-12-18 16:46:30 +0100
commitb7537a8b8155fcf112067eb7d9d12339e280e44f (patch)
tree7d229ef9cb08f3171f19a6d13d529c3768f2ec51 /horizon/browsers
parent491cda0a1f0fd6bd016b15aa2afbe54ff0318d69 (diff)
downloadhorizon-b7537a8b8155fcf112067eb7d9d12339e280e44f.tar.gz
Use memoized_method decorator in views
A lot of horizon's views use the pattern: def get_data(self): if not hasattr(self, "_data"): # Calculate data here. self._data = data return self._data This is copy-pasted all over the codebase. It's better to handle that with a single decorator. In the future, we might even replace it with some better caching approach. Closes-bug: #1248230 Change-Id: Id021fccf9032e5068993ec91a7774a5d0fbf29bb
Diffstat (limited to 'horizon/browsers')
-rw-r--r--horizon/browsers/views.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/horizon/browsers/views.py b/horizon/browsers/views.py
index baf1d907a..84daa5695 100644
--- a/horizon/browsers/views.py
+++ b/horizon/browsers/views.py
@@ -17,6 +17,7 @@
from django.utils.translation import ugettext_lazy as _ # noqa
from horizon.tables import MultiTableView # noqa
+from horizon.utils import memoized
class ResourceBrowserView(MultiTableView):
@@ -32,15 +33,15 @@ class ResourceBrowserView(MultiTableView):
self.navigation_selection = False
super(ResourceBrowserView, self).__init__(*args, **kwargs)
+ @memoized.memoized_method
def get_browser(self):
- if not hasattr(self, "browser"):
- self.browser = self.browser_class(self.request, **self.kwargs)
- self.browser.set_tables(self.get_tables())
- if not self.navigation_selection:
- ct = self.browser.content_table
- item = self.browser.navigable_item_name.lower()
- ct._no_data_message = _("Select a %s to browse.") % item
- return self.browser
+ browser = self.browser_class(self.request, **self.kwargs)
+ browser.set_tables(self.get_tables())
+ if not self.navigation_selection:
+ ct = browser.content_table
+ item = browser.navigable_item_name.lower()
+ ct._no_data_message = _("Select a %s to browse.") % item
+ return browser
def get_context_data(self, **kwargs):
context = super(ResourceBrowserView, self).get_context_data(**kwargs)