working on code
[utils.git] / src / budget_sync / budget_graph.py
1 from bugzilla.bug import Bug
2 from bugzilla import Bugzilla
3 from typing import Set, Dict, Iterable, Optional
4 from budget_sync.util import all_bugs
5 from budget_sync.money import Money
6
7
8 class Node:
9 parent: Optional["Node"]
10 parent_id: Optional[int]
11 budget_excluding_subtasks: Money
12 budget_including_subtasks: Money
13 nlnet_milestone: Optional[str]
14
15 def __init__(self, bug: Bug, bug_set: Set[Bug] = None):
16 self.bug = bug
17 if bug_set is None:
18 bug_set = {bug}
19 self.bug_set = bug_set
20 self.parent = None
21 self.parent_id = getattr(bug, "cf_budget_parent", None)
22 self.budget_excluding_subtasks = Money.from_str(bug.cf_budget)
23 self.budget_including_subtasks = Money.from_str(bug.cf_total_budget)
24 self.nlnet_milestone = bug.cf_nlnet_milestone
25 if self.nlnet_milestone == "---":
26 self.nlnet_milestone = None
27
28
29 class BudgetGraph:
30 nodes: Dict[int, Node]
31
32 def __init__(self, bugs: Iterable[Bug]):
33 self.nodes = {}
34 for bug in bugs:
35 self.nodes[bug.id] = Node(bug)
36 for bug_id, node in self.nodes.items():
37 # if bug.
38 pass