Mercurial > public > sg101
diff gpp/gcalendar/views.py @ 1:dbd703f7d63a
Initial import of sg101 stuff from private repository.
author | gremmie |
---|---|
date | Mon, 06 Apr 2009 02:43:12 +0000 |
parents | |
children | f7fbb404241f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/gcalendar/views.py Mon Apr 06 02:43:12 2009 +0000 @@ -0,0 +1,114 @@ +""" +Views for the gcalendar application. +""" + +from django.contrib.auth.decorators import login_required +from django.core.urlresolvers import reverse +from django.http import HttpResponse +from django.http import HttpResponseBadRequest +from django.http import HttpResponseForbidden +from django.http import HttpResponseRedirect +from django.http import Http404 +from django.shortcuts import render_to_response +from django.shortcuts import get_object_or_404 +from django.template import RequestContext + +from gcalendar.forms import EventEntryForm +from gcalendar.models import Event + + +def index(request): + return render_to_response('gcalendar/index.html', { + }, + context_instance = RequestContext(request)) + + +@login_required +def add_event(request): + if request.method == 'POST': + form = EventEntryForm(request.POST) + if form.is_valid(): + event = form.save(commit=False) + event.user = request.user + event.repeat = 'none' + event.save() + return HttpResponseRedirect(reverse('gcalendar-add_thanks')) + else: + form = EventEntryForm() + + return render_to_response('gcalendar/event.html', { + 'title': 'Add Calendar Event', + 'form': form, + }, + context_instance = RequestContext(request)) + + +@login_required +def add_thanks(request): + return render_to_response('gcalendar/thanks_add.html', { + }, + context_instance = RequestContext(request)) + + +@login_required +def edit_events(request): + events = Event.objects.filter(user=request.user, status=Event.ON_CAL).order_by('start_date') + return render_to_response('gcalendar/edit.html', { + 'events': events, + }, + context_instance = RequestContext(request)) + + +@login_required +def edit_event(request, event_id): + event = get_object_or_404(Event, pk=event_id) + if event.user != request.user: + raise Http404 + + if request.method == 'POST': + form = EventEntryForm(request.POST, instance=event) + if form.is_valid(): + event = form.save(commit=False) + event.user = request.user + event.repeat = 'none' + event.status = Event.EDIT_REQ + event.save() + return HttpResponseRedirect(reverse('gcalendar-edit_thanks')) + else: + form = EventEntryForm(instance=event) + + return render_to_response('gcalendar/event.html', { + 'title': 'Change Calendar Event', + 'form': form, + }, + context_instance = RequestContext(request)) + + +@login_required +def edit_thanks(request): + return render_to_response('gcalendar/thanks_edit.html', { + }, + context_instance = RequestContext(request)) + + +def delete_event(request): + """This view marks an event for deletion. It is called via AJAX.""" + if request.user.is_authenticated(): + id = request.POST.get('id', None) + if id is None or not id.isdigit(): + return HttpResponseBadRequest() + try: + event = Event.objects.get(pk=id) + except Event.DoesNotExist: + return HttpResponseBadRequest() + if request.user != event.user: + return HttpResponseForbidden() + + event.status = Event.DEL_REQ + event.save() + return HttpResponse(id) + + return HttpResponseForbidden() + + +# vim: ts=4 sw=4