Author: rjollos
Date: Thu Aug 8 08:57:46 2013
New Revision: 1511625
URL: http://svn.apache.org/r1511625
Log:
`multiproduct.env.ProductEnvironment`: Removed private `_abs_href` attribute,
made unnecessary by use of `lazy` decorator. Refs #595.
Modified:
bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py
bloodhound/trunk/bloodhound_multiproduct/tests/env.py
Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py?rev=1511625&r1=1511624&r2=1511625&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py Thu Aug 8
08:57:46 2013
@@ -542,7 +542,6 @@ class ProductEnvironment(Component, Comp
self.parent = env
self.product = product
self.systeminfo = []
- self._abs_href = None
self.setup_config()
@@ -863,33 +862,32 @@ class ProductEnvironment(Component, Comp
@lazy
def abs_href(self):
"""The application URL"""
- if not self._abs_href:
- if not self.base_url:
- urlpattern = MultiProductSystem(self.parent).product_base_url
- if not urlpattern:
- self.log.warn("product_base_url option not set in "
- "configuration, generated links may be "
- "incorrect")
- urlpattern = 'products/$(prefix)s'
- envname = os.path.basename(self.parent.path)
- prefix = unicode_quote(self.product.prefix, safe="")
- name = unicode_quote(self.product.name, safe="")
- url = urlpattern.replace('$(', '%(') \
- .replace('%(envname)s', envname) \
- .replace('%(prefix)s', prefix) \
- .replace('%(name)s', name)
- if urlsplit(url).netloc:
- # Absolute URLs
- self._abs_href = Href(url)
- else:
- # Relative URLs
- parent_href = Href(self.parent.abs_href(),
- path_safe="/!~*'()%",
- query_safe="!~*'()%")
- self._abs_href = Href(parent_href(url))
+ if not self.base_url:
+ urlpattern = MultiProductSystem(self.parent).product_base_url
+ if not urlpattern:
+ self.log.warn("product_base_url option not set in "
+ "configuration, generated links may be "
+ "incorrect")
+ urlpattern = 'products/$(prefix)s'
+ envname = os.path.basename(self.parent.path)
+ prefix = unicode_quote(self.product.prefix, safe="")
+ name = unicode_quote(self.product.name, safe="")
+ url = urlpattern.replace('$(', '%(') \
+ .replace('%(envname)s', envname) \
+ .replace('%(prefix)s', prefix) \
+ .replace('%(name)s', name)
+ if urlsplit(url).netloc:
+ # Absolute URLs
+ _abs_href = Href(url)
else:
- self._abs_href = Href(self.base_url)
- return self._abs_href
+ # Relative URLs
+ parent_href = Href(self.parent.abs_href(),
+ path_safe="/!~*'()%",
+ query_safe="!~*'()%")
+ _abs_href = Href(parent_href(url))
+ else:
+ _abs_href = Href(self.base_url)
+ return _abs_href
# Multi-product API extensions
Modified: bloodhound/trunk/bloodhound_multiproduct/tests/env.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/tests/env.py?rev=1511625&r1=1511624&r2=1511625&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/tests/env.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/tests/env.py Thu Aug 8 08:57:46
2013
@@ -490,6 +490,10 @@ class ProductEnvApiTestCase(Multiproduct
href = self.product_env.href
self.assertIs(href, self.product_env.href)
+ def test_abs_href_is_lazy(self):
+ abs_href = self.product_env.abs_href
+ self.assertIs(abs_href, self.product_env.abs_href)
+
def test_path(self):
"""Testing env.path"""
self.assertEqual(self.product_env.path,