Explorar el Código

Merge pull request #77 from tracim/fix/59_global_exception_handling

Damien Accorsi hace 6 años
padre
commit
a0ad2044cd
No account linked to committer's email
Se han modificado 4 ficheros con 12 adiciones y 8 borrados
  1. 1 1
      setup.py
  2. 10 5
      tracim/__init__.py
  3. 1 0
      tracim/config.py
  4. 0 2
      tracim/tests/functional/test_session.py

+ 1 - 1
setup.py Ver fichero

24
     'zope.sqlalchemy',
24
     'zope.sqlalchemy',
25
     'alembic',
25
     'alembic',
26
     # API
26
     # API
27
-    'hapic',
27
+    'hapic>=0.41',
28
     'marshmallow <3.0.0a1,>2.0.0',
28
     'marshmallow <3.0.0a1,>2.0.0',
29
     # CLI
29
     # CLI
30
     'cliff',
30
     'cliff',

+ 10 - 5
tracim/__init__.py Ver fichero

5
 from pyramid.config import Configurator
5
 from pyramid.config import Configurator
6
 from pyramid.authentication import BasicAuthAuthenticationPolicy
6
 from pyramid.authentication import BasicAuthAuthenticationPolicy
7
 from hapic.ext.pyramid import PyramidContext
7
 from hapic.ext.pyramid import PyramidContext
8
+from pyramid.exceptions import NotFound
9
+from sqlalchemy.exc import OperationalError
8
 
10
 
9
 from tracim.extensions import hapic
11
 from tracim.extensions import hapic
10
 from tracim.config import CFG
12
 from tracim.config import CFG
52
     # Add SqlAlchemy DB
54
     # Add SqlAlchemy DB
53
     configurator.include('.models')
55
     configurator.include('.models')
54
     # set Hapic
56
     # set Hapic
55
-    hapic.set_context(
56
-        PyramidContext(
57
-            configurator=configurator,
58
-            default_error_builder=ErrorSchema()
59
-        )
57
+    context = PyramidContext(
58
+        configurator=configurator,
59
+        default_error_builder=ErrorSchema(),
60
+        debug=app_config.DEBUG,
60
     )
61
     )
62
+    hapic.set_context(context)
63
+    context.handle_exception(NotFound, 404)
64
+    context.handle_exception(OperationalError, 500)
65
+    context.handle_exception(Exception, 500)
61
     # Add controllers
66
     # Add controllers
62
     session_api = SessionController()
67
     session_api = SessionController()
63
     configurator.include(session_api.bind, route_prefix=BASE_API_V2)
68
     configurator.include(session_api.bind, route_prefix=BASE_API_V2)

+ 1 - 0
tracim/config.py Ver fichero

128
             '604800',
128
             '604800',
129
         ))
129
         ))
130
 
130
 
131
+        self.DEBUG = asbool(settings.get('debug', False))
131
         # TODO - G.M - 27-03-2018 - [Email] Restore email config
132
         # TODO - G.M - 27-03-2018 - [Email] Restore email config
132
         ###
133
         ###
133
         # EMAIL related stuff (notification, reply)
134
         # EMAIL related stuff (notification, reply)

+ 0 - 2
tracim/tests/functional/test_session.py Ver fichero

17
 
17
 
18
 class TestLoginEndpointUnititedDB(FunctionalTestNoDB):
18
 class TestLoginEndpointUnititedDB(FunctionalTestNoDB):
19
 
19
 
20
-    @pytest.mark.xfail(raises=OperationalError,
21
-                       reason='Not supported yet by hapic')
22
     def test_api__try_login_enpoint__err_500__no_inited_db(self):
20
     def test_api__try_login_enpoint__err_500__no_inited_db(self):
23
         params = {
21
         params = {
24
             'email': 'admin@admin.admin',
22
             'email': 'admin@admin.admin',