Ticket #1877: frontend_v2.patch
| File frontend_v2.patch, 2.8 KB (added by luciano@…, 3 years ago) |
|---|
-
ModPythonHandler.py
old new 122 122 def get(self, key, default=''): 123 123 return util.FieldStorage.get(self, key, default) 124 124 125 sql_user = "SELECT COUNT(*) FROM ticket WHERE owner='%s' AND status <> 'closed'" 126 sql_open = "SELECT COUNT(*) FROM ticket WHERE status <> 'closed'" 127 128 class TempRequest: 129 def __init__(self, cgi, base): 130 self.cgi_location = cgi 131 self.base_url = base 132 133 def get_tickets(mpr, dir, project): 134 t_mpr = TempRequest(mpr.cgi_location + project, mpr.base_url + project) 135 env_path = os.path.join(dir, project) 136 env = cache_get_environment(env_path, t_mpr) 137 db = env.get_db_cnx() 138 cur = db.cursor() 139 cur.execute(sql_open) 140 t_open = cur.fetchall()[0][0] 141 if (mpr.remote_user): 142 cur.execute(sql_user % mpr.remote_user) 143 t_user = cur.fetchall()[0][0] 144 else: 145 t_user = 0 146 return (t_user, t_open) 125 147 126 148 def send_project_index(req, mpr, dir): 127 149 req.content_type = 'text/html' 128 150 req.write('<html><head><title>Available Projects</title></head>') 129 151 req.write('<body><h1>Available Projects</h1><ul>') 130 152 for project in os.listdir(dir): 131 req.write('<li><a href="%s">%s</a></li>' 153 (u, o) = get_tickets(mpr, dir, project) 154 req.write('<li><a href="%s">%s</a>' 132 155 % (href_join(mpr.idx_location, project), project)) 156 if o > 0: 157 req.write(': <a href="%s">%d</a> open' 158 % (href_join(mpr.idx_location, project, 'report', '1'), o)) 159 if u > 0: 160 req.write(', <a href="%s">%d</a> yours' 161 % (href_join(mpr.idx_location, project, 'report', '7'), u)) 162 req.write('</li>') 133 163 req.write('</ul></body><html>') 134 164 135 165 def open_environment(env_path, mpr): … … 149 179 env_cache = {} 150 180 env_cache_lock = threading.Lock() 151 181 182 def cache_get_environment(env_path, mpr): 183 env = None 184 try: 185 env_cache_lock.acquire() 186 if not env_path in env_cache: 187 env_cache[env_path] = open_environment(env_path, mpr) 188 env = env_cache[env_path] 189 finally: 190 env_cache_lock.release() 191 return env 192 152 193 def get_environment(req, mpr): 153 194 global env_cache, env_cache_lock 154 195 options = req.get_options() … … 169 210 send_project_index(req, mpr, env_parent_dir) 170 211 return None 171 212 172 try: 173 env = None 174 env_cache_lock.acquire() 175 if not env_path in env_cache: 176 env_cache[env_path] = open_environment(env_path, mpr) 177 env = env_cache[env_path] 178 finally: 179 env_cache_lock.release() 180 return env 213 return cache_get_environment(env_path, mpr) 181 214 182 215 def handler(req): 183 216 mpr = ModPythonRequest(req)
