lines += list(block.lines)
return tuple(lines)
- def _calc_accounts(self) -> dict[str, _Account]:
- 'Build mapping of account names to _Accounts.'
+ def _calc_accounts(self, id_: int) -> dict[str, _Account]:
+ 'Map account names to _Accounts, their details only defined until id_.'
accounts: dict[str, _Account] = {}
def ensure_accounts(full_path: str) -> None:
step_name)
parent_path = path
- for dat_line in self._dat_lines:
- for acc_name, desc in dat_line.comment_instructions.items():
- ensure_accounts(acc_name)
- accounts[acc_name].desc = desc
- for block in [b for b in self.blocks if b.booking]:
- assert block.booking is not None
- for acc_name, wealth in block.booking.diffs_targeted.items():
- ensure_accounts(acc_name)
- accounts[acc_name].add_wealth_diff(block.id_, wealth)
+ for block in self.blocks:
+ collect_more_than_names = id_ < 0 or block.id_ <= id_
+ for line in block.lines:
+ for acc_name, desc in line.comment_instructions.items():
+ ensure_accounts(acc_name)
+ if collect_more_than_names:
+ accounts[acc_name].desc = desc
+ if block.booking:
+ for acc_name, wealth in block.booking.diffs_targeted.items():
+ ensure_accounts(acc_name)
+ if collect_more_than_names:
+ accounts[acc_name].add_wealth_diff(block.id_, wealth)
return accounts
def save(self) -> None:
id_ = len(self.blocks) - 1
return {'valid': self._blocks_valid_up_incl(id_),
'block': self.blocks[id_],
- 'roots': sorted([ac for ac in self._calc_accounts().values()
+ 'roots': sorted([ac for ac in self._calc_accounts(id_).values()
if not ac.parent],
key=lambda root: root.basename)}
'booking_lines': ([line.as_dict
for line in block.booking.booking_lines]
if block.booking else tuple())}
- accounts = self._calc_accounts()
+ accounts = self._calc_accounts(id_)
roots: list[dict[str, Any]] = []
for full_path in sorted(block.booking.diffs_targeted.keys()
if block.booking else []):
<tr><td> bar:z -1 USD </td></tr>
<tr></tr><!-- keep the background-color alternation in proper order -->
<tr id="block_4">
- <td rowspan="7" class="block_column">
+ <td rowspan="9" class="block_column">
<input type="submit" name="ledger_moveup_4" value="^">
<br>
<input type="submit" name="ledger_movedown_4" value="v" disabled="">
<br>
<input type="submit" name="ledger_copy_4" value="C">
</td>
- <td rowspan="7" class="block_column critical">
+ <td rowspan="9" class="block_column critical">
[<a href="#block_4">#</a>]<br>
[<a href="/balance/4">b</a>]<br>
[<a href="/edit_raw/4">e</a>]
</td>
</tr>
<tr><td> </td></tr>
+ <tr><td>; #def bar:x bla foo bla </td></tr>
+ <tr><td> </td></tr>
<tr><td>2001-01-03 test </td></tr>
<tr><td> foo:x 10 € </td></tr>
<tr><td> foo:x 3 USD </td></tr>
</tr>
<tr></tr><!-- keep the background-color alternation in proper order -->
<tr id="block_4">
- <td rowspan="7" class="block_column">
+ <td rowspan="9" class="block_column">
<input type="submit" name="ledger_moveup_4" value="^">
<br>
<input type="submit" name="ledger_movedown_4" value="v" disabled="">
<br>
<input type="submit" name="ledger_copy_4" value="C">
</td>
- <td rowspan="7" class="block_column critical">
+ <td rowspan="9" class="block_column critical">
[<a href="#block_4">#</a>]<br>
[<a href="/balance/4">b</a>]<br>
[<a href="/edit_structured/4">e</a>]
<tr>
<td colspan="4"> </td>
</tr>
+ <tr>
+ <td colspan="4">; #def bar:x bla foo bla </td>
+ </tr>
+ <tr>
+ <td colspan="4"> </td>
+ </tr>
<tr>
<td colspan="3">2001-01-03 test</td>
<td></td>