FallenBirdyForm/app/aviary/views.py
2025-06-10 14:49:08 +02:00

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)