31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
from typing import Union
|
|
|
|
from annoying.decorators import render_to
|
|
from django.contrib import messages
|
|
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
|
|
from django.http import HttpRequest, Http404, HttpResponseRedirect, HttpResponse
|
|
|
|
from library.forms import PersonForm
|
|
from library.models import Person
|
|
|
|
|
|
@render_to("library/person-edit-page.html")
|
|
def edit_person(request: HttpRequest, uuid: str) -> Union[dict, HttpResponse]: # noqa
|
|
try:
|
|
person = Person.objects.get(uuid=uuid)
|
|
form = (
|
|
PersonForm(instance=person)
|
|
if request.method == "GET"
|
|
else PersonForm(request.POST, files=request.FILES, instance=person)
|
|
)
|
|
if form.is_valid():
|
|
# Save the form data in the database, automatically saves files
|
|
recorded = form.save(commit=True)
|
|
# Use the messages application to display a message on the next view.
|
|
messages.success(request, f"{recorded} was successfully updated.")
|
|
return HttpResponseRedirect("")
|
|
return {"person": person, "form": form}
|
|
except (ObjectDoesNotExist, MultipleObjectsReturned):
|
|
# Ask Django view system to render the 404 page.
|
|
raise Http404()
|