views.py:
def calendar(request, calendar, year=False, month=False):
try:
c = Calendar.objects.get(ident=calendar)
except:
raise Http404
linklist = [
{"url": "/calendar", "text": "calendar"},
{"url": "/calendar/" + c.ident, "text": c.name.lower()}]
if year == False:
year = strftime("%Y")
else:
linklist.append({"url": "/calendar/"+c.ident+"/"+year, "text": year})
if month == False:
month = strftime("%m")
else:
linklist.append({"url": "/calendar/"+c.ident+"/"+year+"/"+month, "text": month})
events = Event.objects.filter(time__year=int(year), time__month=int(month), calendar=c)
cal = eventcalendar(events, year, month)
print cal
replaces = {
"linklist": linklist,
"calendar": c,
"cal": cal,
"year": year,
"month": month,
"events": events,
"today": strftime("%e")
}
return rtr("calendar/calendar.html", replaces, request)
def eventcalendar(events, year, month):
grid = monthcalendar(int(year), int(month))
cal = []
for week in grid:
new_week = []
for day in week:
new_week.append({"number":day, "events":events.filter(time__day = day)})
cal.append(new_week)
return cal
calendar.html:
{% block content %}
{{ calendar.name }}
| Monday |
Tuesday |
Wednesday |
Thursday |
Friday |
Saturday |
Sunday |
{% if cal %}{% for week in cal %}
{% for day in week %}
|
{% ifnotequal day.number 0 %}
{%endifnotequal%}
|
{% endfor %}
{% endfor %}{% endif %}
{% endblock %}