diff options
author | Radomir Dopieralski <openstack@sheep.art.pl> | 2013-10-25 15:23:08 +0200 |
---|---|---|
committer | Radomir Dopieralski <openstack@sheep.art.pl> | 2013-10-29 15:29:25 +0100 |
commit | 7b13edb6c28f10d0fdf271fe26534ac16d262563 (patch) | |
tree | 66a5481b02454e65ef66e8e43bf572b482621f55 /openstack_dashboard/dashboards/project/containers | |
parent | 73919f6235e67cca87327b7e4ccabcb3589aefcb (diff) | |
download | horizon-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.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 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" |