You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by ma...@apache.org on 2013/03/21 10:51:15 UTC
svn commit: r1459207 -
/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py
Author: matevz
Date: Thu Mar 21 09:51:15 2013
New Revision: 1459207
URL: http://svn.apache.org/r1459207
Log:
#325 - Multiproduct UI: Dashboard (milestone adjustments)
Modified:
incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py
Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py?rev=1459207&r1=1459206&r2=1459207&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py (original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_dashboard/bhdashboard/widgets/product.py Thu Mar 21 09:51:15 2013
@@ -26,6 +26,7 @@ Widgets displaying product information (
from trac.util.translation import _
from trac.ticket.model import Milestone
+from trac.ticket.query import Query
from bhdashboard.util import WidgetBase, check_widget_name, pretty_wrapper
@@ -52,28 +53,46 @@ class ProductWidget(WidgetBase):
get_widget_params = pretty_wrapper(get_widget_params, check_widget_name)
def _get_product_milestones(self, req, product, max_):
- milestones = []
+ def new_milestone(env, name, url, ticket_count=None):
+ m = Milestone(env)
+ m.name = name
+ m.url = url
+ m.ticket_count = ticket_count
+ return m
+
penv = ProductEnvironment(self.env, product.prefix)
href = ProductizedHref(self.env, penv.href.base)
- for m in Milestone.select(penv):
+ milestones = []
+
+ mquery = Milestone.select(penv)
+ for m in mquery[:max_]:
m.url = href.milestone(m.name)
m.ticket_count = penv.db_query(
'SELECT count(*) FROM ticket WHERE milestone="%s" '
'AND status <> "closed"' % m.name)[0][0]
milestones.append(m)
- if len(milestones) == max_:
- break
+
+ # add a '(No milestone)' entry if there are tickets
+ # without an assigned milestone in the product
+ ticket_count = penv.db_query(
+ 'SELECT count(*) FROM ticket WHERE milestone="" '
+ 'AND status <> "closed"')[0][0]
+ if ticket_count != 0:
+ milestones.append(new_milestone(penv, _('(No milestone)'),
+ Query.from_string(penv,
+ 'status=!closed&col=id&col=summary&col=owner'
+ '&col=status&col=priority&order=priority&milestone='
+ ).get_href(href),
+ ticket_count))
milestones.sort(key=lambda x: x.ticket_count, reverse=True)
- if len(milestones) == max_:
- m = Milestone(penv)
- m.name = _('... more')
- m.url = href.milestone()
- m.ticket_count = None
- milestones.append(m)
- # TODO: add a (No milestone) to the list, pointing
- # to the tickets (query) without a set milestones
+ # add a link to the milestone list if there are
+ # more than max milestones defined
+ if len(mquery) > max_:
+ milestones.append(new_milestone(penv, _('... more'),
+ href.milestone(), None))
+
return milestones