aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/decorators.py
diff options
context:
space:
mode:
authorJakob Kramer <jakob.kramer@gmx.de>2012-07-12 15:01:40 +0200
committerJakob Kramer <jakob.kramer@gmx.de>2012-07-12 15:01:40 +0200
commit1e03504e9f84396ccb216aec48a95e508973ae55 (patch)
treeb95626b07755e5d6e73f1ac619f2fa2af77a23a0 /mediagoblin/decorators.py
parent808eac008bdce4d6b05df36bca056e1fba504434 (diff)
downloadmediagoblin-1e03504e9f84396ccb216aec48a95e508973ae55.tar.lz
mediagoblin-1e03504e9f84396ccb216aec48a95e508973ae55.tar.xz
mediagoblin-1e03504e9f84396ccb216aec48a95e508973ae55.zip
removed _make_safe in favor of functools.wraps
Diffstat (limited to 'mediagoblin/decorators.py')
-rw-r--r--mediagoblin/decorators.py28
1 files changed, 12 insertions, 16 deletions
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index b2791083..0eb1361d 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -14,27 +14,19 @@
# 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 functools import wraps
from webob import exc
-from mediagoblin.tools.response import redirect, render_404
from mediagoblin.db.util import ObjectId, InvalidId
-
-
-def _make_safe(decorator, original):
- """
- Copy the function data from the old function to the decorator.
- """
- decorator.__name__ = original.__name__
- decorator.__dict__ = original.__dict__
- decorator.__doc__ = original.__doc__
- return decorator
+from mediagoblin.tools.response import redirect, render_404
def require_active_login(controller):
"""
Require an active login from the user.
"""
+ @wraps(controller)
def new_controller_func(request, *args, **kwargs):
if request.user and \
request.user.get('status') == u'needs_email_verification':
@@ -49,13 +41,14 @@ def require_active_login(controller):
return controller(request, *args, **kwargs)
- return _make_safe(new_controller_func, controller)
+ return new_controller_func
def user_may_delete_media(controller):
"""
Require user ownership of the MediaEntry to delete.
"""
+ @wraps(controller)
def wrapper(request, *args, **kwargs):
uploader_id = request.db.MediaEntry.find_one(
{'_id': ObjectId(request.matchdict['media'])}).uploader
@@ -65,13 +58,14 @@ def user_may_delete_media(controller):
return controller(request, *args, **kwargs)
- return _make_safe(wrapper, controller)
+ return wrapper
def uses_pagination(controller):
"""
Check request GET 'page' key for wrong values
"""
+ @wraps(controller)
def wrapper(request, *args, **kwargs):
try:
page = int(request.GET.get('page', 1))
@@ -82,13 +76,14 @@ def uses_pagination(controller):
return controller(request, page=page, *args, **kwargs)
- return _make_safe(wrapper, controller)
+ return wrapper
def get_user_media_entry(controller):
"""
Pass in a MediaEntry based off of a url component
"""
+ @wraps(controller)
def wrapper(request, *args, **kwargs):
user = request.db.User.find_one(
{'username': request.matchdict['user']})
@@ -116,13 +111,14 @@ def get_user_media_entry(controller):
return controller(request, media=media, *args, **kwargs)
- return _make_safe(wrapper, controller)
+ return wrapper
def get_media_entry_by_id(controller):
"""
Pass in a MediaEntry based off of a url component
"""
+ @wraps(controller)
def wrapper(request, *args, **kwargs):
try:
media = request.db.MediaEntry.find_one(
@@ -137,4 +133,4 @@ def get_media_entry_by_id(controller):
return controller(request, media=media, *args, **kwargs)
- return _make_safe(wrapper, controller)
+ return wrapper