split the controllers into separate files

This commit is contained in:
Jakob Ketterl
2020-02-23 17:22:13 +01:00
parent b110705f45
commit 451eb99f8a
10 changed files with 234 additions and 221 deletions

View File

@ -0,0 +1,40 @@
from . import Controller
import pkg_resources
from string import Template
from abc import ABCMeta
class TemplateController(Controller, metaclass=ABCMeta):
def render_template(self, file, **vars):
file_content = pkg_resources.resource_string("htdocs", file).decode("utf-8")
template = Template(file_content)
return template.safe_substitute(**vars)
def serve_template(self, file, **vars):
self.send_response(self.render_template(file, **vars), content_type="text/html")
def default_variables(self):
return {}
class WebpageController(TemplateController, metaclass=ABCMeta):
def template_variables(self):
header = self.render_template("include/header.include.html")
return {"header": header}
class IndexController(WebpageController):
def handle_request(self):
self.serve_template("index.html", **self.template_variables())
class MapController(WebpageController):
def handle_request(self):
# TODO check if we have a google maps api key first?
self.serve_template("map.html", **self.template_variables())
class FeatureController(WebpageController):
def handle_request(self):
self.serve_template("features.html", **self.template_variables())