From 641b48b7d35e318eb23dc572f16f7f869b56ffa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=A9na=C3=ABl=20Muller?= Date: Thu, 17 May 2018 16:31:27 +0200 Subject: [PATCH 1/4] support simple global exception for NotFound and Operational Sqlalchemy error --- setup.py | 2 +- tracim/__init__.py | 13 ++++++++----- tracim/tests/functional/test_session.py | 2 -- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index 3f8df60..d81e9a0 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ 'zope.sqlalchemy', 'alembic', # API - 'hapic', + 'hapic>=0.40', 'marshmallow <3.0.0a1,>2.0.0', # CLI 'cliff', diff --git a/tracim/__init__.py b/tracim/__init__.py index 366c80e..0ef2b18 100644 --- a/tracim/__init__.py +++ b/tracim/__init__.py @@ -5,6 +5,8 @@ from pyramid.config import Configurator from pyramid.authentication import BasicAuthAuthenticationPolicy from hapic.ext.pyramid import PyramidContext +from pyramid.exceptions import NotFound +from sqlalchemy.exc import OperationalError from tracim.extensions import hapic from tracim.config import CFG @@ -49,12 +51,13 @@ def main(global_config, **settings): # Add SqlAlchemy DB configurator.include('.models') # set Hapic - hapic.set_context( - PyramidContext( - configurator=configurator, - default_error_builder=ErrorSchema() - ) + context = PyramidContext( + configurator=configurator, + default_error_builder=ErrorSchema() ) + hapic.set_context(context) + context.handle_exception(NotFound, 404) + context.handle_exception(OperationalError, 500) # Add controllers session_api = SessionController() configurator.include(session_api.bind, route_prefix=BASE_API_V2) diff --git a/tracim/tests/functional/test_session.py b/tracim/tests/functional/test_session.py index df5c55a..83a0517 100644 --- a/tracim/tests/functional/test_session.py +++ b/tracim/tests/functional/test_session.py @@ -17,8 +17,6 @@ def test_api__access_logout_post_enpoint__ok__nominal_case(self): class TestLoginEndpointUnititedDB(FunctionalTestNoDB): - @pytest.mark.xfail(raises=OperationalError, - reason='Not supported yet by hapic') def test_api__try_login_enpoint__err_500__no_inited_db(self): params = { 'email': 'admin@admin.admin', From 9551d6149e76ad4f7fd0454da70c3fed04244661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=A9na=C3=ABl=20Muller?= Date: Thu, 24 May 2018 16:59:04 +0200 Subject: [PATCH 2/4] fix version for hapic --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d81e9a0..6b9f22a 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ 'zope.sqlalchemy', 'alembic', # API - 'hapic>=0.40', + 'hapic>=0.41', 'marshmallow <3.0.0a1,>2.0.0', # CLI 'cliff', From 5e1ce6078a8ef587263107010e5c13c53c8759d4 Mon Sep 17 00:00:00 2001 From: Bastien Sevajol Date: Fri, 1 Jun 2018 12:21:58 +0200 Subject: [PATCH 3/4] add Exception to managed exception in hapic --- tracim/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tracim/__init__.py b/tracim/__init__.py index 0ef2b18..e57a056 100644 --- a/tracim/__init__.py +++ b/tracim/__init__.py @@ -58,6 +58,7 @@ def main(global_config, **settings): hapic.set_context(context) context.handle_exception(NotFound, 404) context.handle_exception(OperationalError, 500) + context.handle_exception(Exception, 500) # Add controllers session_api = SessionController() configurator.include(session_api.bind, route_prefix=BASE_API_V2) From ed3b5689fbedcbdc08baaca145009db8bad69c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=A9na=C3=ABl=20Muller?= Date: Fri, 1 Jun 2018 14:39:07 +0200 Subject: [PATCH 4/4] Add hapic debug mode feature --- tracim/__init__.py | 3 ++- tracim/config.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tracim/__init__.py b/tracim/__init__.py index e57a056..ce2113e 100644 --- a/tracim/__init__.py +++ b/tracim/__init__.py @@ -53,7 +53,8 @@ def main(global_config, **settings): # set Hapic context = PyramidContext( configurator=configurator, - default_error_builder=ErrorSchema() + default_error_builder=ErrorSchema(), + debug=app_config.DEBUG, ) hapic.set_context(context) context.handle_exception(NotFound, 404) diff --git a/tracim/config.py b/tracim/config.py index 82ce5a3..4db2016 100644 --- a/tracim/config.py +++ b/tracim/config.py @@ -128,6 +128,7 @@ def __init__(self, settings): '604800', )) + self.DEBUG = asbool(settings.get('debug', False)) # TODO - G.M - 27-03-2018 - [Email] Restore email config ### # EMAIL related stuff (notification, reply)