[cpif] r42 - trunk/frontend-web

svn at argo.es svn at argo.es
Fri May 11 18:43:05 CEST 2007


Author: jcea
Date: Fri May 11 18:43:04 2007
New Revision: 42

Log:


Added:
   trunk/frontend-web/url_.py
      - copied, changed from r41, /trunk/frontend-web/servidor_web.py
   trunk/frontend-web/url_hilo.py
      - copied, changed from r41, /trunk/frontend-web/servidor_web.py
   trunk/frontend-web/url_nuevo_hilo_POST.py
      - copied, changed from r41, /trunk/frontend-web/servidor_web.py
   trunk/frontend-web/url_nuevo_post_POST.py
      - copied, changed from r41, /trunk/frontend-web/servidor_web.py
   trunk/frontend-web/url_stop.py
      - copied, changed from r41, /trunk/frontend-web/servidor_web.py
Modified:
   trunk/frontend-web/servidor_web.py

Modified: trunk/frontend-web/servidor_web.py
==============================================================================
--- trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/servidor_web.py	Fri May 11 18:43:04 2007
@@ -2,6 +2,8 @@
 
 from globales import monitor
 
+urls={}
+
 def servidor_web() :
   from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
 
@@ -9,126 +11,10 @@
     must_stop=False
 
     @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-%s
-<hr>
-<p><a href="/%s">P&aacute;gina principal</a>
-<p><form action="/nuevo_post_POST/%s/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-<h1>P&aacute;gina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>T&iacute;tulo:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
-
-    @monitor
     def elige_usuario(conn,self) :
       usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
       texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
+
       return (200,"text/html",
 """
 <html><head></head>
@@ -140,6 +26,7 @@
 </body></html>""" %"\r\n".join(texto))
 
     def do_GET(self) :
+      global urls
       try :
         path=self.path.split("/")[1:]
         usuario=path.pop()
@@ -148,9 +35,9 @@
           resultado=self.elige_usuario()
         else :
           if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
+          resultado=urls.get(path[0],None)
           if resultado :
-            resultado=resultado(path,usuario)
+            resultado=resultado(self,path,usuario)
           else :
             resultado=(401,"text/html","La URL introducida es incorrecta")
       except :
@@ -182,4 +69,17 @@
   httpd=HTTPServer(("",8877),handler)
   httpd.serve_forever()
 
+def calcula_urls() :
+  global urls
+  import os
+
+  for i in os.listdir(os.path.curdir) :
+    if i.startswith("url_") and i.endswith(".py") :
+      modulo=i[:-len(".py")]
+      nombre=modulo[len("url_"):]
+      urls[nombre]=getattr(__import__(modulo),"gestiona_url")
+
+
+calcula_urls()
 
+print urls

Copied: trunk/frontend-web/url_.py (from r41, /trunk/frontend-web/servidor_web.py)
==============================================================================
--- /trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/url_.py	Fri May 11 18:43:04 2007
@@ -2,88 +2,26 @@
 
 from globales import monitor
 
