X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=task.py;fp=task.py;h=963143463bfcbba7125415ed1aa025f19adbb9a4;hb=51cdb0020cf8f1c0a0c11cc80be98863fce2448b;hp=4774c8c51597c934b73be4462b2a1d2688ab0b03;hpb=bf0868a41a86ea5952d5fc1a8fca6621e89ad42e;p=plomtask diff --git a/task.py b/task.py index 4774c8c..9631434 100755 --- a/task.py +++ b/task.py @@ -15,16 +15,25 @@ class HandledException(Exception): """To identify Exceptions based on expected (if faulty) user behavior.""" +class TaskServer(HTTPServer): + """Variant of HTTPServer that knows .jinja as Jinja Environment.""" + + def __init__(self, *args, **kwargs): + super().__init__(self, *args, **kwargs) + self.jinja = JinjaEnv(loader=JinjaFSLoader(TEMPLATES_DIR)) + + class TaskHandler(BaseHTTPRequestHandler): """Handles single HTTP request.""" + server: TaskServer - def send_html(self, html:str, code:int=200): + def send_html(self, html: str, code: int = 200): """Send HTML as proper HTTP response.""" self.send_response(code) self.end_headers() self.wfile.write(bytes(html, 'utf-8')) - def send_msg(self, msg:str, code:int=400): + def send_msg(self, msg: str, code: int = 400): """Send message in HTML formatting as HTTP response.""" html = self.server.jinja.get_template('msg.html').render(msg=msg) self.send_html(html, code) @@ -52,8 +61,7 @@ class TaskHandler(BaseHTTPRequestHandler): def main(): """Main loop.""" - server = HTTPServer(('localhost', HTTP_PORT), TaskHandler) - server.jinja = JinjaEnv(loader=JinjaFSLoader(TEMPLATES_DIR)) + server = TaskServer(('localhost', HTTP_PORT), TaskHandler) print(f'running at port {HTTP_PORT}') try: server.serve_forever()