X-Git-Url: https://plomlompom.com/repos/?p=misc;a=blobdiff_plain;f=ledger.py;fp=ledger.py;h=d8b504a74398ce18315a4430b345ac7a1eaf417a;hp=958852aa56b0e747c1c2ad36f78f0d054f255310;hb=2ad9f7785539c0cd9f119d1f22b8057fab348114;hpb=59056f396c4761f9cd7ffbc569e3ddf8994d5e83 diff --git a/ledger.py b/ledger.py index 958852a..d8b504a 100755 --- a/ledger.py +++ b/ledger.py @@ -4,6 +4,7 @@ from datetime import datetime, timedelta from urllib.parse import parse_qs, urlparse from jinja2 import Environment as JinjaEnv, FileSystemLoader as JinjaFSLoader from plomlib import PlomDB, PlomException, run_server, PlomHandler +from os.path import split as path_split db_path = '/home/plom/org/ledger2024.dat' server_port = 8082 @@ -468,6 +469,7 @@ class LedgerDB(PlomDB): date_today = str(datetime.now())[:10] if copy: content.date = date_today + index = -1 elif -1 == index and (content is None or [] == content): content = Booking(date=date_today, validate=False) if 'textarea' == edit_mode and content: @@ -476,7 +478,13 @@ class LedgerDB(PlomDB): for booking in self.bookings: for transfer_line in booking.transfer_lines: accounts.add(transfer_line.account) - return j2env.get_template('edit.html').render(content=content, index=index, error_msg=error_msg, edit_mode=edit_mode, accounts=accounts, adding=(copy or -1 == index)) + return j2env.get_template('edit.html').render( + content=content, + index=index, + error_msg=error_msg, + edit_mode=edit_mode, + accounts=accounts, + adding=-1 == index) def move_up(self, index): return self.move(index, -1) @@ -519,14 +527,15 @@ class LedgerHandler(PlomHandler): db = LedgerDB(prefix, ignore_editable_exceptions=True) index = 0 parsed_url = urlparse(self.path) + site = path_split(parsed_url.path)[1] for string in {'update', 'add', 'check', 'mirror', 'fill_sink', 'textarea', 'table', 'move_up', 'move_down', 'add_taxes', 'replace'}: if string in postvars.keys(): submit_button = string break - if f'{prefix}/ledger' == parsed_url.path and submit_button in {'move_up', 'move_down'}: + if 'ledger' == site and submit_button in {'move_up', 'move_down'}: mover = getattr(db, submit_button) index = mover(int(postvars[submit_button][0])) - elif prefix + '/edit' == parsed_url.path: + elif 'edit' == site: index = int(postvars['index'][0]) edit_mode = postvars['edit_mode'][0] validate = submit_button in {'update', 'add', 'copy', 'check'} @@ -542,7 +551,6 @@ class LedgerHandler(PlomHandler): booking = Booking.from_postvars(postvars, starts_at, validate) if submit_button in {'update', 'add'}: if submit_button == 'update': - # if 'textarea' == edit_mode and 'delete' == ''.join([l.text_line for l in lines]).strip(): if 'textarea' == edit_mode and delete: del db.bookings[index] # if not creating new Booking, and date unchanged, keep it in place @@ -571,7 +579,7 @@ class LedgerHandler(PlomHandler): return db.write_db() index = index if index >= 0 else len(db.bookings) - 1 - self.redirect(prefix + f'/ledger#{index}') + self.redirect('ledger#{index}') def do_GET(self): self.try_do(self.forward_gets) @@ -588,11 +596,12 @@ class LedgerHandler(PlomHandler): self.send_HTML(page) return parsed_url = urlparse(self.path) + site = path_split(parsed_url.path)[1] params = parse_qs(parsed_url.query) - if parsed_url.path == f'{prefix}/balance': + if site == 'balance': stop = params.get('until_after', [None])[0] page = db.balance_as_html(stop) - elif parsed_url.path == f'{prefix}/edit': + elif site == 'edit': index = params.get('i', [-1])[0] copy = params.get('copy', [0])[0] page = db.edit(int(index), copy=bool(copy))