home · contact · privacy
Improve type hints sufficiently for mypy not to complain, and for Day.__eq__ check...
[plomtask] / task.py
diff --git a/task.py b/task.py
index 4774c8c51597c934b73be4462b2a1d2688ab0b03..963143463bfcbba7125415ed1aa025f19adbb9a4 100755 (executable)
--- 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()