def create_cancellation(request, **kwargs): template_name = kwargs.get("template_name", "cancellations/cancellation_form.html") if request.method == 'POST': cancellation_form = CancellationForm(request.POST) if cancellation_form.is_valid(): date = cancellation_form.cleaned_data['date'] if date == "" or not date: date = timezone.now().date() new_cancellation = Cancellation.objects.create( notes=cancellation_form.cleaned_data['notes'], date=date, place=cancellation_form.cleaned_data['place'], ) return HttpResponseRedirect( reverse('cancellations_cancellation_detail', args=[new_cancellation.id] )) else: if not request.user.is_superuser and not request.user.is_staff: cancellation_form.fields['place'].queryset = \ cancellation_form.fields['place'].queryset.filter( administrator=request.user) else: user_places = CancellationPlace.objects.filter( administrator=request.user).count() if user_places == 1: default_place_id = CancellationPlace.objects.filter( administrator=request.user)[0].id cancellation_form = CancellationForm( initial={ 'place': default_place_id, 'date': timezone.now().date(), } ) else: default_place_id = None cancellation_form = CancellationForm( initial={'date': timezone.now().date()}) if request.user.is_staff or request.user.is_superuser: default_place_id = None else: cancellation_form.fields['place'].queryset = \ cancellation_form.fields['place'].queryset.filter( administrator=request.user ) return render_to_response(template_name, { 'cancellation_form': cancellation_form, }, context_instance=RequestContext(request) )
def edit_cancellation(request,id, **kwargs): """ Cancellation editing """ template_name = kwargs.get( "template_name", "cancellations/cancellation_edit.html") cancel = get_object_or_404(Cancellation, pk=id) cancellation_form = CancellationForm() if cancel.place.administrator != request.user and not request.user.is_superuser and not request.user.is_staff: httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)} return HttpResponseForbidden(loader.render_to_string('403.html', context_instance=RequestContext(request), **kwargs), **httpresponse_kwargs ) #If changes have been submitted, enter this block if request.method == 'POST': try: cancellation_id = request.POST.__getitem__('cancellation_id') except: cancellation_id = 0 if not cancellation_id == 0: Cancellation.delete(cancel) return HttpResponseRedirect(reverse('cancellations_manage')) cancellation_form = CancellationForm(request.POST) if not request.user.is_superuser and not request.user.is_staff: cancellation_form.fields['place'].queryset = \ cancellation_form.fields['place'].queryset.filter( administrator=request.user) # Save changes to the database if forms are valid if cancellation_form.is_valid(): cancel.notes = cancellation_form.cleaned_data['notes'] cancel.date = cancellation_form.cleaned_data['date'] cancel.place = cancellation_form.cleaned_data['place'] cancel.save() else: return render_to_response(template_name, { 'cancellation': cancel, 'cancellation_form': cancellation_form, }, context_instance=RequestContext(request)) return HttpResponseRedirect( reverse('cancellations_cancellation_detail', args=[cancel.id] )) #Otherwise, display the page to edit else: cancellation_form = CancellationForm({ 'notes': cancel.notes, 'date': cancel.date, 'place': cancel.place.id, }) if not request.user.is_superuser and not request.user.is_staff: cancellation_form.fields['place'].queryset = \ cancellation_form.fields['place'].queryset.filter( administrator=request.user) return render_to_response(template_name, { 'cancellation': cancel, 'cancellation_form': cancellation_form, }, context_instance=RequestContext(request) )