[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