From 453ed96c1fdc9a243791cdad028649ba9f3949d4 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Feb 22 2018 09:28:33 +0000 Subject: Issues widget: don't crash if the backend isn't available Fixes #590 --- diff --git a/hubs/widgets/issues/__init__.py b/hubs/widgets/issues/__init__.py index a41e56f..60382e7 100644 --- a/hubs/widgets/issues/__init__.py +++ b/hubs/widgets/issues/__init__.py @@ -1,4 +1,5 @@ -from __future__ import unicode_literals +from __future__ import unicode_literals, absolute_import + import flask from hubs.widgets.base import Widget diff --git a/hubs/widgets/issues/functions.py b/hubs/widgets/issues/functions.py index 8f1347a..2764882 100644 --- a/hubs/widgets/issues/functions.py +++ b/hubs/widgets/issues/functions.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals, absolute_import + import requests from hubs.models.hub import Hub diff --git a/hubs/widgets/issues/views.py b/hubs/widgets/issues/views.py index 4580936..d7eaca8 100644 --- a/hubs/widgets/issues/views.py +++ b/hubs/widgets/issues/views.py @@ -1,12 +1,18 @@ +from __future__ import unicode_literals, absolute_import + +import logging + import arrow import flask from hubs.widgets.view import WidgetView from hubs.models.hub import Hub - from .functions import GetBugzillaBugs, GetGithubIssues, GetPagureIssues +log = logging.getLogger('hubs.widgets') + + class DataView(WidgetView): """Get issues in JSON format.""" @@ -39,9 +45,21 @@ class DataView(WidgetView): data={'issues': [], 'counts': {}} ) - [bugzilla, bzcnt] = GetBugzillaBugs(instance)() - [pagure, pcnt] = GetPagureIssues(instance)() - [github, ghcnt] = GetGithubIssues(instance)() + try: + bugzilla, bzcnt = GetBugzillaBugs(instance)() + except Exception as e: + log.warning("Failed getting Bugzilla bugs: %s", e, exc_info=True) + bugzilla, bzcnt = [], 0 + try: + pagure, pcnt = GetPagureIssues(instance)() + except Exception as e: + log.warning("Failed getting Bugzilla bugs: %s", e, exc_info=True) + pagure, pcnt = [], 0 + try: + github, ghcnt = GetGithubIssues(instance)() + except Exception as e: + log.warning("Failed getting Bugzilla bugs: %s", e, exc_info=True) + github, ghcnt = [], 0 all_issues = bugzilla + pagure + github all_issues.sort(key=lambda x: arrow.get(x['updated_at']), reverse=True)