[cpif] r252 - trunk/frontend-web
svn at argo.es
svn at argo.es
Tue Jul 10 03:14:25 CEST 2007
Author: heimy
Date: Tue Jul 10 03:14:24 2007
New Revision: 252
Log:
Implementacion tentativa de mejoras en el calendario
Modified:
trunk/frontend-web/calendario.py
trunk/frontend-web/url_indice.py
Modified: trunk/frontend-web/calendario.py
==============================================================================
--- trunk/frontend-web/calendario.py (original)
+++ trunk/frontend-web/calendario.py Tue Jul 10 03:14:24 2007
@@ -3,17 +3,62 @@
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>'
+cabecera_mes="""<table>
+ <tr><th colspan="7">%(prev_year)s %(prev_month)s %(month_name)s %(current_year)d %(next_month)s %(next_year)s</th></tr>
+ <tr><th>L</th><th>M</th><th>X</th><th>J</th><th>V</th><th>S</th><th>D</th></tr>"""
def vista_mensual(conn,fecha,usuario,metatag) :
- import calendar
+ from url_indice import fecha_min
+ import calendar, datetime
+
+ orig_date = datetime.date(fecha.year, fecha.month, 1)
month=fecha.month
fecha=(fecha.year,month)
mes=cache_meses.get(fecha)
if not mes :
mes=calendar.Calendar().monthdatescalendar(*fecha)
- texto=[cabecera_mes %(nombres_meses[fecha[1]].capitalize(),fecha[0])]
+ date_number = fecha[0] * 100 + month
+ today = datetime.date.today()
+ yearmon_min = datetime.date(fecha_min.year, fecha_min.month, 1)
+ yearmon_max = datetime.date(today.year, today.month, 1)
+ prev_y, next_y = (datetime.date(fecha[0] - 1, month, 1),
+ datetime.date(fecha[0] + 1, month, 1))
+ data = {
+ "month_name": nombres_meses[fecha[1]].capitalize(),
+ "current_year": fecha[0],
+ }
+ prev_year_text = '<a href="/indice/%%(metatag)d/%d"><<</a>' % (date_number - 100)
+ next_year_text = '<a href="/indice/%%(metatag)d/%d">>></a>' % (date_number + 100)
+ prev_month_text = '<a href="/indice/%%(metatag)d/%d"><</a>' % ((date_number - 1)
+ if month > 1
+ else (date_number - 89))
+ next_month_text = '<a href="/indice/%%(metatag)d/%d">></a>' % ((date_number + 1)
+ if month < 12
+ else (date_number + 89))
+ if yearmon_min > prev_y:
+ data.update({ 'prev_year': "<<",
+ 'prev_month': (prev_month_text
+ if yearmon_min < orig_date
+ else "<") })
+ else:
+ data.update({ 'prev_month': prev_month_text,
+ 'prev_year': ("<<"
+ if yearmon_min.month > prev_y.month
+ else prev_year_text) })
+ print orig_date
+ print yearmon_max
+ if yearmon_max < next_y:
+ data.update({ 'next_year': ">>",
+ 'next_month': (">"
+ if yearmon_max <= orig_date
+ else next_month_text) })
+ else:
+ data.update({ 'next_month': next_month_text,
+ 'next_year': (">>"
+ if yearmon_max.month > next_y.month
+ else next_year_text) })
+
+ texto=[cabecera_mes % data]
while len(mes) :
texto.append("<tr>")
semana=mes.pop(0)
Modified: trunk/frontend-web/url_indice.py
==============================================================================
--- trunk/frontend-web/url_indice.py (original)
+++ trunk/frontend-web/url_indice.py Tue Jul 10 03:14:24 2007
@@ -32,8 +32,16 @@
try :
fecha_max=fecha
fecha=path[2]
- assert len(fecha)==8
- fecha=datetime.date(int(fecha[:4]),int(fecha[4:6]),int(fecha[6:8]))
+ assert len(fecha) == 8 or len(fecha) == 6
+ if len(fecha) == 8:
+ fecha=datetime.date(int(fecha[:4]),int(fecha[4:6]),int(fecha[6:8]))
+ else:
+ yy, mm = int(fecha[:4]), int(fecha[4:6])
+ fecha=(datetime.date(yy, mm + 1, 1) - datetime.timedelta(1)
+ if mm < 12
+ else datetime.date(yy, 12, 31))
+ if fecha > fecha_max and fecha.year == fecha_max.year and fecha.month == fecha_max.month:
+ fecha = fecha_max
if fecha>fecha_max : return None
if fecha<fecha_min : return None
except :
More information about the cpif
mailing list