diff --git a/CHANGELOG.org b/CHANGELOG.org index 04db5eb..c390902 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -17,4 +17,6 @@ Add logic to swap the form with the task via htmx. ** 0.3.1 <2023-07-17 Mon> Add the delete button for a task. +** 0.3.2 <2023-07-20 Thu> + Add the update button for a task. diff --git a/tasks/urls.py b/tasks/urls.py index b1e6c52..413c64a 100644 --- a/tasks/urls.py +++ b/tasks/urls.py @@ -9,6 +9,7 @@ urlpatterns = [ path('', views.index, name='index'), path('htmx/create-task-form/', views.create_task_form, name='create-task-form'), path('htmx/task-item//', views.task_item, name='task-item'), + path('htmx/task-item//update/', views.task_update, name='task-update'), path('htmx/task-item//delete/', views.task_delete, name='task-delete'), ] diff --git a/tasks/views.py b/tasks/views.py index 6ee2a94..bcbbe6c 100644 --- a/tasks/views.py +++ b/tasks/views.py @@ -43,6 +43,22 @@ def task_item(request, id): return render(request, "partials/task_item.html", context) +def task_update(request, id): + task = get_object_or_404(Task, id=id) + task_form = TaskForm(request.POST or None, instance=task) + + if request.method == "POST": + if task_form.is_valid(): + task_form.save() + return redirect("tasks:task-item", id=task.id) + + context = { + 'task': task, + 'task_form': task_form, + } + + return render(request, "partials/task_form.html", context) + def task_delete(request, id): task = get_object_or_404(Task, id=id) diff --git a/templates/partials/task_form.html b/templates/partials/task_form.html index 72f73ea..939a4f9 100644 --- a/templates/partials/task_form.html +++ b/templates/partials/task_form.html @@ -4,6 +4,10 @@
{% csrf_token %} {{ task_form|crispy }} - + {% if task %} + + {% else %} + + {% endif %}
diff --git a/templates/partials/task_item.html b/templates/partials/task_item.html index 0c11d23..8b0e3bb 100644 --- a/templates/partials/task_item.html +++ b/templates/partials/task_item.html @@ -11,6 +11,11 @@

{{ task.name }}

{{ task.description | truncatewords:10 }}

+