# -*- coding: utf-8 -*- import inspect import pkg_resources import re from datetime import datetime from genshi.builder import tag from trac.core import * from trac.config import ExtensionOption from trac.mimeview import Context from trac.util import escape from trac.util.html import html from trac.web.chrome import INavigationContributor from trac.web.api import IRequestHandler, RequestDone from trac.util.translation import _ from trac.ticket.model import Milestone from trac.ticket.roadmap import milestone_stats_data, \ get_tickets_for_milestone, get_ticket_stats, \ ITicketGroupStatsProvider class BugtestManagement(Component): implements(INavigationContributor, IRequestHandler) stats_provider = ExtensionOption('roadmap', 'stats_provider', ITicketGroupStatsProvider, 'DefaultTicketGroupStatsProvider', """Name of the component implementing `ITicketGroupStatsProvider`, which is used to collect statistics on groups of tickets for display in the roadmap views.""") # INavigationContributor methods def get_active_navigation_item(self, req): return 'bugtest' def get_navigation_items(self, req): yield ('mainnav', 'bugtest', html.A('bugtest', href=req.href.bugtest())) # IRequestHandler methods def match_request(self, req): match = re.match(r'/bugtest/?$', req.path_info) if match: return True def process_request(self, req): # variant 1 #tickets = get_tickets_for_milestone(self.env, self.env.get_db_cnx(), "milestone2") #stats = get_ticket_stats(self.stats_provider, tickets) # variant 2 #stats = self.stats_provider.get_ticket_group_stats(ticket_ids) cursor = self.env.get_db_cnx().cursor() cursor.execute("SELECT status, count(status) FROM ticket " "WHERE id IN (3) GROUP BY status") c = "Hello World, " c += '\n'.join(repr(s) for s in cursor.fetchall()) c = str(c) req.send_header('Content-Length', len(c)) req.end_headers() req.write(c) raise RequestDone