home · contact · privacy
To Processes listing, add sortable effort column.
[plomtask] / plomtask / http.py
index 280b0f5cef64c904e5e64dede0f91b2a7cf800f7..249de3286c946464d98c458118c06517206aafb9 100644 (file)
@@ -120,7 +120,8 @@ class TaskHandler(BaseHTTPRequestHandler):
         days = Day.with_filled_gaps(days, start, end)
         for day in days:
             day.collect_calendarized_todos(self.conn)
-        return {'start': start, 'end': end, 'days': days}
+        today = date_in_n_days(0)
+        return {'start': start, 'end': end, 'days': days, 'today': today}
 
     def do_GET_day(self) -> dict[str, object]:
         """Show single Day of ?date=."""
@@ -174,9 +175,9 @@ class TaskHandler(BaseHTTPRequestHandler):
             todos.sort(key=lambda t: t.is_done)
         elif sort_by == '-doneness':
             todos.sort(key=lambda t: t.is_done, reverse=True)
-        elif sort_by == 'process':
+        elif sort_by == 'title':
             todos.sort(key=lambda t: t.title_then)
-        elif sort_by == '-process':
+        elif sort_by == '-title':
             todos.sort(key=lambda t: t.title_then, reverse=True)
         elif sort_by == 'comment':
             todos.sort(key=lambda t: t.comment)
@@ -268,6 +269,10 @@ class TaskHandler(BaseHTTPRequestHandler):
             processes.sort(key=lambda p: len(p.explicit_steps))
         elif sort_by == '-steps':
             processes.sort(key=lambda p: len(p.explicit_steps), reverse=True)
+        elif sort_by == 'effort':
+            processes.sort(key=lambda p: p.effort.newest)
+        elif sort_by == '-effort':
+            processes.sort(key=lambda p: p.effort.newest, reverse=True)
         elif sort_by == '-title':
             processes.sort(key=lambda p: p.title.newest, reverse=True)
         else:
@@ -301,8 +306,8 @@ class TaskHandler(BaseHTTPRequestHandler):
         day = Day.by_id(self.conn, date, create=True)
         day.comment = self.form_data.get_str('day_comment')
         day.save(self.conn)
-        Todo.create_with_children(self.conn, date,
-                                  self.form_data.get_all_int('new_todo'))
+        for process_id in sorted(self.form_data.get_all_int('new_todo')):
+            Todo.create_with_children(self.conn, process_id, date)
         done_ids = self.form_data.get_all_int('done')
         comments = self.form_data.get_all_str('comment')
         efforts = self.form_data.get_all_str('effort')
@@ -378,9 +383,6 @@ class TaskHandler(BaseHTTPRequestHandler):
             if step_id not in self.form_data.get_all_int('steps'):
                 raise BadFormatException('trying to keep unknown step')
         for step_id in self.form_data.get_all_int('steps'):
-            for step_process_id in self.form_data.get_all_int(
-                    f'new_step_to_{step_id}'):
-                steps += [(None, step_process_id, step_id)]
             if step_id not in self.form_data.get_all_int('keep_step'):
                 continue
             step_process_id = self.form_data.get_int(
@@ -388,8 +390,13 @@ class TaskHandler(BaseHTTPRequestHandler):
             parent_id = self.form_data.get_int_or_none(
                     f'step_{step_id}_parent_id')
             steps += [(step_id, step_process_id, parent_id)]
+        for step_id in self.form_data.get_all_int('steps'):
+            for step_process_id in self.form_data.get_all_int(
+                    f'new_step_to_{step_id}'):
+                steps += [(None, step_process_id, step_id)]
         for step_process_id in self.form_data.get_all_int('new_top_step'):
             steps += [(None, step_process_id, None)]
+        process.uncache()
         process.set_steps(self.conn, steps)
         process.save(self.conn)
         return f'/process?id={process.id_}'