summaryrefslogtreecommitdiff
path: root/openstack_dashboard/dashboards/project/containers
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 /openstack_dashboard/dashboards/project/containers
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 'openstack_dashboard/dashboards/project/containers')
-rw-r--r--openstack_dashboard/dashboards/project/containers/views.py49
1 files changed, 24 insertions, 25 deletions
diff --git a/openstack_dashboard/dashboards/project/containers/views.py b/openstack_dashboard/dashboards/project/containers/views.py
index 06af0acb1..3ad793a71 100644
--- a/openstack_dashboard/dashboards/project/containers/views.py
+++ b/openstack_dashboard/dashboards/project/containers/views.py
@@ -32,6 +32,7 @@ from django.views import generic
from horizon import browsers
from horizon import exceptions
from horizon import forms
+from horizon.utils import memoized
from openstack_dashboard import api
from openstack_dashboard.api import swift
@@ -265,19 +266,18 @@ class CopyView(forms.ModalFormView):
class ContainerDetailView(forms.ModalFormMixin, generic.TemplateView):
template_name = 'project/containers/container_detail.html'
+ @memoized.memoized_method
def get_object(self):
- if not hasattr(self, "_object"):
- try:
- self._object = api.swift.swift_get_container(
- self.request,
- self.kwargs["container_name"],
- with_data=False)
- except Exception:
- redirect = reverse("horizon:project:containers:index")
- exceptions.handle(self.request,
- _('Unable to retrieve details.'),
- redirect=redirect)
- return self._object
+ try:
+ return api.swift.swift_get_container(
+ self.request,
+ self.kwargs["container_name"],
+ with_data=False)
+ except Exception:
+ redirect = reverse("horizon:project:containers:index")
+ exceptions.handle(self.request,
+ _('Unable to retrieve details.'),
+ redirect=redirect)
def get_context_data(self, **kwargs):
context = super(ContainerDetailView, self).get_context_data(**kwargs)
@@ -288,20 +288,19 @@ class ContainerDetailView(forms.ModalFormMixin, generic.TemplateView):
class ObjectDetailView(forms.ModalFormMixin, generic.TemplateView):
template_name = 'project/containers/object_detail.html'
+ @memoized.memoized_method
def get_object(self):
- if not hasattr(self, "_object"):
- try:
- self._object = api.swift.swift_get_object(
- self.request,
- self.kwargs["container_name"],
- self.kwargs["object_path"],
- with_data=False)
- except Exception:
- redirect = reverse("horizon:project:containers:index")
- exceptions.handle(self.request,
- _('Unable to retrieve details.'),
- redirect=redirect)
- return self._object
+ try:
+ return api.swift.swift_get_object(
+ self.request,
+ self.kwargs["container_name"],
+ self.kwargs["object_path"],
+ with_data=False)
+ except Exception:
+ redirect = reverse("horizon:project:containers:index")
+ exceptions.handle(self.request,
+ _('Unable to retrieve details.'),
+ redirect=redirect)
def get_context_data(self, **kwargs):
context = super(ObjectDetailView, self).get_context_data(**kwargs)