[cpif] r32 - trunk

svn at argo.es svn at argo.es
Wed May 9 16:15:11 CEST 2007


Author: jcea
Date: Wed May  9 16:15:07 2007
New Revision: 32

Log:
Completamos la demo cpif

Modified:
   trunk/database.py
   trunk/demo_web.py

Modified: trunk/database.py
==============================================================================
--- trunk/database.py	(original)
+++ trunk/database.py	Wed May  9 16:15:07 2007
@@ -123,6 +123,7 @@
 
   hilo["num_mensajes"]+=1
   hilo["mensajes"][num_msg]=mensaje
+  hilo["TS"]=mensaje["TS"]
 
   usuario=root["usuarios"]["usuarios"][usuario]
   usuario["num mensajes"]+=1
@@ -151,16 +152,15 @@
   hilos=root["hilos"]["hilos"]
   usuario=root["usuarios"]["usuarios"][normaliza_nick(usuario)]
 
-  no_leidos=usuario["punto de lectura no leidos"].items()
-  no_leidos.sort(cmp=lambda x,y: cmp(x[1],y[1]))
+  no_leidos=usuario["punto de lectura no leidos"]
 
-  resultado=[(i[0],hilos[i[0]]["titulo"],i[1],True) for i in no_leidos]
-
-  no_leidos=set((i[0] for i in no_leidos))
+  resultado=[]
 
   for last_msg,hilo in root["seguimiento_no_leidos"]["last_msg2hilo"].items_backward() :
-    if hilo in no_leidos : continue # Los ya leidos, ya los tenemos en la estructura
-    resultado.append((hilo,hilos[hilo]["titulo"],last_msg,False))
+    if hilo in no_leidos :
+      resultado.append((hilo,hilos[hilo]["titulo"],last_msg,True))
+    else :
+      resultado.append((hilo,hilos[hilo]["titulo"],last_msg,False))
 
   return resultado
 

Modified: trunk/demo_web.py
==============================================================================
--- trunk/demo_web.py	(original)
+++ trunk/demo_web.py	Wed May  9 16:15:07 2007
@@ -7,21 +7,95 @@
     must_stop=False
 
     @monitor
-    def gestion_pagina_principal(conn,self,path) :
+    def gestion_nuevo_post_POST(conn,self,path) :
+      import database
+      usuario=path[-1]
+      hilo=int(path[-2])
+      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","\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))
+
+    @monitor
+    def gestion_hilo(conn,self,path) :
+      import time,database
+      usuario=path[-1]
+      root=conn.get_root()
+      hilo_num=int(path[-2])
+      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="/pagina_principal/%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_pagina_principal(conn,self,path) :
+      import time,database
+      hilos=conn.get_root()["hilos"]["hilos"]
       usuario=path[-1]
       database.actualiza_no_leidos(conn,usuario)
-      hilos=database.listado_hilos_personal(conn,usuario)
+      h=database.listado_hilos_personal(conn,usuario)
       texto=[]
-      for hilo,titulo,last_msg,no_leido in hilos :
+      estilos=["impar","par"]
+      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("<p><a href='/hilo/%d/%s'>%s</a> - <a href='/hilo/%d/%d/%s'>No leido</a>"
-                       %(hilo,usuario,titulo,hilo,last_msg,usuario))
+          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,last_msg))
         else :
-          texto.append("<p><a href='/hilo/%d/%s'>%s</a>" %(hilo,usuario,titulo))
+          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>
@@ -32,6 +106,7 @@
 <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



More information about the cpif mailing list