-def servidor_web() :
-  from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-  class handler(BaseHTTPRequestHandler) :
-    must_stop=False
-
-    @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-%s
-<hr>
-<p><a href="/%s">P&aacute;gina principal</a>
-<p><form action="/nuevo_post_POST/%s/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
+ at monitor
+def gestiona_url(conn,handler,path,usuario) :
+  import time,database
+  root=conn.get_root()
+  hilos=root["hilos"]["hilos"]
+  database.actualiza_no_leidos(conn,usuario)
+  h=database.listado_hilos_personal(conn,usuario)
+  texto=[]
+  estilos=["impar","par"]
+  punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
+  for hilo,titulo,last_msg,no_leido in h :
+    estilo=estilos.pop(0)
+    estilos.append(estilo)
+    ts_creacion=time.ctime(hilos[hilo]["TS"])
+    if no_leido :
+      texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
+                   %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
+    else :
+      texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
+  return(200,"text/html",
 """
 <html><head></head><body>
 <style>
@@ -101,85 +39,6 @@
 <tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
 </table>
 </form>
-<p><a href="/stop">Parar la demo</a>
+<p><a href="/stop/cualquier_usuario">Parar la demo</a>
 </body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
-
-    @monitor
-    def elige_usuario(conn,self) :
-      usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
-      texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
-      return (200,"text/html",
-"""
-<html><head></head>
-<body><h1>Elige el usuario</h1>
-<ul>
-%s
-</ul>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %"\r\n".join(texto))
-
-    def do_GET(self) :
-      try :
-        path=self.path.split("/")[1:]
-        usuario=path.pop()
-
-        if not usuario :
-          resultado=self.elige_usuario()
-        else :
-          if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
-          if resultado :
-            resultado=resultado(path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
-      except :
-        self.send_response(500)
-        self.send_header("Content-Type","text/plain")
-        self.end_headers()
-        import traceback
-        self.wfile.write(traceback.format_exc())
-        import sys,time
-        print >>sys.stderr,"EXCEPCION:",time.ctime()
-        raise
-
-      estado=resultado[0]
-      self.send_response(estado)
-      if estado==301 or estado==302 :
-        self.send_header("Location",resultado[1])
-      else :
-        self.send_header("Content-Type",resultado[1])
-      self.end_headers()
-      self.wfile.write(resultado[2])
-
-      if self.must_stop :
-        import os
-        os._exit(os.EX_OK)
-
-    def do_POST(self) :
-      return self.do_GET()
-
-  httpd=HTTPServer(("",8877),handler)
-  httpd.serve_forever()
-
 

Copied: trunk/frontend-web/url_hilo.py (from r41, /trunk/frontend-web/servidor_web.py)
==============================================================================
--- /trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/url_hilo.py	Fri May 11 18:43:04 2007
@@ -2,48 +2,29 @@
 
 from globales import monitor
 
-def servidor_web() :
-  from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+ at monitor
+def gestiona_url(conn,handler,path,usuario) :
+  import time,database
+  root=conn.get_root()
+  hilo_num=int(path[-1])
+  hilo=root["hilos"]["hilos"][hilo_num]
+  texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
+  texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
+
+  u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
+  if hilo_num in u["punto de lectura no leidos"] :
+    del u["punto de lectura no leidos"][hilo_num]
+
+  estilos=["par","impar"]
+  for msg_num,msg in hilo["mensajes"].items() :
+    estilo=estilos.pop(0)
+    estilos.append(estilo)
+    texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
+    texto.append("<p>%s</div>" %msg["texto"])
 
-  class handler(BaseHTTPRequestHandler) :
-    must_stop=False
+  u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
 
-    @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
+  return(200,"text/html",
 """
 <html><head></head><body>
 <style>
@@ -60,126 +41,6 @@
 <tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
 </table>
 </form>
-<p><a href="/stop">Parar la demo</a>
+<p><a href="/stop/cualquier_usuario">Parar la demo</a>
 </body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-<h1>P&aacute;gina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>T&iacute;tulo:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
-
-    @monitor
-    def elige_usuario(conn,self) :
-      usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
-      texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
-      return (200,"text/html",
-"""
-<html><head></head>
-<body><h1>Elige el usuario</h1>
-<ul>
-%s
-</ul>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %"\r\n".join(texto))
-
-    def do_GET(self) :
-      try :
-        path=self.path.split("/")[1:]
-        usuario=path.pop()
-
-        if not usuario :
-          resultado=self.elige_usuario()
-        else :
-          if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
-          if resultado :
-            resultado=resultado(path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
-      except :
-        self.send_response(500)
-        self.send_header("Content-Type","text/plain")
-        self.end_headers()
-        import traceback
-        self.wfile.write(traceback.format_exc())
-        import sys,time
-        print >>sys.stderr,"EXCEPCION:",time.ctime()
-        raise
-
-      estado=resultado[0]
-      self.send_response(estado)
-      if estado==301 or estado==302 :
-        self.send_header("Location",resultado[1])
-      else :
-        self.send_header("Content-Type",resultado[1])
-      self.end_headers()
-      self.wfile.write(resultado[2])
-
-      if self.must_stop :
-        import os
-        os._exit(os.EX_OK)
-
-    def do_POST(self) :
-      return self.do_GET()
-
-  httpd=HTTPServer(("",8877),handler)
-  httpd.serve_forever()
-
 

Copied: trunk/frontend-web/url_nuevo_hilo_POST.py (from r41, /trunk/frontend-web/servidor_web.py)
==============================================================================
--- /trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/url_nuevo_hilo_POST.py	Fri May 11 18:43:04 2007
@@ -2,184 +2,15 @@
 
 from globales import monitor
 
-def servidor_web() :
-  from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-  class handler(BaseHTTPRequestHandler) :
-    must_stop=False
-
-    @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-%s
-<hr>
-<p><a href="/%s">P&aacute;gina principal</a>
-<p><form action="/nuevo_post_POST/%s/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-<h1>P&aacute;gina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>T&iacute;tulo:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
-
-    @monitor
-    def elige_usuario(conn,self) :
-      usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
-      texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
-      return (200,"text/html",
-"""
-<html><head></head>
-<body><h1>Elige el usuario</h1>
-<ul>
-%s
-</ul>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %"\r\n".join(texto))
-
-    def do_GET(self) :
-      try :
-        path=self.path.split("/")[1:]
-        usuario=path.pop()
-
-        if not usuario :
-          resultado=self.elige_usuario()
-        else :
-          if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
-          if resultado :
-            resultado=resultado(path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
-      except :
-        self.send_response(500)
-        self.send_header("Content-Type","text/plain")
-        self.end_headers()
-        import traceback
-        self.wfile.write(traceback.format_exc())
-        import sys,time
-        print >>sys.stderr,"EXCEPCION:",time.ctime()
-        raise
-
-      estado=resultado[0]
-      self.send_response(estado)
-      if estado==301 or estado==302 :
-        self.send_header("Location",resultado[1])
-      else :
-        self.send_header("Content-Type",resultado[1])
-      self.end_headers()
-      self.wfile.write(resultado[2])
-
-      if self.must_stop :
-        import os
-        os._exit(os.EX_OK)
-
-    def do_POST(self) :
-      return self.do_GET()
-
-  httpd=HTTPServer(("",8877),handler)
-  httpd.serve_forever()
-
+ at monitor
+def gestiona_url(conn,handler,path,usuario) :
+  import cgi
+  ctype,pdict=cgi.parse_header(handler.headers.getheader('content-type'))
+  cuerpo=cgi.FieldStorage(fp=handler.rfile,headers=handler.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
+  titulo=cuerpo.getfirst("titulo")
+  texto=cuerpo.getfirst("texto")
+  texto=texto.replace("\r","").replace("\n","<br>\r\n")
+  import database
+  database.mensaje_add(conn,texto,usuario,titulo=titulo)
+  return (302,"/%s" %usuario,"")
 

Copied: trunk/frontend-web/url_nuevo_post_POST.py (from r41, /trunk/frontend-web/servidor_web.py)
==============================================================================
--- /trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/url_nuevo_post_POST.py	Fri May 11 18:43:04 2007
@@ -2,184 +2,16 @@
 
 from globales import monitor
 
-def servidor_web() :
-  from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-
-  class handler(BaseHTTPRequestHandler) :
-    must_stop=False
-
-    @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-%s
-<hr>
-<p><a href="/%s">P&aacute;gina principal</a>
-<p><form action="/nuevo_post_POST/%s/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-<h1>P&aacute;gina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>T&iacute;tulo:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
-
-    @monitor
-    def elige_usuario(conn,self) :
-      usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
-      texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
-      return (200,"text/html",
-"""
-<html><head></head>
-<body><h1>Elige el usuario</h1>
-<ul>
-%s
-</ul>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %"\r\n".join(texto))
-
-    def do_GET(self) :
-      try :
-        path=self.path.split("/")[1:]
-        usuario=path.pop()
-
-        if not usuario :
-          resultado=self.elige_usuario()
-        else :
-          if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
-          if resultado :
-            resultado=resultado(path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
-      except :
-        self.send_response(500)
-        self.send_header("Content-Type","text/plain")
-        self.end_headers()
-        import traceback
-        self.wfile.write(traceback.format_exc())
-        import sys,time
-        print >>sys.stderr,"EXCEPCION:",time.ctime()
-        raise
-
-      estado=resultado[0]
-      self.send_response(estado)
-      if estado==301 or estado==302 :
-        self.send_header("Location",resultado[1])
-      else :
-        self.send_header("Content-Type",resultado[1])
-      self.end_headers()
-      self.wfile.write(resultado[2])
-
-      if self.must_stop :
-        import os
-        os._exit(os.EX_OK)
-
-    def do_POST(self) :
-      return self.do_GET()
-
-  httpd=HTTPServer(("",8877),handler)
-  httpd.serve_forever()
-
+ at monitor
+def gestiona_url(conn,handler,path,usuario) :
+  import database
+  hilo=int(path[-1])
+  import cgi
+  ctype,pdict=cgi.parse_header(handler.headers.getheader('content-type'))
+  cuerpo=cgi.FieldStorage(fp=handler.rfile,headers=handler.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
+  texto=cuerpo.getfirst("texto")
+  texto=texto.replace("\r","").replace("\n","<br>\r\n")
+  import database
+  database.mensaje_add(conn,texto,usuario,hilo=hilo)
+  return (302,"/%s" %(usuario), "")
 

Copied: trunk/frontend-web/url_stop.py (from r41, /trunk/frontend-web/servidor_web.py)
==============================================================================
--- /trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/url_stop.py	Fri May 11 18:43:04 2007
@@ -2,184 +2,12 @@
 
 from globales import monitor
 
-def servidor_web() :
-  from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+def gestiona_url(handler,path,usuario) :
+  handler.must_stop=True
 
-  class handler(BaseHTTPRequestHandler) :
-    must_stop=False
-
-    @monitor
-    def gestion_nuevo_post_POST(conn,self,path,usuario) :
-      import database
-      hilo=int(path[-1])
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (302,"/%s" %(usuario), "")
-
-    @monitor
-    def gestion_hilo(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilo_num=int(path[-1])
-      hilo=root["hilos"]["hilos"][hilo_num]
-      texto=["<h2>Hilo: %s (%s)</h2>" %(hilo["titulo"],hilo["creador"])]
-      texto.extend(["<font size=-2>%s</font>" %time.ctime(hilo["TS creacion"]),"<hr>"])
-
-      u=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]
-      if hilo_num in u["punto de lectura no leidos"] :
-        del u["punto de lectura no leidos"][hilo_num]
-
-      estilos=["par","impar"]
-      for msg_num,msg in hilo["mensajes"].items() :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        texto.append("<div class='%s'><a name='%s'><p>Autor: %s - fecha: %s</a>" %(estilo,msg_num,msg["autor"],time.ctime(msg["TS"])))
-        texto.append("<p>%s</div>" %msg["texto"])
-
-      u["punto de lectura"][hilo_num]=hilo["mensajes"].get_max_item()[0]
-
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-%s
-<hr>
-<p><a href="/%s">P&aacute;gina principal</a>
-<p><form action="/nuevo_post_POST/%s/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo mensaje"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario,hilo_num,usuario))
-
-      
-    @monitor
-    def gestion_(conn,self,path,usuario) :
-      import time,database
-      root=conn.get_root()
-      hilos=root["hilos"]["hilos"]
-      database.actualiza_no_leidos(conn,usuario)
-      h=database.listado_hilos_personal(conn,usuario)
-      texto=[]
-      estilos=["impar","par"]
-      punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
-      for hilo,titulo,last_msg,no_leido in h :
-        estilo=estilos.pop(0)
-        estilos.append(estilo)
-        ts_creacion=time.ctime(hilos[hilo]["TS"])
-        if no_leido :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font> - <a href='/hilo/%d/%s#%d'>No leido</a></div>"
-                       %(estilo,hilo,usuario,titulo,ts_creacion,hilo,usuario,punto_no_leido[hilo]))
-        else :
-          texto.append("<div class='%s'><a href='/hilo/%d/%s'>%s</a> <font size=-2>(%s)</font></div>" %(estilo,hilo,usuario,titulo,ts_creacion))
-      return(200,"text/html",
-"""
-<html><head></head><body>
-<style>
-.par   {background-color: efe}
-.impar {background-color: eef}
-</style>
-
-<h1>P&aacute;gina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>T&iacute;tulo:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
-<tr><td>Texto:</td><td><br><textarea name="texto" rows="10" cols="60"></textarea></td></tr>
-<tr><td colspan=2 align=right><input class="form-element" type="submit" name="submit" value="Publicar nuevo hilo"/></td></tr>
-</table>
-</form>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
-
-    @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path,usuario) :
-      import cgi
-      ctype,pdict=cgi.parse_header(self.headers.getheader('content-type'))
-      cuerpo=cgi.FieldStorage(fp=self.rfile,headers=self.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
-      titulo=cuerpo.getfirst("titulo")
-      texto=cuerpo.getfirst("texto")
-      texto=texto.replace("\r","").replace("\n","<br>\r\n")
-      import database
-      database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (302,"/%s" %usuario,"")
-
-    def gestion_stop(self,path,usuario) :
-      self.must_stop=True
-      return (200,"text/html",
+  return (200,"text/html",
 """
 <html><head></head><body>
 <h1>PARAMOS EL SERVICIO!!</h1>
 </body></html>""")
-
-    @monitor
-    def elige_usuario(conn,self) :
-      usuarios=[i["nick"] for i in conn.get_root()["usuarios"]["usuarios"].values()]
-      texto=["<p><li><a href='/%s'>%s</a>" %(i,i) for i in usuarios]
-      
-      return (200,"text/html",
-"""
-<html><head></head>
-<body><h1>Elige el usuario</h1>
-<ul>
-%s
-</ul>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %"\r\n".join(texto))
-
-    def do_GET(self) :
-      try :
-        path=self.path.split("/")[1:]
-        usuario=path.pop()
-
-        if not usuario :
-          resultado=self.elige_usuario()
-        else :
-          if not len(path) : path=[""]
-          resultado=getattr(self,"gestion_"+path[0],None)
-          if resultado :
-            resultado=resultado(path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
-      except :
-        self.send_response(500)
-        self.send_header("Content-Type","text/plain")
-        self.end_headers()
-        import traceback
-        self.wfile.write(traceback.format_exc())
-        import sys,time
-        print >>sys.stderr,"EXCEPCION:",time.ctime()
-        raise
-
-      estado=resultado[0]
-      self.send_response(estado)
-      if estado==301 or estado==302 :
-        self.send_header("Location",resultado[1])
-      else :
-        self.send_header("Content-Type",resultado[1])
-      self.end_headers()
-      self.wfile.write(resultado[2])
-
-      if self.must_stop :
-        import os
-        os._exit(os.EX_OK)
-
-    def do_POST(self) :
-      return self.do_GET()
-
-  httpd=HTTPServer(("",8877),handler)
-  httpd.serve_forever()
-
 



More information about the cpif mailing list