diff -ur trac.o/ModPythonHandler.py trac/ModPythonHandler.py
--- trac.o/ModPythonHandler.py	2005-06-17 19:22:32.000000000 +0100
+++ trac/ModPythonHandler.py	2005-08-04 15:50:18.719809216 +0100
@@ -122,14 +122,37 @@
     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'"
+
+def get_tickets(mpr, dir, project):
+    t_env = cache_get_environment(dir + "/" + project, mpr)
+    t_db = t_env.get_db_cnx()
+    t_cur = t_db.cursor()
+    t_cur.execute(sql_open)
+    t_open = t_cur.fetchall()[0][0]
+    if (mpr.remote_user):
+            t_cur.execute(sql_user % mpr.remote_user)
+            t_user = t_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 +172,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 +203,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)

