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,


Reply via email to