from datetime import datetime import pytz import tornado from core.config import ALLOW_SPOTTING, WEB_UI_OPTIONS, BASE_URL from core.constants import SOFTWARE_VERSION from core.prometheus_metrics_handler import page_requests_counter class PageTemplateHandler(tornado.web.RequestHandler): """Handler for all HTML pages generated from templates""" def initialize(self, template_name, web_server_metrics, has_hamqsl=False, has_noaa_forecast=False): self._template_name = template_name self._web_server_metrics = web_server_metrics self._has_hamqsl = has_hamqsl self._has_noaa_forecast = has_noaa_forecast def get(self): # Metrics self._web_server_metrics["last_page_access_time"] = datetime.now(pytz.UTC) self._web_server_metrics["page_access_counter"] += 1 self._web_server_metrics["status"] = "OK" page_requests_counter.inc() # Load named template, and provide variables used in templates self.render(self._template_name + ".html", software_version=SOFTWARE_VERSION, allow_spotting=ALLOW_SPOTTING, web_ui_options=WEB_UI_OPTIONS, baseurl=BASE_URL, current_path=self.request.path, has_hamqsl=self._has_hamqsl, has_noaa_forecast=self._has_noaa_forecast)