- id_ = params.get_int_or_none('id')
- todo = Todo.by_id(conn, id_)
- candidates = Todo.by_date(conn, todo.day.date)
- return self.server.jinja.get_template('todo.html').render(
- todo=todo, candidates=candidates)
-
- def do_GET_process(self, conn: DatabaseConnection,
- params: ParamsParser) -> str:
- """Show process of ?id=."""
- id_ = params.get_int_or_none('id')
- process = Process.by_id(conn, id_, create=True)
- owners = process.used_as_step_by(conn)
- return self.server.jinja.get_template('process.html').render(
- process=process, steps=process.get_steps(conn),
- owners=owners, candidates=Process.all(conn))
-
- def do_GET_processes(self, conn: DatabaseConnection,
- _: ParamsParser) -> str:
+ id_ = self.params.get_int('id')
+ todo = Todo.by_id(self.conn, id_)
+ return {'todo': todo,
+ 'todo_candidates': Todo.by_date(self.conn, todo.date),
+ 'condition_candidates': Condition.all(self.conn)}
+
+ def do_GET_todos(self) -> dict[str, object]:
+ """Show Todos from ?start= to ?end=, of ?process=, ?comment= pattern"""
+ sort_by = self.params.get_str('sort_by')
+ start = self.params.get_str('start')
+ end = self.params.get_str('end')
+ process_id = self.params.get_int_or_none('process_id')
+ comment_pattern = self.params.get_str('comment_pattern')
+ todos = []
+ for t in Todo.matching(self.conn, comment_pattern):
+ # pylint: disable=too-many-boolean-expressions
+ if (start and t.date < start)\
+ or (end and t.date > end)\
+ or (process_id and t.process.id_ != process_id):
+ continue
+ todos += [t]
+ if sort_by == 'doneness':
+ 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':
+ todos.sort(key=lambda t: t.title_then)
+ elif sort_by == '-process':
+ todos.sort(key=lambda t: t.title_then, reverse=True)
+ elif sort_by == 'comment':
+ todos.sort(key=lambda t: t.comment)
+ elif sort_by == '-comment':
+ todos.sort(key=lambda t: t.comment, reverse=True)
+ elif sort_by == '-date':
+ todos.sort(key=lambda t: t.date, reverse=True)
+ else:
+ todos.sort(key=lambda t: t.date)
+ return {'start': start, 'end': end, 'process_id': process_id,
+ 'comment_pattern': comment_pattern, 'todos': todos,
+ 'all_processes': Process.all(self.conn), 'sort_by': sort_by}
+
+ def do_GET_conditions(self) -> dict[str, object]:
+ """Show all Conditions."""
+ pattern = self.params.get_str('pattern')
+ conditions = Condition.matching(self.conn, pattern)
+ sort_by = self.params.get_str('sort_by')
+ if sort_by == 'is_active':
+ conditions.sort(key=lambda c: c.is_active)
+ elif sort_by == '-is_active':
+ conditions.sort(key=lambda c: c.is_active, reverse=True)
+ elif sort_by == '-title':
+ conditions.sort(key=lambda c: c.title.newest, reverse=True)
+ else:
+ conditions.sort(key=lambda c: c.title.newest)
+ return {'conditions': conditions,
+ 'sort_by': sort_by,
+ 'pattern': pattern}
+
+ def do_GET_condition(self) -> dict[str, object]:
+ """Show Condition of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ return {'condition': Condition.by_id(self.conn, id_, create=True)}
+
+ def do_GET_condition_titles(self) -> dict[str, object]:
+ """Show title history of Condition of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ condition = Condition.by_id(self.conn, id_)
+ return {'condition': condition}
+
+ def do_GET_condition_descriptions(self) -> dict[str, object]:
+ """Show description historys of Condition of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ condition = Condition.by_id(self.conn, id_)
+ return {'condition': condition}
+
+ def do_GET_process(self) -> dict[str, object]:
+ """Show Process of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ process = Process.by_id(self.conn, id_, create=True)
+ return {'process': process,
+ 'steps': process.get_steps(self.conn),
+ 'owners': process.used_as_step_by(self.conn),
+ 'n_todos': len(Todo.by_process_id(self.conn, process.id_)),
+ 'step_candidates': Process.all(self.conn),
+ 'condition_candidates': Condition.all(self.conn)}
+
+ def do_GET_process_titles(self) -> dict[str, object]:
+ """Show title history of Process of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ process = Process.by_id(self.conn, id_)
+ return {'process': process}
+
+ def do_GET_process_descriptions(self) -> dict[str, object]:
+ """Show description historys of Process of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ process = Process.by_id(self.conn, id_)
+ return {'process': process}
+
+ def do_GET_process_efforts(self) -> dict[str, object]:
+ """Show default effort history of Process of ?id=."""
+ id_ = self.params.get_int_or_none('id')
+ process = Process.by_id(self.conn, id_)
+ return {'process': process}
+
+ def do_GET_processes(self) -> dict[str, object]: