Fixed ?next=<url> argument for require_active_login
authorJoar Wandborg <git@wandborg.com>
Sat, 15 Sep 2012 19:07:24 +0000 (21:07 +0200)
committerJoar Wandborg <git@wandborg.com>
Sat, 15 Sep 2012 19:07:24 +0000 (21:07 +0200)
It now includes the full URI, including GET args, not just the path.

mediagoblin/decorators.py
mediagoblin/plugins/api/__init__.py
mediagoblin/plugins/api/views.py

index 0eb1361dc0ae4c8c9c669c522dc0a9b3b0dee6c0..9961be839cea7a8a786d344fcddec03408ba3e26 100644 (file)
@@ -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)
 
index 6a127b6ef98553f3adf279d0292686db18c28199..40722088ebb75fd94cf253882f31b15432066b19 100644 (file)
@@ -25,12 +25,13 @@ _log = logging.getLogger(__name__)
 
 PLUGIN_DIR = os.path.dirname(__file__)
 
+config = pluginapi.get_config(__name__)
 
 def setup_plugin():
-    config = pluginapi.get_config(__name__)
-
     _log.info('Setting up API...')
 
+    _log.debug('API config: {0}'.format(config))
+
     routes = [
         Route('mediagoblin.plugins.api.test', '/api/test',
             controller='mediagoblin.plugins.api.views:api_test'),
index 6a58fabff4195a0cd0d7cba24982f57186267795..ff177e29c48b7772ae24d2cc690cb3f6af45c1a5 100644 (file)
@@ -33,6 +33,8 @@ from mediagoblin.media_types import sniff_media, InvalidFileType, \
 from mediagoblin.plugins.api.tools import api_auth, get_entry_serializable, \
         json_response
 
+from mediagoblin.plugins.api import config
+
 _log = logging.getLogger(__name__)