[cpif] r33 - trunk

svn at argo.es svn at argo.es
Wed May 9 17:38:25 CEST 2007


Author: jcea
Date: Wed May  9 17:38:23 2007
New Revision: 33

Log:
Afinamos un poco más la demo...

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

Modified: trunk/TODO
==============================================================================
--- trunk/TODO	(original)
+++ trunk/TODO	Wed May  9 17:38:23 2007
@@ -10,3 +10,9 @@
 
 - 20070426: Compatibilidad Windows de mi backend para Durus.
 
+- 20070509: Ahora que en vez de grabar el ultimo mensaje leido
+  grabamos el primero no visto, la velocidad de calcular los
+  hilos no leidos de un usuario se ha reducido a la mitad.
+  No me preocupo mucho porque eso hay que refactorizarlo
+  en el futuro, pero dejo nota para que no se nos olvide.
+

Modified: trunk/database.py
==============================================================================
--- trunk/database.py	(original)
+++ trunk/database.py	Wed May  9 17:38:23 2007
@@ -1,7 +1,7 @@
 # $Id$
 
 
-VERSION_DB="2007050301"
+VERSION_DB="2007050901"
 
 
 def normaliza_nick(nick) :
@@ -138,13 +138,15 @@
   posicion_hilos=usuario["punto de lectura"]
 
   last_msg2hilo=root["seguimiento_no_leidos"]["last_msg2hilo"]
+  hilos=root["hilos"]["hilos"]
 
   for last,hilo in last_msg2hilo.items_from(l,closed=False) :
     # Vemos cual es el ultimo leido para ese hilo
     ultimo=posicion_hilos.get(hilo) # Esta es la optimizacion de hilos que todo el mundo ha leido ya...
     if not ultimo : ultimo=punto_de_lectura_global[hilo]
     if ultimo < last : # Este hilo tiene mensajes nuevos...
-      posicion_hilos_no_leidos[hilo]=ultimo # Lo marcamos como pendiente de leer y nos vamos al ultimo que hemos leido
+      # Lo marcamos como pendiente de leer y nos vamos al primero no leido
+      posicion_hilos_no_leidos[hilo]=hilos[hilo]["mensajes"].items_from(ultimo,closed=False).next()[0]
   usuario["ultimo mensaje conocido"]=root["mensajes"]["num_mensajes"]
 
 def listado_hilos_personal(conn,usuario) :

Modified: trunk/demo_web.py
==============================================================================
--- trunk/demo_web.py	(original)
+++ trunk/demo_web.py	Wed May  9 17:38:23 2007
@@ -15,7 +15,7 @@
       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")
+      texto=texto.replace("\r","").replace("\n","<br>\r\n")
       import database
       database.mensaje_add(conn,texto,usuario,hilo=hilo)
       return (200,"text/html",
@@ -73,19 +73,21 @@
     @monitor
     def gestion_pagina_principal(conn,self,path) :
       import time,database
-      hilos=conn.get_root()["hilos"]["hilos"]
+      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=[]
       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,last_msg))
+                       %(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",
@@ -117,7 +119,7 @@
       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","\r\n")
+      texto=texto.replace("\r","").replace("\n","<br>\r\n")
       import database
       database.mensaje_add(conn,texto,usuario,titulo=titulo)
       return (200,"text/html",



More information about the cpif mailing list