Switch to side-by-side view

--- a/Allura/allura/command/reactor.py
+++ b/Allura/allura/command/reactor.py
@@ -2,6 +2,7 @@
 import time
 import json
 from multiprocessing import Process
+from weberror.errormiddleware import handle_exception
 
 import ming
 import pylons
@@ -134,6 +135,24 @@
             base.M.ScheduledMessage.fire_when_ready()
             time.sleep(5)
             if self.options.dry_run: return
+
+    def send_error_report(self, exc_info):
+        C = pylons.config['pylons.errorware']
+        handle_exception(
+            exc_info, sys.stderr,
+            html=True,
+            debug_mode=C.get('debug', False),
+            error_email=C.get('error_email'),
+            error_log=C.get('error_log'),
+            show_exceptions_in_wsgi_errors=False,
+            error_email_from=C.get('from_address'),
+            smtp_server=C.get('smtp_server'),
+            smtp_username=C.get('smtp_username'),
+            smtp_password=C.get('smtp_password'),
+            smtp_use_tls=C.get('smtp_use_tls'),
+            error_subject_prefix=C.get('error_subject_prefix'),
+            error_message=C.get('error_message'),
+            simple_html_error=C.get('simple_html_error'))
 
     def route_audit(self, tool_name, method):
         'Auditors only respond to their particluar mount point'
@@ -175,6 +194,7 @@
                     'Exception audit handling %s: %s',
                     tool_name, method)
                 if self.options.dry_run: raise
+                self.send_error_report(sys.exc_info())
             else:
                 ming.orm.ormsession.ThreadLocalORMSession.flush_all()
             finally:
@@ -218,6 +238,7 @@
             except: # pragma no cover
                 base.log.exception('Exception react handling %s: %s', tool_name, method)
                 if self.options.dry_run: raise
+                self.send_error_report(sys.exc_info())
             else:
                 ming.orm.ormsession.ThreadLocalORMSession.flush_all()
             finally: