From f841408488437ccb17a37f32fc58259ed203a5bc Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Wed, 21 Jan 2026 15:02:26 -0500 Subject: [PATCH] custom save method implemented in ItemForm(); views & tests updated accordingly (all UTs & FTs passing) --- src/apps/dashboard/forms.py | 4 ++++ src/apps/dashboard/tests/test_forms.py | 9 +++++++++ src/apps/dashboard/views.py | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/apps/dashboard/forms.py b/src/apps/dashboard/forms.py index d227209..ef3206f 100644 --- a/src/apps/dashboard/forms.py +++ b/src/apps/dashboard/forms.py @@ -16,3 +16,7 @@ class ItemForm(forms.models.ModelForm): ), } error_messages = {"text": {"required": EMPTY_ITEM_ERROR}} + + def save(self, for_list): + self.instance.list = for_list + return super().save() diff --git a/src/apps/dashboard/tests/test_forms.py b/src/apps/dashboard/tests/test_forms.py index 93fe4e1..bc06960 100644 --- a/src/apps/dashboard/tests/test_forms.py +++ b/src/apps/dashboard/tests/test_forms.py @@ -1,5 +1,6 @@ from django.test import TestCase from ..forms import EMPTY_ITEM_ERROR, ItemForm +from ..models import Item, List class ItemFormTest(TestCase): def test_form_item_has_placeholder_and_css_classes(self): @@ -16,3 +17,11 @@ class ItemFormTest(TestCase): form = ItemForm(data={"text": ""}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors["text"], [EMPTY_ITEM_ERROR]) + + def test_form_save_handles_saving_to_a_list(self): + mylist = List.objects.create() + form = ItemForm(data={"text": "do re mi"}) + new_item = form.save(for_list=mylist) + self.assertEqual(new_item, Item.objects.get()) + self.assertEqual(new_item.text, "do re mi") + self.assertEqual(new_item.list, mylist) diff --git a/src/apps/dashboard/views.py b/src/apps/dashboard/views.py index cd4503d..d2601b8 100644 --- a/src/apps/dashboard/views.py +++ b/src/apps/dashboard/views.py @@ -22,7 +22,7 @@ def view_list(request, list_id): if request.method == "POST": form = ItemForm(data=request.POST) if form.is_valid(): - Item.objects.create(text=request.POST["text"], list=our_list) + form.save(for_list=our_list) return redirect(our_list) return render(request, 'apps/dashboard/list.html', {'list': our_list, "form": form})