50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from bird.models import FallenBird
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import redirect, render
|
|
|
|
from .forms import AviaryEditForm
|
|
from .models import Aviary
|
|
|
|
|
|
@login_required(login_url="account_login")
|
|
def aviary_all(request):
|
|
aviaries = Aviary.objects.all()
|
|
context = {"aviaries": aviaries}
|
|
return render(request, "aviary/aviary_all.html", context)
|
|
|
|
|
|
@login_required(login_url="account_login")
|
|
def aviary_create(request):
|
|
"""Create a new aviary."""
|
|
form = AviaryEditForm(request.POST or None)
|
|
if request.method == "POST":
|
|
if form.is_valid():
|
|
aviary = form.save(commit=False)
|
|
if request.user.is_authenticated:
|
|
aviary.created_by = request.user
|
|
aviary.save()
|
|
|
|
# Handle different save options
|
|
if 'save_and_add' in request.POST:
|
|
return redirect("aviary_create") # Redirect to create another
|
|
elif 'save_and_continue' in request.POST:
|
|
return redirect("aviary_single", id=aviary.id) # Redirect to edit the created aviary
|
|
else:
|
|
return redirect("aviary_all") # Default: go to list
|
|
|
|
context = {"form": form, "is_create": True}
|
|
return render(request, "aviary/aviary_form.html", context)
|
|
|
|
|
|
@login_required(login_url="account_login")
|
|
def aviary_single(request, id):
|
|
aviary = Aviary.objects.get(id=id)
|
|
birds = FallenBird.objects.filter(aviary_id=id).order_by("created")
|
|
form = AviaryEditForm(request.POST or None, instance=aviary)
|
|
if request.method == "POST":
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect("aviary_all")
|
|
|
|
context = {"aviary": aviary, "birds": birds, "form": form}
|
|
return render(request, "aviary/aviary_single.html", context)
|