diff options
author | Radomir Dopieralski <openstack@sheep.art.pl> | 2013-10-28 11:24:00 +0100 |
---|---|---|
committer | Radomir Dopieralski <openstack@sheep.art.pl> | 2013-12-18 16:46:30 +0100 |
commit | b7537a8b8155fcf112067eb7d9d12339e280e44f (patch) | |
tree | 7d229ef9cb08f3171f19a6d13d529c3768f2ec51 /openstack_dashboard/dashboards/project/containers | |
parent | 491cda0a1f0fd6bd016b15aa2afbe54ff0318d69 (diff) | |
download | horizon-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.py | 49 |
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) |