{title}
+{subtitle}
+{}
".format(html.escape(str(exc)))) + return body + + @cherrypy.expose + def save(self, **params): + self._set_no_store_headers() + try: + config = load_config(self.config_file) + if not self._valid_save_request(config, params): + self._set_response_status(403) + return self._render_form( + config, "Error: {}".format( + self._text(config, "invalid_request"))) + for path, label_key, field_type in CONFIG_FORM_FIELDS: + name = field_name(path) + value = self._coerce_value(params.get(name), field_type) + set_config_value(config, path, value) + validate_config(config) + write_config_atomic(self.config_file, config) + raise cherrypy.HTTPRedirect("/?saved=1") + except (ConfigError, ValueError) as exc: + try: + config = load_config(self.config_file) + return self._render_form(config, "Error: {}".format(exc)) + except ConfigError: + return self._page(TEXT["en"]["error"], "{}
".format( + html.escape(str(exc)))) + + @cherrypy.expose + def status(self): + self._set_no_store_headers() + try: + config = load_config(self.config_file) + return self._text(config, "status_ok") + except ConfigError as exc: + self._set_response_status(400) + return "ERROR: {}".format(exc) + + @cherrypy.expose + def validate(self): + self._set_no_store_headers() + try: + config = load_config(self.config_file) + body = self._render_validation(config) + language = self._language(config) + except ConfigError as exc: + language = "en" + body = self._render_status_items( + [(False, TEXT["en"]["config_error"], str(exc))], language) + body += self._back_link(language) + return self._page(self._text_for_language(language, "validation_title"), + body, language) + + @cherrypy.expose + def test_weather(self): + self._set_no_store_headers() + try: + config = load_config(self.config_file) + language = self._language(config) + body = self._render_weather_test(config, language) + except ConfigError as exc: + language = "en" + body = self._render_status_items( + [(False, TEXT["en"]["config_error"], str(exc))], language) + body += self._back_link(language) + return self._page(self._text_for_language(language, "test_weather_title"), + body, language) + + def _render_form(self, config, message=""): + rows = [] + if message: + rows.append(''.format(html.escape(message))) + rows.append('') + return self._page(self._text(config, "title"), "\n".join(rows), + self._language(config)) + + def _render_rotation_fields(self, config): + return """{global_help}
+{pages_help}
+{detail}
{}
'.format(html.escape(hint)) + if hint else "") + return ('{subtitle}
+