gremmie@1: """ gremmie@1: Views for the gcalendar application. gremmie@1: """ gremmie@1: gremmie@1: from django.contrib.auth.decorators import login_required gremmie@1: from django.core.urlresolvers import reverse gremmie@1: from django.http import HttpResponse gremmie@1: from django.http import HttpResponseBadRequest gremmie@1: from django.http import HttpResponseForbidden gremmie@1: from django.http import HttpResponseRedirect gremmie@1: from django.http import Http404 gremmie@1: from django.shortcuts import render_to_response gremmie@1: from django.shortcuts import get_object_or_404 gremmie@1: from django.template import RequestContext gremmie@1: gremmie@1: from gcalendar.forms import EventEntryForm gremmie@1: from gcalendar.models import Event gremmie@1: gremmie@1: gremmie@1: def index(request): gremmie@1: return render_to_response('gcalendar/index.html', { gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: @login_required gremmie@1: def add_event(request): gremmie@1: if request.method == 'POST': gremmie@1: form = EventEntryForm(request.POST) gremmie@1: if form.is_valid(): gremmie@1: event = form.save(commit=False) gremmie@1: event.user = request.user gremmie@1: event.repeat = 'none' gremmie@1: event.save() gremmie@1: return HttpResponseRedirect(reverse('gcalendar-add_thanks')) gremmie@1: else: gremmie@1: form = EventEntryForm() gremmie@1: gremmie@1: return render_to_response('gcalendar/event.html', { gremmie@1: 'title': 'Add Calendar Event', gremmie@1: 'form': form, gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: @login_required gremmie@1: def add_thanks(request): gremmie@1: return render_to_response('gcalendar/thanks_add.html', { gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: @login_required gremmie@1: def edit_events(request): gremmie@1: events = Event.objects.filter(user=request.user, status=Event.ON_CAL).order_by('start_date') gremmie@1: return render_to_response('gcalendar/edit.html', { gremmie@1: 'events': events, gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: @login_required gremmie@1: def edit_event(request, event_id): gremmie@1: event = get_object_or_404(Event, pk=event_id) gremmie@1: if event.user != request.user: gremmie@1: raise Http404 gremmie@1: gremmie@1: if request.method == 'POST': gremmie@1: form = EventEntryForm(request.POST, instance=event) gremmie@1: if form.is_valid(): gremmie@1: event = form.save(commit=False) gremmie@1: event.user = request.user gremmie@1: event.repeat = 'none' gremmie@1: event.status = Event.EDIT_REQ gremmie@1: event.save() gremmie@1: return HttpResponseRedirect(reverse('gcalendar-edit_thanks')) gremmie@1: else: gremmie@1: form = EventEntryForm(instance=event) gremmie@1: gremmie@1: return render_to_response('gcalendar/event.html', { gremmie@1: 'title': 'Change Calendar Event', gremmie@1: 'form': form, gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: @login_required gremmie@1: def edit_thanks(request): gremmie@1: return render_to_response('gcalendar/thanks_edit.html', { gremmie@1: }, gremmie@1: context_instance = RequestContext(request)) gremmie@1: gremmie@1: gremmie@1: def delete_event(request): gremmie@1: """This view marks an event for deletion. It is called via AJAX.""" gremmie@1: if request.user.is_authenticated(): gremmie@1: id = request.POST.get('id', None) gremmie@1: if id is None or not id.isdigit(): gremmie@1: return HttpResponseBadRequest() gremmie@1: try: gremmie@1: event = Event.objects.get(pk=id) gremmie@1: except Event.DoesNotExist: gremmie@1: return HttpResponseBadRequest() gremmie@1: if request.user != event.user: gremmie@1: return HttpResponseForbidden() gremmie@1: gremmie@1: event.status = Event.DEL_REQ gremmie@1: event.save() gremmie@1: return HttpResponse(id) gremmie@1: gremmie@1: return HttpResponseForbidden() gremmie@1: gremmie@1: gremmie@1: # vim: ts=4 sw=4