diff --git a/setup.py b/setup.py index 3f8df60..6b9f22a 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ 'zope.sqlalchemy', 'alembic', # API - 'hapic', + 'hapic>=0.41', 'marshmallow <3.0.0a1,>2.0.0', # CLI 'cliff', diff --git a/tracim/__init__.py b/tracim/__init__.py index 366c80e..ce2113e 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,15 @@ 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(), + debug=app_config.DEBUG, ) + 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) 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) 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',