Slightly wrapping paste error middleware and turning it on
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 21 Aug 2011 05:09:29 +0000 (00:09 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 21 Aug 2011 05:09:29 +0000 (00:09 -0500)
Now we can show a nice "borked goblin" error :)

mediagoblin/errormiddleware.py [new file with mode: 0644]
mediagoblin/templates/mediagoblin/500.html [deleted file]
paste.ini
setup.py

diff --git a/mediagoblin/errormiddleware.py b/mediagoblin/errormiddleware.py
new file mode 100644 (file)
index 0000000..084b368
--- /dev/null
@@ -0,0 +1,53 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from paste.exceptions.errormiddleware import make_error_middleware
+
+MGOBLIN_ERROR_MESSAGE = """\
+<div style="text-align:center;font-family: monospace">
+  <h1>YEOWCH... that's an error!</h1>
+  <pre>
+.-------------------------.
+|     __            _     |
+|    -, \_,------,_//     |
+|     <\  ,--   --.\      |
+|      / (  X) (X  )      |
+|      '  '--, ,--'\      |
+|     / \ -v-v-u-v /      |
+|     .  '.__.--__'.\     |
+|    / ',___/ / \__/'     |
+|    | |   ,'\_'/, ||     |
+|    \_|   | | | | ||     |
+|     W',_ ||| |||_''     |
+|      |  '------'|       |
+|      |__|     |_|_      |
+|     ,,,-'     '-,,,     |
+'-------------------------'
+  </pre>
+  <p>Something bad happened, and things broke.</p>
+  <p>If this is not your website, you may want to alert the owner.</p>
+  <br><br>
+  <p>
+    Powered... er broken... by
+    <a href="http://www.mediagoblin.org">MediaGoblin</a>,
+    a <a href="http://www.gnu.org">GNU Project</a>.
+  </p>
+</div>"""
+
+
+def mgoblin_error_middleware(app, global_conf, **kw):
+    kw['error_message'] = MGOBLIN_ERROR_MESSAGE
+    return make_error_middleware(app, global_conf, **kw)
diff --git a/mediagoblin/templates/mediagoblin/500.html b/mediagoblin/templates/mediagoblin/500.html
deleted file mode 100644 (file)
index 464630a..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--->
-<!doctype html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <title>500 error! GNU MediaGoblin is sorry...</title>
-  </head>
-  <body style="text-align:center;font-family: monospace">
-    <h1>YEOWCH... that's an error!</h1>
-    <p>
-      .-------------------------.<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp; __&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;-,&nbsp;\_,------,_//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\&nbsp;&nbsp;,--&nbsp;&nbsp;&nbsp;--.\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;(&nbsp;&nbsp;X)&nbsp;(X&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;'--,&nbsp;,--'\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;\&nbsp;-v-v-u-v&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;'.__.--__'.\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;',___/&nbsp;/&nbsp;\__/'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;&nbsp;&nbsp;,'\_'/,&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;\_|&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;W',_&nbsp;|||&nbsp;|||_''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;'------'|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|__|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|_|_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>
-      |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,,,-'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'-,,,&nbsp;&nbsp;&nbsp;&nbsp;                 |<br>
-      '-------------------------'<br>
-    </p>
-    <p>Something bad happened, and things broke.</p>
-    <p>If this is not your website, you may want to alert the owner.</p>
-    <br><br>
-    <p>Powered... er broken... by <a href="http://www.mediagoblin.org">MediaGoblin</a>, a <a href="http://www.gnu.org">GNU Project</a>.</p>
-  </body>
-</html>
index 73fbe8e8de09b9a5ab1045d9ed3c5c09d27aa441..fc459989639e4fa76b6af95417c7cd7586f5330f 100644 (file)
--- a/paste.ini
+++ b/paste.ini
@@ -1,7 +1,11 @@
 [DEFAULT]
-debug = true
+# Set to true to enable web-based debugging messages and etc.
+debug = false
 
-[composite:main]
+[pipeline:main]
+pipeline = errors routing
+
+[composite:routing]
 use = egg:Paste#urlmap
 / = mediagoblin
 /mgoblin_media/ = publicstore_serve
@@ -28,6 +32,10 @@ beaker.session.key = mediagoblin
 beaker.session.data_dir = %(here)s/user_dev/beaker/sessions/data
 beaker.session.lock_dir = %(here)s/user_dev/beaker/sessions/lock
 
+[filter:errors]
+use = egg:mediagoblin#errors
+debug = false
+
 [server:main]
 use = egg:Paste#http
 host = 127.0.0.1
index 40715dd0a0d98d9a7f4746b7517e653254b08874..d6ef584b44f32df566d6f1019ceb7349022dc67a 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -58,6 +58,9 @@ setup(
         [paste.app_factory]
         app = mediagoblin.app:paste_app_factory
 
+        [paste.filter_app_factory]
+        errors = mediagoblin.errormiddleware:mgoblin_error_middleware
+
         [zc.buildout]
         make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs