Author: rjollos
Date: Tue Aug 27 02:03:36 2013
New Revision: 1517739

URL: http://svn.apache.org/r1517739
Log:
0.8dev: URLs in product widget were incorrect in product URL with subdomains. 
Refs #552.

The query links from the product widget now exclude closed tickets and provide 
a more useful set of default columns. Patch by Olemis.

Modified:
    bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/product.py
    
bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_product.html

Modified: bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/product.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/product.py?rev=1517739&r1=1517738&r2=1517739&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/product.py 
(original)
+++ bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/product.py Tue 
Aug 27 02:03:36 2013
@@ -36,7 +36,6 @@ from trac.ticket.query import Query
 from bhdashboard.util import WidgetBase, check_widget_name, pretty_wrapper
 
 from multiproduct.env import Product, ProductEnvironment
-from multiproduct.hooks import ProductizedHref
 
 
 __metaclass__ = type
@@ -59,9 +58,11 @@ class ProductWidget(WidgetBase):
 
     get_widget_params = pretty_wrapper(get_widget_params, check_widget_name)
 
-    def _get_product_info(self, product, resource, max_):
+    COMMON_QUERY = 'order=priority&status=!closed&col=id&col=summary' \
+                   '&col=owner&col=type&col=status&col=priority&col=product'
+
+    def _get_product_info(self, product, href, resource, max_):
         penv = ProductEnvironment(self.env, product.prefix)
-        href = ProductizedHref(self.env, penv.href.base)
         results = []
 
         # some queries return a list/tuple, some a generator,
@@ -76,9 +77,10 @@ class ProductWidget(WidgetBase):
         for q in itertools.islice(query, max_):
             q.url = href(resource['name'], q.name) \
                 if resource.get('hrefurl') \
-                else Query.from_string(
-                    penv, 'order=priority&%s=%s' %
-                          (resource['name'], q.name)).get_href(href)
+                else Query.from_string(penv,
+                    '%s=%s&%s&col=%s' % (resource['name'], q.name,
+                                         self.COMMON_QUERY, resource['name'])
+            ).get_href(href)
             q.ticket_count = penv.db_query("""
                 SELECT COUNT(*) FROM ticket WHERE ticket.%s='%s'
                 AND ticket.status <> 'closed'
@@ -125,21 +127,24 @@ class ProductWidget(WidgetBase):
         params = ('max', 'cols')
         max_, cols = self.bind_params(name, options, *params)
 
-        if not isinstance(req.perm.env, ProductEnvironment):
+        if not isinstance(self.env, ProductEnvironment):
             for p in Product.select(self.env):
                 if 'PRODUCT_VIEW' in req.perm(Neighborhood('product', 
p.prefix)):
+                    penv = ProductEnvironment(self.env, p.prefix)
+                    phref = ProductEnvironment.resolve_href(penv, self.env)
                     for resource in (
                         {'type': Milestone, 'name': 'milestone', 'hrefurl': 
True},
                         {'type': Component, 'name': 'component'},
                         {'type': Version, 'name': 'version'},
                     ):
                         setattr(p, resource['name'] + 's',
-                                self._get_product_info(p, resource, max_))
+                                self._get_product_info(p, phref, resource, 
max_))
                     p.owner_link = Query.from_string(self.env,
                         'status!=closed&col=id&col=summary&col=owner'
                         '&col=status&col=priority&order=priority'
                         '&group=product&owner=%s' % (p._data['owner'] or '', )
-                    ).get_href(req.href)
+                    ).get_href(phref)
+                    p.href = phref()
                     data.setdefault('product_list', []).append(p)
             title = _('Products')
 

Modified: 
bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_product.html
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_product.html?rev=1517739&r1=1517738&r2=1517739&view=diff
==============================================================================
--- 
bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_product.html
 (original)
+++ 
bloodhound/trunk/bloodhound_dashboard/bhdashboard/widgets/templates/widget_product.html
 Tue Aug 27 02:03:36 2013
@@ -26,7 +26,7 @@
       <div class="span4">
         <div class="well product-well">
           <h4>
-            &#9734; <a href="${req.href.products(p.prefix)}">$p.name 
($p.prefix)</a>
+            &#9734; <a href="${p.href}">$p.name ($p.prefix)</a>
             <py:if test="p.owner_link">
               <br />
               <small>owned by


Reply via email to