--- ../../../../../src/trac-0.8.4/trac/ModPythonHandler.py	2005-06-17 19:22:32.000000000 +0100
+++ ModPythonHandler.py	2005-08-17 17:14:10.829849635 +0100
@@ -122,14 +122,44 @@
     def get(self, key, default=''):
         return util.FieldStorage.get(self, key, default)
 
+sql_user = "SELECT COUNT(*) FROM ticket WHERE owner='%s' AND status <> 'closed'"
+sql_open = "SELECT COUNT(*) FROM ticket WHERE status <> 'closed'"
+
+class TempRequest:
+    def __init__(self, cgi, base):
+        self.cgi_location = cgi
+        self.base_url = base
+
+def get_tickets(mpr, dir, project):
+    t_mpr = TempRequest(mpr.cgi_location + project, mpr.base_url + project)
+    env_path = os.path.join(dir, project)
+    env = cache_get_environment(env_path, t_mpr)
+    db = env.get_db_cnx()
+    cur = db.cursor()
+    cur.execute(sql_open)
+    t_open = cur.fetchall()[0][0]
+    if (mpr.remote_user):
+            cur.execute(sql_user % mpr.remote_user)
+            t_user = cur.fetchall()[0][0]
+    else:
+            t_user = 0
+    return (t_user, t_open)
 
 def send_project_index(req, mpr, dir):
     req.content_type = 'text/html'
     req.write('<html><head><title>Available Projects</title></head>')
     req.write('<body><h1>Available Projects</h1><ul>')
     for project in os.listdir(dir):
-        req.write('<li><a href="%s">%s</a></li>'
+        (u, o) = get_tickets(mpr, dir, project)
+        req.write('<li><a href="%s">%s</a>'
                   % (href_join(mpr.idx_location, project), project))
+        if o > 0:
+            req.write(': <a href="%s">%d</a> open'
+                  % (href_join(mpr.idx_location, project, 'report', '1'), o))
+        if u > 0:
+            req.write(', <a href="%s">%d</a> yours'
+                  % (href_join(mpr.idx_location, project, 'report', '7'), u))
+        req.write('</li>')
     req.write('</ul></body><html>')
 
 def open_environment(env_path, mpr):
@@ -149,6 +179,17 @@
 env_cache = {}
 env_cache_lock = threading.Lock()
 
+def cache_get_environment(env_path, mpr):
+    env = None
+    try:
+        env_cache_lock.acquire()
+        if not env_path in env_cache:
+            env_cache[env_path] = open_environment(env_path, mpr)
+        env = env_cache[env_path]
+    finally:
+        env_cache_lock.release()
+    return env
+    
 def get_environment(req, mpr):
     global env_cache, env_cache_lock
     options = req.get_options()
@@ -169,15 +210,7 @@
             send_project_index(req, mpr, env_parent_dir)
             return None
         
-    try:
-        env = None
-        env_cache_lock.acquire()
-        if not env_path in env_cache:
-            env_cache[env_path] = open_environment(env_path, mpr)
-        env = env_cache[env_path]
-    finally:
-        env_cache_lock.release()
-    return env
+    return cache_get_environment(env_path, mpr)
 
 def handler(req):
     mpr = ModPythonRequest(req)

