[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á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ágina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Tí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á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ágina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Tí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á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ágina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Tí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á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ágina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Tí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á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ágina principal</h1>
-%s
-<hr>
-<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
-<table>
-<tr><td>Tí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