This commit is contained in:
Eden Kirin
2024-05-15 22:56:30 +02:00
parent af61d45fa4
commit 178377cfb6
2 changed files with 39 additions and 15 deletions

View File

@ -1,11 +1,20 @@
from typing import Any
from django.http import Http404
from django.core.handlers.wsgi import WSGIRequest
from django.http import Http404, HttpRequest, HttpResponse
from django.shortcuts import render
from project.main.models import Person
from project.main.views.demo_view_base import DemoViewBase
def get_person(pk: int) -> Person:
try:
return Person.objects.get(pk=pk)
except Person.DoesNotExist:
raise Http404("Person not found")
class TableInlineEditView(DemoViewBase):
template_name = "main/table_inline_edit.html"
active_section = "table-inline-edit"
@ -30,17 +39,29 @@ class TableInlineEditRowView(DemoViewBase):
def get_context_data(self, **kwargs) -> dict[str, Any]:
context_data = super().get_context_data(**kwargs)
try:
person = Person.objects.get(pk=kwargs.get("pk"))
except Person.DoesNotExist:
raise Http404("Person not found")
action = self.request.GET.get("action")
person = get_person(pk=kwargs.get("pk"))
action = self.request.GET.get("action", "edit")
context_data.update(
{
"person": person,
"is_editing": action != "cancel",
"is_editing": action == "edit",
}
)
return context_data
def post(self, request: WSGIRequest, *args, **kwargs) -> HttpResponse:
person = get_person(pk=kwargs.get("pk"))
person.name = request.POST.get("name")
person.address = request.POST.get("address")
person.city = request.POST.get("city")
person.save()
return render(
context={
"person": person,
"is_editing": False,
},
template_name=self.template_name,
request=request,
)