Implement @get_workbench decorator
authorSebastian Spaeth <Sebastian@SSpaeth.de>
Wed, 12 Dec 2012 12:53:56 +0000 (13:53 +0100)
committerSebastian Spaeth <Sebastian@SSpaeth.de>
Wed, 16 Jan 2013 19:14:55 +0000 (20:14 +0100)
This passes in a Workbench() via the 'workbench' keyword argument, and
conveniently cleans it up after the function has finished. 2 out of our 5
backends forgot to clean up their workbench, so this is clearly needed :-).

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
mediagoblin/decorators.py

index a40f1d5a59c49eef6994240d492060e8179d0fc3..3655d7586626ef203991ab0c837fd829d813ec14 100644 (file)
@@ -20,6 +20,7 @@ from urlparse import urljoin
 from werkzeug.exceptions import Forbidden, NotFound
 from werkzeug.urls import url_quote
 
+from mediagoblin import mg_globals as mgg
 from mediagoblin.db.models import MediaEntry, User
 from mediagoblin.tools.response import redirect, render_404
 
@@ -222,3 +223,14 @@ def get_media_entry_by_id(controller):
         return controller(request, media=media, *args, **kwargs)
 
     return wrapper
+
+
+def get_workbench(func):
+    """Decorator, passing in a workbench as kwarg which is cleaned up afterwards"""
+
+    @wraps(func)
+    def new_func(*args, **kwargs):
+        with mgg.workbench_manager.create_workbench() as workbench:
+            return func(*args, workbench=workbench, **kwargs)
+
+    return new_func