annotate gpp/gcalendar/views.py @ 393:9af6bd45c1f8

Another try at #191 after getting some good advice in a django-users thread.
author Brian Neal <bgneal@gmail.com>
date Thu, 24 Mar 2011 00:15:34 +0000
parents f7fbb404241f
children
rev   line source
gremmie@1 1 """
gremmie@1 2 Views for the gcalendar application.
gremmie@1 3 """
gremmie@1 4
gremmie@1 5 from django.contrib.auth.decorators import login_required
gremmie@1 6 from django.core.urlresolvers import reverse
gremmie@1 7 from django.http import HttpResponse
gremmie@1 8 from django.http import HttpResponseBadRequest
gremmie@1 9 from django.http import HttpResponseForbidden
gremmie@1 10 from django.http import HttpResponseRedirect
gremmie@1 11 from django.http import Http404
gremmie@1 12 from django.shortcuts import render_to_response
gremmie@1 13 from django.shortcuts import get_object_or_404
gremmie@1 14 from django.template import RequestContext
gremmie@1 15
gremmie@1 16 from gcalendar.forms import EventEntryForm
gremmie@1 17 from gcalendar.models import Event
gremmie@1 18
gremmie@1 19
gremmie@1 20 def index(request):
bgneal@345 21 user = request.user
bgneal@345 22 if user.is_authenticated():
bgneal@345 23 profile = user.get_profile()
bgneal@345 24 tz = profile.time_zone
bgneal@345 25 else:
bgneal@345 26 tz = 'US/Pacific'
bgneal@345 27
gremmie@1 28 return render_to_response('gcalendar/index.html', {
bgneal@345 29 'tz': tz,
gremmie@1 30 },
gremmie@1 31 context_instance = RequestContext(request))
gremmie@1 32
gremmie@1 33
gremmie@1 34 @login_required
gremmie@1 35 def add_event(request):
gremmie@1 36 if request.method == 'POST':
gremmie@1 37 form = EventEntryForm(request.POST)
gremmie@1 38 if form.is_valid():
gremmie@1 39 event = form.save(commit=False)
gremmie@1 40 event.user = request.user
gremmie@1 41 event.repeat = 'none'
gremmie@1 42 event.save()
gremmie@1 43 return HttpResponseRedirect(reverse('gcalendar-add_thanks'))
gremmie@1 44 else:
gremmie@1 45 form = EventEntryForm()
gremmie@1 46
gremmie@1 47 return render_to_response('gcalendar/event.html', {
gremmie@1 48 'title': 'Add Calendar Event',
gremmie@1 49 'form': form,
gremmie@1 50 },
gremmie@1 51 context_instance = RequestContext(request))
gremmie@1 52
gremmie@1 53
gremmie@1 54 @login_required
gremmie@1 55 def add_thanks(request):
gremmie@1 56 return render_to_response('gcalendar/thanks_add.html', {
gremmie@1 57 },
gremmie@1 58 context_instance = RequestContext(request))
gremmie@1 59
gremmie@1 60
gremmie@1 61 @login_required
gremmie@1 62 def edit_events(request):
gremmie@1 63 events = Event.objects.filter(user=request.user, status=Event.ON_CAL).order_by('start_date')
gremmie@1 64 return render_to_response('gcalendar/edit.html', {
gremmie@1 65 'events': events,
gremmie@1 66 },
gremmie@1 67 context_instance = RequestContext(request))
gremmie@1 68
gremmie@1 69
gremmie@1 70 @login_required
gremmie@1 71 def edit_event(request, event_id):
gremmie@1 72 event = get_object_or_404(Event, pk=event_id)
gremmie@1 73 if event.user != request.user:
gremmie@1 74 raise Http404
gremmie@1 75
gremmie@1 76 if request.method == 'POST':
gremmie@1 77 form = EventEntryForm(request.POST, instance=event)
gremmie@1 78 if form.is_valid():
gremmie@1 79 event = form.save(commit=False)
gremmie@1 80 event.user = request.user
gremmie@1 81 event.repeat = 'none'
gremmie@1 82 event.status = Event.EDIT_REQ
gremmie@1 83 event.save()
gremmie@1 84 return HttpResponseRedirect(reverse('gcalendar-edit_thanks'))
gremmie@1 85 else:
gremmie@1 86 form = EventEntryForm(instance=event)
gremmie@1 87
gremmie@1 88 return render_to_response('gcalendar/event.html', {
gremmie@1 89 'title': 'Change Calendar Event',
gremmie@1 90 'form': form,
gremmie@1 91 },
gremmie@1 92 context_instance = RequestContext(request))
gremmie@1 93
gremmie@1 94
gremmie@1 95 @login_required
gremmie@1 96 def edit_thanks(request):
gremmie@1 97 return render_to_response('gcalendar/thanks_edit.html', {
gremmie@1 98 },
gremmie@1 99 context_instance = RequestContext(request))
gremmie@1 100
gremmie@1 101
gremmie@1 102 def delete_event(request):
gremmie@1 103 """This view marks an event for deletion. It is called via AJAX."""
gremmie@1 104 if request.user.is_authenticated():
gremmie@1 105 id = request.POST.get('id', None)
gremmie@1 106 if id is None or not id.isdigit():
gremmie@1 107 return HttpResponseBadRequest()
gremmie@1 108 try:
gremmie@1 109 event = Event.objects.get(pk=id)
gremmie@1 110 except Event.DoesNotExist:
gremmie@1 111 return HttpResponseBadRequest()
gremmie@1 112 if request.user != event.user:
gremmie@1 113 return HttpResponseForbidden()
gremmie@1 114
gremmie@1 115 event.status = Event.DEL_REQ
gremmie@1 116 event.save()
gremmie@1 117 return HttpResponse(id)
gremmie@1 118
gremmie@1 119 return HttpResponseForbidden()
gremmie@1 120
gremmie@1 121
gremmie@1 122 # vim: ts=4 sw=4