コード例 #1
0
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)
    )
コード例 #2
0
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)
        )