summaryrefslogtreecommitdiff
path: root/openstack_dashboard/dashboards/project/containers
diff options
context:
space:
mode:
authorRadomir Dopieralski <openstack@sheep.art.pl>2013-10-25 15:23:08 +0200
committerRadomir Dopieralski <openstack@sheep.art.pl>2013-10-29 15:29:25 +0100
commit7b13edb6c28f10d0fdf271fe26534ac16d262563 (patch)
tree66a5481b02454e65ef66e8e43bf572b482621f55 /openstack_dashboard/dashboards/project/containers
parent73919f6235e67cca87327b7e4ccabcb3589aefcb (diff)
downloadhorizon-7b13edb6c28f10d0fdf271fe26534ac16d262563.tar.gz
Use a @cached_property decorator
Instead of using an ugly code that uses __dict__ or hasattr, use a @cached_property decorator that encapsulates the property caching logic in a single place and makes it easier to later replace with better caching techniques. Re-use the cached_property from django. Change-Id: I9e3e26cd4a8c7055854e851bc5f062a29981971e
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 c063db28a..d1ac13d08 100644
--- a/openstack_dashboard/dashboards/project/containers/views.py
+++ b/openstack_dashboard/dashboards/project/containers/views.py
@@ -24,6 +24,7 @@ Views for managing Swift containers.
from django.core.urlresolvers import reverse # noqa
from django import http
+from django.utils.functional import cached_property # noqa
from django.utils.translation import ugettext_lazy as _ # noqa
from django.views import generic
@@ -58,36 +59,34 @@ class ContainerView(browsers.ResourceBrowserView):
exceptions.handle(self.request, msg)
return containers
- @property
+ @cached_property
def objects(self):
""" Returns a list of objects given the subfolder's path.
The path is from the kwargs of the request.
"""
- if not hasattr(self, "_objects"):
- objects = []
- self._more = None
- marker = self.request.GET.get('marker', None)
- container_name = self.kwargs['container_name']
- subfolder = self.kwargs['subfolder_path']
- prefix = None
- if container_name:
- self.navigation_selection = True
- if subfolder:
- prefix = subfolder
- try:
- objects, self._more = api.swift.swift_get_objects(
- self.request,
- container_name,
- marker=marker,
- prefix=prefix)
- except Exception:
- self._more = None
- objects = []
- msg = _('Unable to retrieve object list.')
- exceptions.handle(self.request, msg)
- self._objects = objects
- return self._objects
+ objects = []
+ self._more = None
+ marker = self.request.GET.get('marker', None)
+ container_name = self.kwargs['container_name']
+ subfolder = self.kwargs['subfolder_path']
+ prefix = None
+ if container_name:
+ self.navigation_selection = True
+ if subfolder:
+ prefix = subfolder
+ try:
+ objects, self._more = api.swift.swift_get_objects(
+ self.request,
+ container_name,
+ marker=marker,
+ prefix=prefix)
+ except Exception:
+ self._more = None
+ objects = []
+ msg = _('Unable to retrieve object list.')
+ exceptions.handle(self.request, msg)
+ return objects
def is_subdir(self, item):
content_type = "application/pseudo-folder"