c17a4cbda1
Redirect to dashboard if there are no benefits to edit.
89 lines
3 KiB
Python
89 lines
3 KiB
Python
from django.http import Http404
|
|
from django.shortcuts import render_to_response, redirect, get_object_or_404
|
|
from django.template import RequestContext
|
|
|
|
from django.contrib import messages
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from symposion.sponsorship.forms import SponsorApplicationForm, SponsorDetailsForm, \
|
|
SponsorBenefitsFormSet
|
|
from symposion.sponsorship.models import Sponsor, SponsorBenefit
|
|
|
|
|
|
@login_required
|
|
def sponsor_apply(request):
|
|
if request.method == "POST":
|
|
form = SponsorApplicationForm(request.POST, user=request.user)
|
|
if form.is_valid():
|
|
sponsor = form.save()
|
|
if sponsor.sponsor_benefits.all():
|
|
# Redirect user to sponsor_detail to give extra information.
|
|
messages.success(request, "Thank you for your sponsorship "
|
|
"application. Please update your "
|
|
"benefit details below.")
|
|
return redirect("sponsor_detail", pk=sponsor.pk)
|
|
else:
|
|
messages.success(request, "Thank you for your sponsorship "
|
|
"application.")
|
|
return redirect("dashboard")
|
|
else:
|
|
form = SponsorApplicationForm(user=request.user)
|
|
|
|
return render_to_response("sponsorship/apply.html", {
|
|
"form": form,
|
|
}, context_instance=RequestContext(request))
|
|
|
|
|
|
@login_required
|
|
def sponsor_add(request):
|
|
if not request.user.is_staff:
|
|
raise Http404()
|
|
|
|
if request.method == "POST":
|
|
form = SponsorApplicationForm(request.POST, user=request.user)
|
|
if form.is_valid():
|
|
sponsor = form.save(commit=False)
|
|
sponsor.active = True
|
|
sponsor.save()
|
|
return redirect("sponsor_detail", pk=sponsor.pk)
|
|
else:
|
|
form = SponsorApplicationForm(user=request.user)
|
|
|
|
return render_to_response("sponsorship/add.html", {
|
|
"form": form,
|
|
}, context_instance=RequestContext(request))
|
|
|
|
|
|
@login_required
|
|
def sponsor_detail(request, pk):
|
|
sponsor = get_object_or_404(Sponsor, pk=pk)
|
|
|
|
if sponsor.applicant != request.user:
|
|
return redirect("sponsor_list")
|
|
|
|
formset_kwargs = {
|
|
"instance": sponsor,
|
|
"queryset": SponsorBenefit.objects.filter(active=True)
|
|
}
|
|
|
|
if request.method == "POST":
|
|
|
|
form = SponsorDetailsForm(request.POST, instance=sponsor)
|
|
formset = SponsorBenefitsFormSet(request.POST, request.FILES, **formset_kwargs)
|
|
|
|
if form.is_valid() and formset.is_valid():
|
|
form.save()
|
|
formset.save()
|
|
|
|
messages.success(request, "Sponsorship details have been updated")
|
|
|
|
return redirect("dashboard")
|
|
else:
|
|
form = SponsorDetailsForm(instance=sponsor)
|
|
formset = SponsorBenefitsFormSet(**formset_kwargs)
|
|
|
|
return render_to_response("sponsorship/detail.html", {
|
|
"sponsor": sponsor,
|
|
"form": form,
|
|
"formset": formset,
|
|
}, context_instance=RequestContext(request))
|