Handle Exceptions from save(); Move may_edit_media
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Thu, 2 Jun 2011 15:43:54 +0000 (17:43 +0200)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Thu, 2 Jun 2011 15:43:54 +0000 (17:43 +0200)
Turn .save() excpetions into a HTTPConflict. Not nice, but
at least the user gets the error.  Until there is a proper
way to validate things and get nice errors.

Move may_edit_media() to lib.py, as it's not a view.

mediagoblin/edit/lib.py [new file with mode: 0644]
mediagoblin/edit/views.py

diff --git a/mediagoblin/edit/lib.py b/mediagoblin/edit/lib.py
new file mode 100644 (file)
index 0000000..293a054
--- /dev/null
@@ -0,0 +1,8 @@
+
+def may_edit_media(request, media):
+    """Check, if the request's user may edit the media details"""
+    if media['uploader'] == request.user['_id']:
+        return True
+    if request.user['is_admin']:
+        return True
+    return False
index a0afaa3062e482fd1a880a284c6b9c0e1a91c931..b8e28e290e0875569b8f7d43d6cec69ebf6a1967 100644 (file)
@@ -3,18 +3,10 @@
 from webob import Response, exc
 
 from mediagoblin.edit import forms
+from mediagoblin.edit.lib import may_edit_media
 from mediagoblin.decorators import require_active_login, get_user_media_entry
 
 
-def may_edit_media(request, media):
-    """Check, if the request's user may edit the media details"""
-    if media['uploader'] == request.user['_id']:
-        return True
-    if request.user['is_admin']:
-        return True
-    return False
-    
-
 @get_user_media_entry
 @require_active_login
 def edit_media(request, media):
@@ -30,7 +22,10 @@ def edit_media(request, media):
         media['title'] = request.POST['title']
         media['description'] = request.POST['description']
         media['slug'] = request.POST['slug']
-        media.save()
+        try:
+            media.save()
+        except Exception as e:
+            return exc.HTTPConflict(detail = str(e))
 
         # redirect
         return exc.HTTPFound(