5 from http.server import BaseHTTPRequestHandler
6 from http.server import HTTPServer
7 from jinja2 import Environment as JinjaEnv, FileSystemLoader as JinjaFSLoader
11 TEMPLATES_DIR = 'templates'
14 class HandledException(Exception):
15 """To identify Exceptions based on expected (if faulty) user behavior."""
18 class TaskHandler(BaseHTTPRequestHandler):
19 """Handles single HTTP request."""
22 """Handle any GET request."""
23 self.send_response(200)
25 days = [Day('2024-01-03'), Day('2024-01-01'), Day('2024-01-02')]
27 html = self.server.jinja.get_template('calendar.html').render(
29 self.wfile.write(bytes(html, 'utf-8'))
34 server = HTTPServer(('localhost', HTTP_PORT), TaskHandler)
35 server.jinja = JinjaEnv(loader=JinjaFSLoader(TEMPLATES_DIR))
36 print(f'running at port {HTTP_PORT}')
38 server.serve_forever()
39 except KeyboardInterrupt:
40 print('aborting due to keyboard interrupt')
44 if __name__ == '__main__':
45 from sys import exit as sys_exit
48 except HandledException as e:
49 print(f'Aborting due to: {e}')