[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">&lt;&lt;</a>' % (date_number - 100)
+    next_year_text = '<a href="/indice/%%(metatag)d/%d">&gt;&gt;</a>' % (date_number + 100)
+    prev_month_text = '<a href="/indice/%%(metatag)d/%d">&lt;</a>' % ((date_number - 1)
+                                                                       if month > 1
+                                                                       else (date_number - 89))
+    next_month_text = '<a href="/indice/%%(metatag)d/%d">&gt;</a>' % ((date_number + 1)
+                                                                       if month < 12
+                                                                       else (date_number + 89))
+    if yearmon_min > prev_y:
+        data.update({ 'prev_year':   "&lt;&lt;",
+                      'prev_month': (prev_month_text
+                                     if yearmon_min < orig_date
+                                     else "&lt;") })
+    else:
+        data.update({ 'prev_month': prev_month_text,
+                      'prev_year': ("&lt;&lt;"
+                                    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':   "&gt;&gt;",
+                      'next_month': ("&gt;"
+                                     if yearmon_max <= orig_date
+                                     else next_month_text) })
+    else:
+        data.update({ 'next_month': next_month_text,
+                      'next_year': ("&gt;&gt;"
+                                    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