handlers.py
changeset 54 b65a95eb9f6b
parent 53 8103d18907a0
child 55 5667d2bbdc50
--- a/handlers.py	Mon Feb 09 03:05:43 2009 +0200
+++ b/handlers.py	Mon Feb 09 04:39:24 2009 +0200
@@ -2,7 +2,7 @@
     Our URL action handlers
 """
 
-import pytz
+import datetime, calendar, pytz
 
 from qmsk.web import http, template
 
@@ -12,7 +12,7 @@
 
 # load templates from here
 templates = template.TemplateLoader("templates",
-    h               = helpers,
+    _helper_class   = helpers.Helpers,
     urls            = urls,
     channel_list    = channels.channel_list,
 )
@@ -33,8 +33,8 @@
    
     return http.Redirect(urls.channel_view.build(request, channel=channel.id))
 
-@preferences.handler(prefs.Formatter)
-def channel_view (request, channel, count, formatter) :
+@preferences.handler(prefs.Formatter, prefs.Timezone)
+def channel_view (request, channel, count, formatter, timezone) :
     """
         The main channel view page, display the most important info, and all requisite links
     """
@@ -47,6 +47,7 @@
 
     return templates.render_to_response("channel_view",
         req             = request,
+        timezone        = timezone,
         channel         = channel,
         count           = count,
         formatter       = formatter,
@@ -66,12 +67,34 @@
     else :
         raise http.ResponseError("Unknown filetype %r" % format)
 
-def channel_calendar (request, channel) :
+@preferences.handler(prefs.Timezone)
+def channel_calendar (request, channel, year, month, timezone) :
     """
-        Display a list of avilable logs for some days
+        Display a list of avilable logs for some month
     """
 
-    pass
+    # current date as default
+    now = timezone.localize(datetime.datetime.now())
+
+    # target year/month
+    target = timezone.localize(datetime.datetime(
+        year    = year if year else now.year,
+        month   = month if month else now.month,
+        day     = 1
+    ))
+
+    # get set of days available
+    days = channel.source.get_month_days(target)
+
+    # display calendar
+    return templates.render_to_response("channel_calendar",
+        req             = request,
+        timezone        = timezone,
+        channel         = channel,
+        calendar        = calendar.Calendar(),
+        month           = target.date(),
+        days            = days,
+    )
 
 @preferences.handler(prefs.Formatter, prefs.Timezone)
 def channel_date (request, channel, date, formatter, timezone) :
@@ -90,6 +113,7 @@
 
     return templates.render_to_response("channel_date",
         req             = request,
+        timezone        = timezone,
         channel         = channel,
         formatter       = formatter,
         date            = date,