Which Python modules do I need to install to make this work? I'm on
Debian and I get "ImportError: No module named fcgi".

Thanks,
Daniel Serodio

Matthew Good wrote:
> On Fri, 2006-03-17 at 15:50 -0500, Sean Hussey wrote:
>   
>> Hi everyone,
>>
>> We're thinking of installing separate Trac instances, through
>> InterTrac, to handle different projects, groups, etc.  You know, the
>> way Trac should be run.  :)
>>
>> What we're worried about, however, is I might have tickets in any
>> number of those Trac instances.  Has anybody hacked something together
>> to produce a report based on multiple Trac instances?
>>
>> To start, it could just be "Show me ALL of my tickets."
>>
>> I guess I'll leave it at that so as to not confuse the issue.  Has
>> anybody done this?
>>     
>
> Well, this is a hack I threw together to query all my Trac instances for
> my own tickets.  This is not written to handle different users from the
> same script, but you could use it as a starting point.  It's a WSGI app,
> but it is currently written to use the "fcgi" module for running as a
> FastCGI application.
>
>   
> ------------------------------------------------------------------------
>
> #!/usr/bin/env python
> import os
> import sys
>
> from trac.env import Environment
> from trac.ticket.query import Query
> from trac.ticket.model import Milestone, Ticket
> from trac.web.href import Href
> from trac.util import sorted, format_date
>
> proj_dir = '/var/trac'
> proj_url = 'http://trac.yourhost.com/'
>
> def app(env, start_response):
>     envs = [Environment(os.path.join(proj_dir, proj)) for proj in 
> os.listdir(proj_dir)]
>
>     query_string = "status=new|assigned|reopened&owner=mgood"
>
>     tickets = []
>
>     for proj in os.listdir(proj_dir):
>         env = Environment(os.path.join(proj_dir, proj))
>         env.href = env.abs_href = Href(proj_url + proj)
>         proj_name = env.config.get('project', 'name')
>         query = Query.from_string(env, query_string)
>         query.order = 'priority'
>         query.cols = ['id']
>         for ticket_vals in query.execute():
>             ticket = Ticket(env, ticket_vals['id'])
>             milestone = None
>             if ticket.values.get('milestone'):
>                 try:
>                     milestone = Milestone(env, ticket['milestone'])
>                 except:
>                     pass
>             tickets.append({
>                     'id': ticket.id,
>                     'summary': ticket['summary'],
>                     'project': proj_name,
>                     'milestone': milestone and milestone.name,
>                     'due': milestone and milestone.due,
>                     'time_estimate': ticket.values.get('time_estimate'),
>                     'time_spent': ticket.values.get('time_spent'),
>                     'href': env.href.ticket(ticket.id),
>                     })
>
>     tickets = sorted(tickets, key=lambda t: t['due'] or sys.maxint)
>
>     start_response('200 OK', [('Content-type', 'text/html')])
>     yield '''
>     <html><body>
>     <table>
>      <thead>
>       <tr>
>        <th scope="col">Project</th>
>        <th scope="col">Ticket</th>
>        <th scope="col">Summary</th>
>        <th scope="col">Milestone</th>
>        <th scope="col">Due Date</th>
>        <th scope="col">Time Estimate</th>
>        <th scope="col">Time Spent</th>
>       </tr>
>      </thead>
>      <tbody>
>     '''
>     for t in tickets:
>         yield '<tr>'
>         yield '<td>%s</td>' % t['project']
>         yield '<td><a href="%s">#%s</a></td>' % (t['href'], t['id'])
>         yield '<td>%s</td>' % t['summary']
>         yield '<td>%s</td>' % t['milestone']
>         yield '<td>%s</td>' % (t['due'] and format_date(t['due']) or '')
>         yield '<td>%s</td>' % t['time_estimate']
>         yield '<td>%s</td>' % t['time_spent']
>         yield '</tr>\n'
>
>     yield '</tbody></table></body></html>'
>
> if __name__ == '__main__':
>     from fcgi import WSGIServer
>     WSGIServer(app).run()
>   
_______________________________________________
Trac mailing list
[email protected]
http://lists.edgewall.com/mailman/listinfo/trac

Reply via email to