todos = [t for t in todos_by_date_range
if comment_pattern in t.comment
and ((not process_id) or t.process.id_ == process_id)]
- 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 == 'title':
- todos.sort(key=lambda t: t.title_then)
- 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)
- 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)
- sort_by = 'title'
+ sort_by = Todo.sort_by(todos, sort_by)
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)
- sort_by = 'title'
+ conditions = Condition.matching(self.conn, pattern)
+ sort_by = Condition.sort_by(conditions, sort_by)
return {'conditions': conditions,
'sort_by': sort_by,
'pattern': pattern}
@_get_item(Process)
def do_GET_process(self, process: Process) -> dict[str, object]:
"""Show Process of ?id=."""
+ owner_ids = self._params.get_all_int('step_to')
+ owned_ids = self._params.get_all_int('has_step')
title_64 = self._params.get_str('title_b64')
if title_64:
title = b64decode(title_64.encode()).decode()
process.title.set(title)
owners = process.used_as_step_by(self.conn)
- for step_id in self._params.get_all_int('step_to'):
+ for step_id in owner_ids:
owners += [Process.by_id(self.conn, step_id)]
preset_top_step = None
- for process_id in self._params.get_all_int('has_step'):
+ for process_id in owned_ids:
preset_top_step = process_id
return {'process': process, 'is_new': process.id_ is None,
'preset_top_step': preset_top_step,
def do_GET_processes(self) -> dict[str, object]:
"""Show all Processes."""
pattern = self._params.get_str('pattern')
- processes = Process.matching(self.conn, pattern)
sort_by = self._params.get_str('sort_by')
- if sort_by == 'steps':
- 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 == 'owners':
- processes.sort(key=lambda p: p.n_owners or 0)
- elif sort_by == '-owners':
- processes.sort(key=lambda p: p.n_owners or 0, 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:
- processes.sort(key=lambda p: p.title.newest)
- sort_by = 'title'
+ processes = Process.matching(self.conn, pattern)
+ sort_by = Process.sort_by(processes, sort_by)
return {'processes': processes, 'sort_by': sort_by, 'pattern': pattern}
# POST handlers