From: Christian Heller <c.heller@plomlompom.de> Date: Sun, 26 Jan 2025 11:39:17 +0000 (+0100) Subject: Add structured handling of intro lines. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7Bprefix%7D%7D/%7B%7B%20web_path%20%7D%7D/%7B%7Bprefix%7D%7D/all?a=commitdiff_plain;h=eb0b706bb21d1ac988f2987790bcd759d092041d;p=ledgplom Add structured handling of intro lines. --- diff --git a/ledger.py b/ledger.py index 87f58f5..364ca1f 100755 --- a/ledger.py +++ b/ledger.py @@ -126,14 +126,17 @@ class IntroLine(BookingLine): def __init__(self, booking: 'Booking', code: str) -> None: super().__init__(booking) + self.date = '#' + self.target = '' if code[0].isspace(): self.errors += ['intro line indented'] toks = code.lstrip().split(maxsplit=1) if len(toks) != 2: self.errors += ['illegal number of tokens'] - if len(toks) < 1: + elif len(toks) < 1: return - self.date = '#' + else: + self.target = toks[1] try: dt_date.fromisoformat(toks[0]) except ValueError: @@ -246,8 +249,10 @@ class Handler(PlomHttpHandler): comment = self.postvars.first(f'line_{lineno}_comment') for name in input_names: input_ = self.postvars.first(f'line_{lineno}_{name}') - if name == 'intro': + if name == 'date': data = input_ + elif name == 'target': + data += f' {input_}' elif name == 'error': data = f'{indent}{input_}' elif name == 'account': diff --git a/templates/_macros.tmpl b/templates/_macros.tmpl index 1412c84..dd45db6 100644 --- a/templates/_macros.tmpl +++ b/templates/_macros.tmpl @@ -29,7 +29,8 @@ td.invalid, tr.warning td.invalid { background-color: #ff0000; } </td> {% else %} {% if dat_line.is_intro %} - <td{% if dat_line.error %} class="invalid"{% endif %} colspan=3><a href="/booking/{{dat_line.booking_id}}">{{dat_line.code}}</a></td> + <td{% if dat_line.error %} class="invalid"{% endif %}><a href="/booking/{{dat_line.booking_id}}">{{dat_line.booking_line.date}}</a></td> + <td{% if dat_line.error %} class="invalid"{% endif %} colspan=2>{{dat_line.booking_line.target}}</td> {% elif not dat_line.error %} <td class="amt">{{dat_line.booking_line.amount_short}}</td> <td class="curr">{{dat_line.booking_line.currency|truncate(4,true,"â¦")}}</td> diff --git a/templates/edit_structured.tmpl b/templates/edit_structured.tmpl index 6e13a9a..89919e5 100644 --- a/templates/edit_structured.tmpl +++ b/templates/edit_structured.tmpl @@ -14,7 +14,8 @@ {% for dat_line in dat_lines %} <tr> {% if dat_line.is_intro %} - <td{% if dat_line.error %} class="invalid"{% endif %} colspan=3><input name="line_{{loop.index0}}_intro" value="{{dat_line.code}}"/></td> + <td{% if dat_line.error %} class="invalid"{% endif %}><input name="line_{{loop.index0}}_date" value="{{dat_line.booking_line.date}}" /></td> + <td{% if dat_line.error %} class="invalid"{% endif %} colspan=2><input name="line_{{loop.index0}}_target" value="{{dat_line.booking_line.target}}" /></td> {% elif not dat_line.error %} <td><input name="line_{{loop.index0}}_account" value="{{dat_line.booking_line.account}}" /></td> <td><input name="line_{{loop.index0}}_amount" value="{{dat_line.booking_line.amount or ''}}" /></td>