aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/decorators.py
diff options
context:
space:
mode:
authorJef van Schendel <jefvanschendel@gmail.com>2011-06-04 02:22:09 +0200
committerJef van Schendel <jefvanschendel@gmail.com>2011-06-04 02:22:09 +0200
commitf4b2bd93f2f9c0f5fbef5214b2fe97912857b175 (patch)
tree1a83f2b7a82d10a1a8f795f5f9876cf5ba5ad269 /mediagoblin/decorators.py
parent2165d464a4aed262deeb7b8b0a3fc283c7adc326 (diff)
parentc042bc6e218e99f93c1e642b1d77839ca0f4b1f9 (diff)
downloadmediagoblin-f4b2bd93f2f9c0f5fbef5214b2fe97912857b175.tar.lz
mediagoblin-f4b2bd93f2f9c0f5fbef5214b2fe97912857b175.tar.xz
mediagoblin-f4b2bd93f2f9c0f5fbef5214b2fe97912857b175.zip
Merge remote-tracking branch 'gitorious/master'
Diffstat (limited to 'mediagoblin/decorators.py')
-rw-r--r--mediagoblin/decorators.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index a5bede54..34575320 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -102,3 +102,23 @@ def get_user_media_entry(controller):
return controller(request, media=media, *args, **kwargs)
return _make_safe(wrapper, controller)
+
+def get_media_entry_by_id(controller):
+ """
+ Pass in a MediaEntry based off of a url component
+ """
+ def wrapper(request, *args, **kwargs):
+ try:
+ media = request.db.MediaEntry.find_one(
+ {'_id': ObjectId(request.matchdict['media']),
+ 'state': 'processed'})
+ except InvalidId:
+ return exc.HTTPNotFound()
+
+ # Still no media? Okay, 404.
+ if not media:
+ return exc.HTTPNotFound()
+
+ return controller(request, media=media, *args, **kwargs)
+
+ return _make_safe(wrapper, controller)