word-wrapping the public/queue storage explainations in storage.rst
[mediagoblin.git] / mediagoblin / decorators.py
index 42406b7dc4475a5d30d543d5d9154b5dee5c4b3c..f3535fcf638c9c45073bb5081aab9cbc689a79b5 100644 (file)
@@ -43,7 +43,7 @@ def require_active_login(controller):
                     request.url)
 
             return redirect(request, 'mediagoblin.auth.login',
-                            next=url_quote(next_url))
+                            next=next_url)
 
         return controller(request, *args, **kwargs)
 
@@ -125,24 +125,29 @@ def get_user_media_entry(controller):
         if not user:
             raise NotFound()
 
-        media = MediaEntry.query.filter_by(
-            slug = request.matchdict['media'],
-            state = u'processed',
-            uploader = user.id).first()
+        media = None
 
-        if not media:
-            # no media via slug?  Grab it via object id
+        # might not be a slug, might be an id, but whatever
+        media_slug = request.matchdict['media']
+
+        # if it starts with id: it actually isn't a slug, it's an id.
+        if media_slug.startswith(u'id:'):
             try:
                 media = MediaEntry.query.filter_by(
-                    id = int(request.matchdict['media']),
-                    state = u'processed',
-                    uploader = user.id).first()
+                    id=int(media_slug[3:]),
+                    state=u'processed',
+                    uploader=user.id).first()
             except ValueError:
-                # media "id" was no int
                 raise NotFound()
+        else:
+            # no magical id: stuff?  It's a slug!
+            media = MediaEntry.query.filter_by(
+                slug=media_slug,
+                state=u'processed',
+                uploader=user.id).first()
 
         if not media:
-            # no media by that id? Okay, 404.
+            # Didn't find anything?  Okay, 404.
             raise NotFound()
 
         return controller(request, media=media, *args, **kwargs)