diff --git a/cps/helper.py b/cps/helper.py index ae8c1534..7d67dffd 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -381,25 +381,40 @@ class Updater(threading.Thread): self.status = 0 def run(self): - self.status = 1 - r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True) - fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0] - self.status = 2 - z = zipfile.ZipFile(BytesIO(r.content)) - self.status = 3 - tmp_dir = gettempdir() - z.extractall(tmp_dir) - self.status = 4 - self.update_source(os.path.join(tmp_dir, os.path.splitext(fname)[0]), ub.config.get_main_dir) - self.status = 5 - db.session.close() - db.engine.dispose() - ub.session.close() - ub.engine.dispose() - self.status = 6 - server.Server.setRestartTyp(True) - server.Server.stopServer() - self.status = 7 + try: + self.status = 1 + r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True) + r.raise_for_status() + + fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0] + self.status = 2 + z = zipfile.ZipFile(BytesIO(r.content)) + self.status = 3 + tmp_dir = gettempdir() + z.extractall(tmp_dir) + self.status = 4 + self.update_source(os.path.join(tmp_dir, os.path.splitext(fname)[0]), ub.config.get_main_dir) + self.status = 5 + db.session.close() + db.engine.dispose() + ub.session.close() + ub.engine.dispose() + self.status = 6 + server.Server.setRestartTyp(True) + server.Server.stopServer() + self.status = 7 + except requests.exceptions.HTTPError as ex: + logging.getLogger('cps.web').info( u'HTTP Error' + ' ' + str(ex)) + self.status = 8 + except requests.exceptions.ConnectionError: + logging.getLogger('cps.web').info(u'Connection error') + self.status = 9 + except requests.exceptions.Timeout: + logging.getLogger('cps.web').info(u'Timeout while establishing connection') + self.status = 10 + except requests.exceptions.RequestException: + self.status = 11 + logging.getLogger('cps.web').info(u'General error') def get_update_status(self): return self.status diff --git a/cps/web.py b/cps/web.py index c0646b1d..28f9a05c 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1292,7 +1292,11 @@ def get_updater_status(): "4": _(u'Files are replaced'), "5": _(u'Database connections are closed'), "6": _(u'Server is stopped'), - "7": _(u'Update finished, please press okay and reload page') + "7": _(u'Update finished, please press okay and reload page'), + "8": _(u'Update failed:') + u' ' + _(u'HTTP Error'), + "9": _(u'Update failed:') + u' ' + _(u'Connection error'), + "10": _(u'Update failed:') + u' ' + _(u'Timeout while establishing connection'), + "11": _(u'Update failed:') + u' ' + _(u'General error') } status['text'] = text helper.updater_thread = helper.Updater() @@ -1302,7 +1306,7 @@ def get_updater_status(): try: status['status'] = helper.updater_thread.get_update_status() except Exception: - status['status'] = 7 + status['status'] = 11 return json.dumps(status)