summaryrefslogtreecommitdiff
path: root/scripts/calendar_plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/calendar_plugin.py')
-rw-r--r--scripts/calendar_plugin.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/calendar_plugin.py b/scripts/calendar_plugin.py
new file mode 100644
index 0000000..fdc1283
--- /dev/null
+++ b/scripts/calendar_plugin.py
@@ -0,0 +1,47 @@
+import template
+import plugin
+import string
+import os
+
+import locale
+from datetime import datetime,timedelta
+import jinja2
+import json
+
+class CalendarPlugin:
+ def __init__(self):
+ calpath = os.path.join(template.path, 'calendar.json')
+ with open(calpath, 'r') as calfile:
+ events = json.load(calfile)
+ for event in events:
+ event['start'] = datetime.strptime(event['start'], '%Y-%m-%dT%H:%M:%S')
+ event['end'] = datetime.strptime(event['end'], '%Y-%m-%dT%H:%M:%S')
+ event['multiday'] = (event['end'] - event['start']) > timedelta(days=1)
+ self.events = sorted(events, key=lambda x:x['start'])
+ template_loader = jinja2.FileSystemLoader(searchpath=os.path.join(template.path))
+ self.template_env = jinja2.Environment(loader=template_loader)
+ locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
+
+ def _get_calendar(self):
+ return self.template_env.get_template('calendar.j2').render({
+ 'events': self.events,
+ 'class': 'calendar-main'
+ }).encode('utf-8')
+
+ def _get_calendar_head(self):
+ return self.template_env.get_template('calendar.j2').render({
+ 'events': self.events[:4],
+ 'class': 'calendar-head'
+ }).encode('utf-8')
+
+ def process_content(self, page_content):
+ return_value = {}
+ for filename, content in page_content.iteritems():
+ t = string.Template(content)
+ return_value[filename] = t.safe_substitute(
+ calendar = self._get_calendar(),
+ calendar_head = self._get_calendar_head()
+ )
+ return return_value
+
+plugin.plugin_manager.register(CalendarPlugin())