# HG changeset patch # User Goffi # Date 1515166205 -3600 # Node ID 05cc33d8e3280bc8261de6a0f2abcfb559ca3e4a # Parent 990e80aa43a9c1e1449474e869d7bd03c23dd503 server: better error message on init issue / menu_json trouble + stop reactor in this case. diff -r 990e80aa43a9 -r 05cc33d8e328 src/server/pages.py --- a/src/server/pages.py Fri Jan 05 16:30:05 2018 +0100 +++ b/src/server/pages.py Fri Jan 05 16:30:05 2018 +0100 @@ -250,14 +250,22 @@ main_menu = [] for menu in menus: if not menu: - raise ValueError(_(u"menu item can't be empty")) + msg = _(u"menu item can't be empty") + log.error(msg) + raise ValueError(msg) elif isinstance(menu, list): if len(menu) != 2: - raise ValueError(_(u"menu item as list must be in the formĀ [page_name, absolue URL]")) + msg = _(u"menu item as list must be in the formĀ [page_name, absolue URL]") + log.error(msg) + raise ValueError(msg) page_name, url = menu else: page_name = menu - url = cls.getPageByName(page_name).url + try: + url = cls.getPageByName(page_name).url + except KeyError as e: + log.error(_(u"Can'find a named page ({msg}), please check menu_json in configuration.").format(msg=e)) + raise e main_menu.append((page_name, url)) cls.main_menu = main_menu diff -r 990e80aa43a9 -r 05cc33d8e328 src/server/server.py --- a/src/server/server.py Fri Jan 05 16:30:05 2018 +0100 +++ b/src/server/server.py Fri Jan 05 16:30:05 2018 +0100 @@ -1488,12 +1488,16 @@ self.renderer = template.Renderer(self) self.putChild('templates', ProtectedFile(self.renderer.base_dir)) + def initEb(self, failure): + log.error(_(u"Init error: {msg}").format(msg=failure)) + reactor.stop() + return failure def _bridgeCb(self): self.bridge.getReady(lambda: self.initialised.callback(None), lambda failure: self.initialised.errback(Exception(failure))) self.initialised.addCallback(self.backendReady) - self.initialised.addErrback(lambda failure: log.error(u"Init error: %s" % failure)) + self.initialised.addErrback(self.initEb) def _bridgeEb(self, failure): log.error(u"Can't connect to bridge: {}".format(failure))