[cpif] r46 - in trunk: . frontend-web
svn at argo.es
svn at argo.es
Sat May 12 16:27:55 CEST 2007
Author: jcea
Date: Sat May 12 16:27:55 2007
New Revision: 46
Log:
Nos podemos mover por el calendario y listar
los hilos modificados en cada dia.
Added:
trunk/frontend-web/calendario.py
- copied, changed from r43, /trunk/frontend-web/url_stop.py
Modified:
trunk/TODO
trunk/frontend-web/servidor_web.py
trunk/frontend-web/url_.py
Modified: trunk/TODO
==============================================================================
--- trunk/TODO (original)
+++ trunk/TODO Sat May 12 16:27:55 2007
@@ -24,4 +24,9 @@
hay que asegurarse de que no hay valores duplicados (granularidad
del reloj) al introducir valores nuevos.
+- 20070513: FRONTAL WEB: Cuando estamos listando los hilos,
+ vamos revisando dia por dia. Eso es eficiente si todos los dias
+ tienen un hilo modificado. Pero si no es asi, seria mas
+ eficiente saltarse los dias intermedios hasta encontrar el siguiente
+ dia con actividad.
Copied: trunk/frontend-web/calendario.py (from r43, /trunk/frontend-web/url_stop.py)
==============================================================================
--- /trunk/frontend-web/url_stop.py (original)
+++ trunk/frontend-web/calendario.py Sat May 12 16:27:55 2007
@@ -1,13 +1,27 @@
# $Id$
-from globales import monitor
+cache_meses={}
+nombres_meses=["","Enero","Febrero","Marzo","Abril","Mayo","Junio",
+ "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
+cabecera_mes="<table><tr><th colspan=7>%s %d</th></tr>\r\n" \
+ "<tr><th>L</th><th>M</th><th>X</th><th>J</th><th>V</th><th>S</th><th>D</th></tr>"
-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>""")
+def vista_mensual(conn,fecha,usuario) :
+ import calendar
+ fecha=(fecha.year,fecha.month)
+ mes=cache_meses.get(fecha)
+ if not mes :
+ mes=calendar.Calendar().monthdatescalendar(*fecha)
+ texto=[cabecera_mes %(nombres_meses[fecha[1]],fecha[0])]
+ while len(mes) :
+ texto.append("<tr>")
+ semana=mes.pop(0)
+ for i in xrange(7) :
+ dia=semana.pop(0)
+ texto.append("<td align=center><a href='/indice/%d%.2d%.2d/%s'>%s</a></td>"
+ %(dia.year,dia.month,dia.day,"%(usuario)s",dia.day))
+ texto.append("</tr>")
+ mes="".join(texto)
+ cache_meses[fecha]=mes
+ return mes %{"usuario":usuario}
Modified: trunk/frontend-web/servidor_web.py
==============================================================================
--- trunk/frontend-web/servidor_web.py (original)
+++ trunk/frontend-web/servidor_web.py Sat May 12 16:27:55 2007
@@ -77,7 +77,10 @@
if i.startswith("url_") and i.endswith(".py") :
modulo=i[:-len(".py")]
nombre=modulo[len("url_"):]
- urls[nombre]=getattr(__import__(modulo),"gestiona_url")
+ modulo=__import__(modulo)
+ urls[nombre]=getattr(modulo,"gestiona_url")
+ init=getattr(modulo,"init",None)
+ if init : init()
assert "indice" not in urls
urls["indice"]=urls[""]
Modified: trunk/frontend-web/url_.py
==============================================================================
--- trunk/frontend-web/url_.py (original)
+++ trunk/frontend-web/url_.py Sat May 12 16:27:55 2007
@@ -5,6 +5,9 @@
import datetime
delta_dia=datetime.timedelta(1)
+# La fecha del hilo modificado hace mas tiempo
+fecha_min=None
+
@monitor
def gestiona_url(conn,handler,path,usuario) :
import time,database,datetime,calendar
@@ -20,7 +23,9 @@
fecha=path[1]
assert len(fecha)==8
fecha=datetime.date(int(fecha[:4]),int(fecha[4:6]),int(fecha[6:8]))
+ print fecha_min,fecha,fecha_max
if fecha>fecha_max : return None
+ if fecha<fecha_min : return None
except :
return None
@@ -37,7 +42,7 @@
estilos=["impar","par"]
punto_no_leido=root["usuarios"]["usuarios"][database.normaliza_nick(usuario)]["punto de lectura no leidos"]
- while num_hilos<50 :
+ while (num_hilos<50) and (fecha>=fecha_min) :
ts2=timegm(fecha)
texto.append("<div>%s</div>" %time.ctime(ts2))
h=database.listado_hilos_personal(conn,usuario,ts,ts2)
@@ -54,6 +59,8 @@
ts=ts2
fecha-=delta_dia
+ import calendario
+
return(200,"text/html",
"""
<html><head></head><body>
@@ -65,6 +72,8 @@
<h1>Página principal</h1>
%s
<hr>
+%s
+<hr>
<form action="/nuevo_hilo_POST/%s" method="post" enctype="multipart/form-data">
<table>
<tr><td>Título:</td><td><input type="text" name="titulo" size="60" value="" /></td></tr>
@@ -73,5 +82,16 @@
</table>
</form>
<p><a href="/stop/cualquier_usuario">Parar la demo</a>
-</body></html>""" %("\r\n".join(texto),usuario))
+</body></html>""" %("\r\n".join(texto),calendario.vista_mensual(conn,fecha_max,usuario),usuario))
+
+ at monitor
+def init(conn) :
+ import datetime
+ global fecha_min
+
+ TS2hilo=conn.get_root()["hilos"]["TS2hilo"]
+ try :
+ fecha_min=datetime.date.fromtimestamp(TS2hilo.get_min_item()[0])
+ except :
+ fecha_min=datetime.date.today()
More information about the cpif
mailing list