todo/todo/TodoObject.py

40 lines
1.3 KiB
Python

import logging
from typing import Optional
logger = logging.getLogger("TodoObject")
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler())
class TodoObject:
def __init__(self, level, text, parent = None):
self.text: str = text
self.level: int = level
self.parents: list[TodoObject] = []
self.children: list[TodoObject] = []
self.parent: Optional[TodoObject] = parent
if parent is not None:
self.set_parents(parent)
def get_children(self, immediate = False):
output = []
for child in self.children:
if immediate and child.parent is self:
output.append(child)
elif not immediate:
output.append(child)
return output
def set_parents(self, parent):
parent: TodoObject
for p in parent.parents:
logger.debug(f"adding parent '{p.text}' to '{self.text}'")
self.parents.append(p)
logger.debug(f"adding child '{self.text}' to '{p.text}'")
p.children.append(self)
logger.debug(f"adding parent '{parent.text}' to '{self.text}'")
self.parents.append(parent)
logger.debug(f"adding child '{self.text}' to '{parent.text}'")
parent.children.append(self)
self.parent = parent