diff options
Diffstat (limited to 'mediagoblin/decorators.py')
-rw-r--r-- | mediagoblin/decorators.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py index 0eb1361d..9961be83 100644 --- a/mediagoblin/decorators.py +++ b/mediagoblin/decorators.py @@ -16,6 +16,9 @@ from functools import wraps +from urlparse import urljoin +from urllib import urlencode + from webob import exc from mediagoblin.db.util import ObjectId, InvalidId @@ -34,10 +37,16 @@ def require_active_login(controller): request, 'mediagoblin.user_pages.user_home', user=request.user.username) elif not request.user or request.user.get('status') != u'active': + next_url = urljoin( + request.urlgen('mediagoblin.auth.login', + qualified=True), + request.url) + return exc.HTTPFound( - location="%s?next=%s" % ( - request.urlgen("mediagoblin.auth.login"), - request.full_path)) + location='?'.join([ + request.urlgen('mediagoblin.auth.login'), + urlencode({ + 'next': next_url})])) return controller(request, *args, **kwargs) |