X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fconditions.py;fp=plomtask%2Fconditions.py;h=8ab4282080b4898f8d08da4e443f8ac3d64131ee;hb=eb16b47ddcaefaeab2f616419ea746cc32346893;hp=a6e9c97c6bdc05acf654ecda21317df1fbe04e85;hpb=31b778276bb7297151f1c90098cc50842c9c138f;p=plomtask diff --git a/plomtask/conditions.py b/plomtask/conditions.py index a6e9c97..8ab4282 100644 --- a/plomtask/conditions.py +++ b/plomtask/conditions.py @@ -40,7 +40,7 @@ class Condition(BaseModel[int]): if self.id_ is None: raise HandledException('cannot remove unsaved item') for item in ('process', 'todo'): - for attr in ('conditions', 'enables', 'disables'): + for attr in ('conditions', 'blockers', 'enables', 'disables'): table_name = f'{item}_{attr}' for _ in db_conn.row_where(table_name, 'condition', self.id_): raise HandledException('cannot remove Condition in use') @@ -50,6 +50,12 @@ class Condition(BaseModel[int]): class ConditionsRelations: """Methods for handling relations to Conditions, for Todo and Process.""" + def __init__(self) -> None: + self.conditions: list[Condition] = [] + self.blockers: list[Condition] = [] + self.enables: list[Condition] = [] + self.disables: list[Condition] = [] + def set_conditions(self, db_conn: DatabaseConnection, ids: list[int], target: str = 'conditions') -> None: """Set self.[target] to Conditions identified by ids.""" @@ -59,6 +65,11 @@ class ConditionsRelations: for id_ in ids: target_list += [Condition.by_id(db_conn, id_)] + def set_blockers(self, db_conn: DatabaseConnection, + ids: list[int]) -> None: + """Set self.enables to Conditions identified by ids.""" + self.set_conditions(db_conn, ids, 'blockers') + def set_enables(self, db_conn: DatabaseConnection, ids: list[int]) -> None: """Set self.enables to Conditions identified by ids."""