From bc77b1cd146b109d2d17df55961e8a72d2a6cd17 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Sun, 21 Jul 2024 00:02:46 +0200
Subject: [PATCH] In POST /todo, catch more illegal 'step_filler' values.

---
 plomtask/http.py | 4 ++--
 tests/todos.py   | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/plomtask/http.py b/plomtask/http.py
index cb131e2..bcd6d1c 100644
--- a/plomtask/http.py
+++ b/plomtask/http.py
@@ -644,7 +644,7 @@ class TaskHandler(BaseHTTPRequestHandler):
         is_done = len(self._form_data.get_all_str('done')) > 0
         calendarize = len(self._form_data.get_all_str('calendarize')) > 0
         comment = self._form_data.get_str('comment', ignore_strict=True)
-        for filler in step_fillers:
+        for filler in [f for f in step_fillers if f != 'ignore']:
             target_id: int
             to_int = filler
             for prefix in [p for p in ['make_empty_', 'make_full_']
@@ -659,7 +659,7 @@ class TaskHandler(BaseHTTPRequestHandler):
                 processes_to_make_empty += [target_id]
             elif filler.startswith('make_full_'):
                 processes_to_make_full += [target_id]
-            elif filler != 'ignore':
+            else:
                 adopted_child_ids += [target_id]
         to_remove = []
         for child in todo.children:
diff --git a/tests/todos.py b/tests/todos.py
index 89d9a8c..695d9a7 100644
--- a/tests/todos.py
+++ b/tests/todos.py
@@ -421,6 +421,11 @@ class TestsWithServer(TestCaseWithServer):
         step_proc3 = self._step_as_dict(2, [], 3, 5, True)
         expected['steps_todo_to_process'] = [step_proc2, step_proc3]
         self.check_json_get('/todo?id=1', expected)
+        # test 'ignore' values for 'step_filler' are ignored, and intable
+        # 'step_filler' values are interchangeable with those of 'adopt'
+        todo_post = {'adopt': 5, 'step_filler': ['ignore', 4]}
+        self.check_post(todo_post, '/todo?id=1')
+        self.check_json_get('/todo?id=1', expected)
         # test cannot adopt into non-top-level elements of chain
         self.post_process(4, proc_post)
         self.post_process(3, proc_post | {'new_top_step': 4, 'step_of': [1]})
-- 
2.30.2