From: Christian Heller Date: Thu, 22 Jan 2026 17:30:47 +0000 (+0100) Subject: Handle 404 cases and again re-direct / to /ledger_structured. X-Git-Url: https://plomlompom.com/repos/booking/static/%7B%7Bprefix%7D%7D/%7B%7Bdb.prefix%7D%7D/foo.html?a=commitdiff_plain;h=d5ce5504c1a02e48e217926cad537cc4d7ab5817;p=ledgplom Handle 404 cases and again re-direct / to /ledger_structured. --- diff --git a/src/ledgplom/http.py b/src/ledgplom/http.py index 59da038..b3e9b51 100644 --- a/src/ledgplom/http.py +++ b/src/ledgplom/http.py @@ -115,12 +115,21 @@ class _Handler(PlomHttpHandler): def do_GET(self) -> None: # pylint: disable=invalid-name 'Route GET requests to respective handlers.' + def send_404() -> None: + self.send_http(bytes('page not found', encoding='utf8'), code=404) + + if not self.pagename: + return self.redirect( + Path(f'/{_PREFIX_LEDGER}_{_SUFFIX_STRUCTURED}')) if self.pagename == 'blocks': - self.redirect( - Path('/', _PAGENAME_EDIT_STRUCTURED, self.path_toks[2])) - return + return self.redirect( + Path(f'/{_PAGENAME_EDIT_STRUCTURED}', self.path_toks[2])) ctx: dict[str, Any] = {} + template_names = tuple(str(path.parts[-1]) + for path in PATH_TEMPLATES.iterdir()) if self.pagename.endswith(SUFFIX_JS): + if self.pagename not in template_names: + return send_404() if self.pagename.startswith(_PAGENAME_EDIT_STRUCTURED): block = self.server.ledger.blocks[int(self.path_toks[2])] ctx['raw_gap_lines'] = [dl.raw for dl in block.gap.lines] @@ -135,6 +144,9 @@ class _Handler(PlomHttpHandler): encoding='utf8'), [('Content-Type', 'text/javascript')]) return + template_name = f'{self.pagename}{SUFFIX_HTML}' + if template_name not in template_names: + return send_404() ctx['path'] = self.path ctx['unsaved_changes'] = self.server.ledger.tainted ctx |= render_ctx_on_path(self.server.ledger, self.path_toks[1:])