[Checkins] SVN: grokcore.startup/branches/jw-configurable-ireraise-adaptation/s sketch out how to make what exceptions to exempt from re-raising configurable

Jan-Wijbrand Kolman janwijbrand at gmail.com
Tue Sep 22 12:27:07 EDT 2009


Log message for revision 104430:
  sketch out how to make what exceptions to exempt from re-raising configurable

Changed:
  U   grokcore.startup/branches/jw-configurable-ireraise-adaptation/setup.py
  U   grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/__init__.py
  U   grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/startup.py

-=-
Modified: grokcore.startup/branches/jw-configurable-ireraise-adaptation/setup.py
===================================================================
--- grokcore.startup/branches/jw-configurable-ireraise-adaptation/setup.py	2009-09-22 16:25:38 UTC (rev 104429)
+++ grokcore.startup/branches/jw-configurable-ireraise-adaptation/setup.py	2009-09-22 16:27:06 UTC (rev 104430)
@@ -41,6 +41,11 @@
     zip_safe=False,
     install_requires=['setuptools',
                       'zdaemon',
+                      'zope.interface',
+                      'zope.component',
+                      'zope.security',
+                      'zope.publisher',
+                      'zope.dottedname',
                       'zope.app.wsgi',
                       'zope.app.debug',
                       ],

Modified: grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/__init__.py
===================================================================
--- grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/__init__.py	2009-09-22 16:25:38 UTC (rev 104429)
+++ grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/__init__.py	2009-09-22 16:27:06 UTC (rev 104430)
@@ -13,5 +13,6 @@
 ##############################################################################
 # Make this a package.
 from grokcore.startup.startup import (application_factory,
+                                      debug_application_factory,
                                       interactive_debug_prompt,
                                       zdaemon_controller)

Modified: grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/startup.py
===================================================================
--- grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/startup.py	2009-09-22 16:25:38 UTC (rev 104429)
+++ grokcore.startup/branches/jw-configurable-ireraise-adaptation/src/grokcore/startup/startup.py	2009-09-22 16:27:06 UTC (rev 104430)
@@ -5,11 +5,36 @@
 import zope.app.wsgi
 import zope.app.debug
 
+from zope.component import provideAdapter
+from zope.security.interfaces import IUnauthorized
+from zope.publisher.interfaces import IReRaiseException
+from zope.dottedname.resolve import resolve
+
 def application_factory(global_conf, **local_conf):
     zope_conf = local_conf.get('zope_conf', global_conf.get(
             'zope_conf', os.path.join('parts', 'etc', 'zope.conf')))
     return zope.app.wsgi.getWSGIApplication(zope_conf)
 
+
+def debug_application_factory(global_conf, **local_conf):
+    # First create the application itself
+    app = application_factory(global_conf, **local_conf)
+    # Then register the IReRaiseException adaptation for
+    # various types of exceptions that are exempt from being
+    # raised by the publisher.
+    def do_not_reraise_exception(context):
+        return lambda : False
+    iface_names = local_conf.get('exempt-exceptions', '').split(',')
+    for name in iface_names:
+        name = name.strip()
+        if not name:
+            continue
+        iface = resolve(name)
+        provideAdapter(do_not_reraise_exception, (iface, ), IReRaiseException)
+    # Return the created application
+    return app
+    
+
 def interactive_debug_prompt(zope_conf=os.path.join('parts', 'etc',
                                                     'zope.conf')):
     db = zope.app.wsgi.config(zope_conf)



More information about the checkins mailing list