[cpif] r41 - in trunk: backend frontend-web

svn at argo.es svn at argo.es
Fri May 11 17:32:36 CEST 2007


Author: jcea
Date: Fri May 11 17:32:35 2007
New Revision: 41

Log:


Modified:
   trunk/backend/database.py
   trunk/frontend-web/init.py
   trunk/frontend-web/servidor_web.py

Modified: trunk/backend/database.py
==============================================================================
--- trunk/backend/database.py	(original)
+++ trunk/backend/database.py	Fri May 11 17:32:35 2007
@@ -1,7 +1,7 @@
 # $Id$
 
 
-VERSION_DB="2007050901"
+VERSION_DB="2007051101"
 
 
 def normaliza_nick(nick) :
@@ -66,7 +66,8 @@
                         "TS ultima entrada":0,
                         "num mensajes":0,
                         "mensajes":BTree(),
-                        "datos":datos})
+                        "datos":datos,
+                        "nick":nick})
 
 def usuario_get(conn,nick) :
   root=conn.get_root()

Modified: trunk/frontend-web/init.py
==============================================================================
--- trunk/frontend-web/init.py	(original)
+++ trunk/frontend-web/init.py	Fri May 11 17:32:35 2007
@@ -1,5 +1,7 @@
 # $Id$
 
+"""Inicializacion del frontend web"""
+
 def main() :
   import globales
 

Modified: trunk/frontend-web/servidor_web.py
==============================================================================
--- trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/servidor_web.py	Fri May 11 17:32:35 2007
@@ -9,10 +9,9 @@
     must_stop=False
 
     @monitor
-    def gestion_nuevo_post_POST(conn,self,path) :
+    def gestion_nuevo_post_POST(conn,self,path,usuario) :
       import database
-      usuario=path[-1]
-      hilo=int(path[-2])
+      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)
@@ -20,20 +19,13 @@
       texto=texto.replace("\r","").replace("\n","<br>\r\n")
       import database
       database.mensaje_add(conn,texto,usuario,hilo=hilo)
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>Mensaje publicado</h1>
-<p><a href="/pagina_principal/%s">P&aacute;gina principal</a>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %(usuario))
+      return (302,"/%s" %(usuario), "")
 
     @monitor
-    def gestion_hilo(conn,self,path) :
+    def gestion_hilo(conn,self,path,usuario) :
       import time,database
-      usuario=path[-1]
       root=conn.get_root()
-      hilo_num=int(path[-2])
+      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>"])
@@ -61,7 +53,7 @@
 
 %s
 <hr>
-<p><a href="/pagina_principal/%s">P&aacute;gina principal</a>
+<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>
@@ -73,11 +65,10 @@
 
       
     @monitor
-    def gestion_pagina_principal(conn,self,path) :
+    def gestion_(conn,self,path,usuario) :
       import time,database
       root=conn.get_root()
       hilos=root["hilos"]["hilos"]
-      usuario=path[-1]
       database.actualiza_no_leidos(conn,usuario)
       h=database.listado_hilos_personal(conn,usuario)
       texto=[]
@@ -114,8 +105,7 @@
 </body></html>""" %("\r\n".join(texto),usuario))
 
     @monitor
-    def gestion_nuevo_hilo_POST(conn,self,path) :
-      usuario=path[-1]
+    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)
@@ -124,16 +114,9 @@
       texto=texto.replace("\r","").replace("\n","<br>\r\n")
       import database
       database.mensaje_add(conn,texto,usuario,titulo=titulo)
-      return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>Hilo publicado</h1>
-<p><a href="/pagina_principal/%s">P&aacute;gina principal</a>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %(usuario))
+      return (302,"/%s" %usuario,"")
 
-      
-    def gestion_stop(self,path) :
+    def gestion_stop(self,path,usuario) :
       self.must_stop=True
       return (200,"text/html",
 """
@@ -141,36 +124,35 @@
 <h1>PARAMOS EL SERVICIO!!</h1>
 </body></html>""")
 
-    def gestion_(self,path) :
+    @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>
-<p><li><a href="/elige/Usuario1">Usuario 1</a>
-<p><li><a href="/elige/Usuario2">Usuario 2</a>
+%s
 </ul>
 <p><a href="/stop">Parar la demo</a>
-</body></html>""")
-
-    def gestion_elige(self,path) :
-      usuario=path[1]
-      return (200,"text/html",
-"""
-<html><head></head>
-<body>Hemos elegido al usuario '%s'.
-<p><a href="/pagina_principal/%s">P&aacute;gina principal</a>
-<p><a href="/stop">Parar la demo</a>
-</body></html>""" %(usuario,usuario))
+</body></html>""" %"\r\n".join(texto))
 
     def do_GET(self) :
       try :
         path=self.path.split("/")[1:]
-        resultado=getattr(self,"gestion_"+path[0],None)
-        if resultado :
-          resultado=resultado(path)
+        usuario=path.pop()
+
+        if not usuario :
+          resultado=self.elige_usuario()
         else :
-          resultado=(401,"text/html","La URL introducida es incorrecta")
+          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")
@@ -181,8 +163,12 @@
         print >>sys.stderr,"EXCEPCION:",time.ctime()
         raise
 
-      self.send_response(resultado[0])
-      self.send_header("Content-Type",resultado[1])
+      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])
 



More information about the cpif mailing list