diff options
Diffstat (limited to 'scripts/calendar_plugin2.py')
-rw-r--r-- | scripts/calendar_plugin2.py | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/scripts/calendar_plugin2.py b/scripts/calendar_plugin2.py deleted file mode 100644 index 62a68aa..0000000 --- a/scripts/calendar_plugin2.py +++ /dev/null @@ -1,124 +0,0 @@ -import template -import plugin -import string -import os - -import locale -from datetime import datetime,timedelta,date -import jinja2 -import json - -class TabularCalendarPlugin: - def __init__(self): - calpath = os.path.join(template.path, 'tabcalendar.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) - events = sorted(events, key=lambda x:x['start']) - - i = 0 - for event in events: - event['id'] = i - i += 1 - - first = events[0]['start'] - last = events[-1]['end'] - - calendar_start = first - timedelta(days=first.weekday()) - if calendar_start.month != first.month: - calendar_start = date(first.year, first.month, 1) - else: - calendar_start = date(calendar_start.year, - calendar_start.month, - calendar_start.day) - calendar_end = last + timedelta(days=6 - last.weekday()) - if calendar_end.month != last.month: - calendar_end = date(last.year,last.month,last.day) - while True: - next_end = calendar_end + timedelta(days=1) - if next_end.month != calendar_end.month: - break - calendar_end = next_end - else: - calendar_end = date(calendar_end.year, - calendar_end.month, - calendar_end.day) - - months = [] - cur_day = calendar_start - active_month = None - active_week = None - today = date.today() - while cur_day <= calendar_end: - cur_month = cur_day.month - cur_week = cur_day.isocalendar()[1] - - if cur_month != active_month: - months.append({ - 'year': cur_day.year, - 'month': cur_day.month, - 'date': date(cur_day.year, cur_day.month, 1), - 'weeks': [[]] - }) - active_week = cur_week - active_month = cur_month - if cur_week != active_week: - months[-1]['weeks'].append([]) - active_week = cur_week - - week_list = months[-1]['weeks'][-1] - week_list.append({ - 'year': cur_day.year, - 'month': cur_day.month, - 'day': cur_day.day, - 'today': cur_day == today, - 'weekday': cur_day.weekday(), - 'events': [] - }) - event_list = week_list[-1]['events'] - day_start = datetime(cur_day.year, cur_day.month, cur_day.day) - day_end = day_start + timedelta(days=1) - - for event in events: - if event['start'] >= day_end \ - or event['end'] <= day_start: - continue - event_list.append(event) - - cur_day += timedelta(days=1) - - self.months = months - self.events = events - 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_tabs(self): - return self.template_env.get_template('tabcalendar.j2').render({ - 'months': self.months, - 'events': self.events, - 'class': 'expanded' - }).encode('utf-8') - - def _get_calendar_events(self): - return self.template_env.get_template('tabcalendar_list.j2').render({ - 'months': self.months, - 'events': self.events, - 'class': 'expanded' - }).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( - tabcalendar_tabs = self._get_calendar_tabs(), - tabcalendar_events = self._get_calendar_events(), - ) - return return_value - -plugin.plugin_manager.register(TabularCalendarPlugin()) |