from sqlite3 import Row
from plomtask.db import DatabaseConnection, BaseModel
from plomtask.processes import Process
from sqlite3 import Row
from plomtask.db import DatabaseConnection, BaseModel
from plomtask.processes import Process
from plomtask.conditions import Condition, ConditionsRelations
from plomtask.exceptions import (NotFoundException, BadFormatException,
HandledException)
from plomtask.conditions import Condition, ConditionsRelations
from plomtask.exceptions import (NotFoundException, BadFormatException,
HandledException)
- to_save = ['process_id', 'is_done', 'date']
+ to_save = ['process_id', 'is_done', 'date', 'comment', 'effort',
+ 'calendarize']
to_save_relations = [('todo_conditions', 'todo', 'conditions'),
('todo_enables', 'todo', 'enables'),
('todo_disables', 'todo', 'disables'),
('todo_children', 'parent', 'children'),
('todo_children', 'child', 'parents')]
to_save_relations = [('todo_conditions', 'todo', 'conditions'),
('todo_enables', 'todo', 'enables'),
('todo_disables', 'todo', 'disables'),
('todo_children', 'parent', 'children'),
('todo_children', 'child', 'parents')]
- def __init__(self, id_: int | None, process: Process,
- is_done: bool, date: str) -> None:
+ # pylint: disable=too-many-arguments
+ def __init__(self, id_: int | None,
+ process: Process,
+ is_done: bool,
+ date: str, comment: str = '',
+ effort: None | float = None,
+ calendarize: bool = False) -> None:
self.conditions: list[Condition] = []
self.enables: list[Condition] = []
self.disables: list[Condition] = []
if not self.id_:
self.conditions: list[Condition] = []
self.enables: list[Condition] = []
self.disables: list[Condition] = []
if not self.id_:
self.conditions = self.process.conditions[:]
self.enables = self.process.enables[:]
self.disables = self.process.disables[:]
self.conditions = self.process.conditions[:]
self.enables = self.process.enables[:]
self.disables = self.process.disables[:]
@property
def process_id(self) -> int | str | None:
"""Needed for super().save to save Processes as attributes."""
@property
def process_id(self) -> int | str | None:
"""Needed for super().save to save Processes as attributes."""
- def adopt_from(self, todos: list[Todo]) -> None:
+ @property
+ def title(self) -> VersionedAttribute:
+ """Shortcut to .process.title."""
+ return self.process.title
+
+ def adopt_from(self, todos: list[Todo]) -> bool:
for process_id in self.unsatisfied_dependencies:
for todo in [t for t in todos if t.process.id_ == process_id
and t not in self.children]:
self.add_child(todo)
for process_id in self.unsatisfied_dependencies:
for todo in [t for t in todos if t.process.id_ == process_id
and t not in self.children]:
self.add_child(todo)
def make_missing_children(self, db_conn: DatabaseConnection) -> None:
"""Fill unsatisfied dependencies with new Todos."""
def make_missing_children(self, db_conn: DatabaseConnection) -> None:
"""Fill unsatisfied dependencies with new Todos."""
def remove(self, db_conn: DatabaseConnection) -> None:
"""Remove from DB, including relations."""
def remove(self, db_conn: DatabaseConnection) -> None:
"""Remove from DB, including relations."""
children_to_remove = self.children[:]
parents_to_remove = self.parents[:]
for child in children_to_remove:
children_to_remove = self.children[:]
parents_to_remove = self.parents[:]
for child in children_to_remove: