summaryrefslogtreecommitdiffstats
path: root/agenda/templatetags/calendartable.py
diff options
context:
space:
mode:
Diffstat (limited to 'agenda/templatetags/calendartable.py')
-rwxr-xr-xagenda/templatetags/calendartable.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/agenda/templatetags/calendartable.py b/agenda/templatetags/calendartable.py
new file mode 100755
index 0000000..0bca5f4
--- /dev/null
+++ b/agenda/templatetags/calendartable.py
@@ -0,0 +1,59 @@
+# Template tag
+from datetime import date, timedelta
+from django import template
+from infopoint.agenda.models import Event # You need to change this if you like to add your own events to the calendar
+
+register = template.Library()
+
+
+from datetime import date, timedelta
+
+def get_last_day_of_month(year, month):
+ if (month == 12):
+ year += 1
+ month = 1
+ else:
+ month += 1
+ return date(year, month, 1) - timedelta(1)
+
+
+def month_cal(year=date.today().year, month=date.today().month):
+
+ event_list = Event.objects.filter(start_date__year=year, start_date__month=month)
+
+ first_day_of_month = date(year, month, 1)
+ last_day_of_month = get_last_day_of_month(year, month)
+ first_day_of_calendar = first_day_of_month - timedelta(first_day_of_month.weekday())
+ last_day_of_calendar = last_day_of_month + timedelta(7 - last_day_of_month.weekday())
+
+ month_cal = []
+ week = []
+ week_headers = []
+
+ i = 0
+ day = first_day_of_calendar
+ while day <= last_day_of_calendar:
+ if i < 7:
+ week_headers.append(day)
+ cal_day = {}
+ cal_day['day'] = day
+ cal_day['event'] = False
+ for event in event_list:
+ if day >= event.start_date.date() and day <= event.end_date.date():
+ cal_day['event'] = True
+ if day.month == month:
+ cal_day['in_month'] = True
+ else:
+ cal_day['in_month'] = False
+ week.append(cal_day)
+ if day.weekday() == 6:
+ month_cal.append(week)
+ week = []
+ i += 1
+ day += timedelta(1)
+
+ return {'calendar': month_cal, 'headers': week_headers}
+
+register.inclusion_tag('agenda/month_cal.html')(month_cal)
+
+