[cpif] r43 - in trunk: . backend frontend-web

svn at argo.es svn at argo.es
Sat May 12 12:08:03 CEST 2007


Author: jcea
Date: Sat May 12 12:08:01 2007
New Revision: 43

Log:


Added:
   trunk/frontend-web/url_INVALIDA.py
      - copied, changed from r42, /trunk/frontend-web/url_stop.py
   trunk/frontend-web/url_invalida.py
      - copied unchanged from r42, /trunk/frontend-web/url_stop.py
Removed:
   trunk/demo_web.py
Modified:
   trunk/backend/   (props changed)
   trunk/backend/database.py
   trunk/frontend-web/   (props changed)
   trunk/frontend-web/servidor_web.py
   trunk/frontend-web/url_.py

Modified: trunk/backend/database.py
==============================================================================
--- trunk/backend/database.py	(original)
+++ trunk/backend/database.py	Sat May 12 12:08:01 2007
@@ -1,7 +1,7 @@
 # $Id$
 
 
-VERSION_DB="2007051101"
+VERSION_DB="2007051102"
 
 
 def normaliza_nick(nick) :
@@ -28,6 +28,7 @@
 
     hilos=PersistentDict()
     hilos["hilos"]=BTree()
+    hilos["TS2hilo"]=BTree()
     hilos["num_hilos"]=0
     root["hilos"]=hilos
 
@@ -89,9 +90,10 @@
   mensajes=root["mensajes"]
   seguimiento_no_leidos=root["seguimiento_no_leidos"]
 
+  ts=time.time()
   mensaje=PersistentDict(
              {"texto":texto,
-              "TS":time.time(),
+              "TS":ts,
               "autor":usuario})
 
   mensajes["num_mensajes"]+=1
@@ -104,6 +106,7 @@
     hilo=hilos["hilos"][hilo]
     last=hilo["mensajes"].get_max_item()[0]
     del seguimiento_no_leidos["last_msg2hilo"][last]
+    del hilos["TS2hilo"][hilo["TS"]]
   else : # Empezamos un hilo nuevo
     hilos["num_hilos"]+=1
     h=hilos["num_hilos"]
@@ -112,7 +115,7 @@
     assert titulo
     hilo=PersistentDict(
          {"creador":usuario,
-          "TS creacion":time.time(),
+          "TS creacion":ts,
           "titulo":titulo,
           "num_mensajes":0,
           "mensajes":BTree()})
@@ -124,7 +127,8 @@
 
   hilo["num_mensajes"]+=1
   hilo["mensajes"][num_msg]=mensaje
-  hilo["TS"]=mensaje["TS"]
+  hilo["TS"]=ts
+  hilos["TS2hilo"][ts]=(h,hilo)
 
   usuario=root["usuarios"]["usuarios"][usuario]
   usuario["num mensajes"]+=1
@@ -150,7 +154,7 @@
       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) :
+def listado_hilos_personal(conn,usuario,ts,ts2) :
   root=conn.get_root()
   hilos=root["hilos"]["hilos"]
   usuario=root["usuarios"]["usuarios"][normaliza_nick(usuario)]
@@ -159,11 +163,12 @@
 
   resultado=[]
 
-  for last_msg,hilo in root["seguimiento_no_leidos"]["last_msg2hilo"].items_backward() :
-    if hilo in no_leidos :
-      resultado.append((hilo,hilos[hilo]["titulo"],last_msg,True))
+  for ts,hilo in root["hilos"]["TS2hilo"].items_range(ts,ts2) :
+    hilo_num,hilo=hilo
+    if hilo_num in no_leidos :
+      resultado.append((hilo_num,hilo["titulo"],True))
     else :
-      resultado.append((hilo,hilos[hilo]["titulo"],last_msg,False))
+      resultado.append((hilo_num,hilo["titulo"],False))
 
   return resultado
 

Modified: trunk/frontend-web/servidor_web.py
==============================================================================
--- trunk/frontend-web/servidor_web.py	(original)
+++ trunk/frontend-web/servidor_web.py	Sat May 12 12:08:01 2007
@@ -38,8 +38,8 @@
           resultado=urls.get(path[0],None)
           if resultado :
             resultado=resultado(self,path,usuario)
-          else :
-            resultado=(401,"text/html","La URL introducida es incorrecta")
+          if not resultado : # URL inexistente o verificada como invalida
+            resultado=urls["INVALIDA"](self,path,usuario)
       except :
         self.send_response(500)
         self.send_header("Content-Type","text/plain")
@@ -79,7 +79,9 @@
       nombre=modulo[len("url_"):]
       urls[nombre]=getattr(__import__(modulo),"gestiona_url")
 
+  assert "indice" not in urls
+  urls["indice"]=urls[""]
+
 
 calcula_urls()
 
-print urls

Modified: trunk/frontend-web/url_.py
==============================================================================
--- trunk/frontend-web/url_.py	(original)
+++ trunk/frontend-web/url_.py	Sat May 12 12:08:01 2007
@@ -2,26 +2,56 @@
 
 from globales import monitor
 
+import datetime
+delta_dia=datetime.timedelta(1)
+
 @monitor
 def gestiona_url(conn,handler,path,usuario) :
-  import time,database
+  import time,database,datetime,calendar
+  global delta_dia
+
+  l=len(path)
+  if l>2 : return None
+
+  fecha=datetime.date.today()
+  if l==2 :
+    try :
+      fecha_max=fecha
+      fecha=path[1]
+      assert len(fecha)==8
+      fecha=datetime.date(int(fecha[:4]),int(fecha[4:6]),int(fecha[6:8]))
+      if fecha>fecha_max : return None
+    except :
+      return None
+
+  fecha_max=fecha+delta_dia # Empezamos a listar los hilos escritos desde las 0:00 de "man~ana"
+  def timegm(fecha) :
+    return calendar.timegm((fecha.year,fecha.month,fecha.day,0,0,0,0,0,-1))
+  ts=timegm(fecha_max)
+  ts2=timegm(fecha)
+
   root=conn.get_root()
   hilos=root["hilos"]["hilos"]
   database.actualiza_no_leidos(conn,usuario)
-  h=database.listado_hilos_personal(conn,usuario)
   texto=[]
+  num_hilos=0
   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",
+
+  while num_hilos<50 :
+    texto.append("<div>%s</div>" %time.ctime(ts2))
+    h=database.listado_hilos_personal(conn,usuario,ts,ts2)
+    num_hilos+=len(h)
+    for hilo,titulo,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>

Copied: trunk/frontend-web/url_INVALIDA.py (from r42, /trunk/frontend-web/url_stop.py)
==============================================================================
--- /trunk/frontend-web/url_stop.py	(original)
+++ trunk/frontend-web/url_INVALIDA.py	Sat May 12 12:08:01 2007
@@ -3,11 +3,5 @@
 from globales import monitor
 
 def gestiona_url(handler,path,usuario) :
-  handler.must_stop=True
-
-  return (200,"text/html",
-"""
-<html><head></head><body>
-<h1>PARAMOS EL SERVICIO!!</h1>
-</body></html>""")
+  return (401,"text/html","La URL introducida es incorrecta")
 



More information about the cpif mailing list