Ben Sturmfels
531a97a3c9
The directory nesting is unnecessary here and confusing to navigate. I've moved all apps to the project subdirectory, currently called "www", but soon to be renamed "conservancy". I've also moved manage.py to the top-level directory.
59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
# from django.views.generic.list_detail import object_list
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.http import Http404, HttpResponse
|
|
from django.shortcuts import render
|
|
from django.template import loader
|
|
|
|
from .models import Event
|
|
|
|
|
|
def event_detail(request, year, slug, queryset, **kwargs):
|
|
"""This view shows event detail.
|
|
|
|
Nothing special, but it is necessary because
|
|
django.views.generic.date_based.object_detail only works with
|
|
slugs that are unique and specified by day, but we make slugs
|
|
unique by year.
|
|
"""
|
|
|
|
try:
|
|
event = queryset.get(date__year=year, slug__exact=slug)
|
|
except ObjectDoesNotExist:
|
|
raise Http404("Event does not exist")
|
|
return render(request, 'events/event_detail.html', {'event': event})
|
|
|
|
def custom_index(request, queryset, *args, **kwargs):
|
|
"""Scrollable index of future and past events, with date index.
|
|
"""
|
|
|
|
future_events = None
|
|
if "page" not in request.GET:
|
|
future_events = Event.future.all().order_by("date")
|
|
|
|
date_list = queryset.dates(kwargs['date_field'], 'year')
|
|
|
|
kwargs = dict(kwargs, extra_context={'date_list': date_list,
|
|
'future_events': future_events})
|
|
del kwargs['date_field']
|
|
del kwargs['allow_future']
|
|
|
|
# return object_list(request, queryset, *args, **kwargs)
|
|
return HttpResponse("FIXME: events must be updated like blog and news.")
|
|
|
|
def future_event_ics(request, queryset, *args, **kwargs):
|
|
"""ICS calendar view of future events
|
|
|
|
This view just renders information into a template that looks like
|
|
an ics file. If in the future we want a 'real' implementation of
|
|
this function, there is a python 'vobject' library that can be
|
|
used. Search google for details, or see
|
|
http://www.technobabble.dk/2008/mar/06/exposing-calendar-events-using-icalendar-django/
|
|
Hopefully at some point this functionality is integrated into
|
|
django.contrib.
|
|
"""
|
|
|
|
future_events = Event.future.all().order_by("date")
|
|
|
|
return HttpResponse(loader.render_to_string('events/calendar.ics',
|
|
{'events': future_events}),
|
|
mimetype='text/calendar')
|