aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/user_pages/views.py
diff options
context:
space:
mode:
authorSebastian Spaeth <Sebastian@SSpaeth.de>2013-12-12 16:24:34 +0100
committerSebastian Spaeth <Sebastian@SSpaeth.de>2013-12-12 16:24:34 +0100
commita42dda21f96f5124d97011c318f068b92a4222b0 (patch)
tree13edbe92814c93a4b7cd01ff4ff1af779f3706a7 /mediagoblin/user_pages/views.py
parent070bc99c1eaecb6b8ca3d5f5a38942491bb1ef37 (diff)
parentafff1492f89822d6c36fcad8b74953db2375cebf (diff)
downloadmediagoblin-a42dda21f96f5124d97011c318f068b92a4222b0.tar.lz
mediagoblin-a42dda21f96f5124d97011c318f068b92a4222b0.tar.xz
mediagoblin-a42dda21f96f5124d97011c318f068b92a4222b0.zip
Merge branch 'master' into upstream-master
Conflicts: mediagoblin/templates/mediagoblin/base.html mediagoblin/templates/mediagoblin/user_pages/user.html
Diffstat (limited to 'mediagoblin/user_pages/views.py')
-rw-r--r--mediagoblin/user_pages/views.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 64fa793e..c0553b18 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -286,11 +286,29 @@ def media_collect(request, media):
#TODO: Why does @user_may_delete_media not implicate @require_active_login?
-@get_media_entry_by_id
-@require_active_login
-@user_may_delete_media
-def media_confirm_delete(request, media):
+@require_active_login
+def media_confirm_delete(request):
+
+ allowed_state = [u'failed', u'processed']
+ media = None
+ for media_state in allowed_state:
+ media = request.db.MediaEntry.query.filter_by(id=request.matchdict['media_id'], state=media_state).first()
+ if media:
+ break
+
+ if not media:
+ return render_404(request)
+
+ given_username = request.matchdict.get('user')
+ if given_username and (given_username != media.get_uploader.username):
+ return render_404(request)
+
+ uploader_id = media.uploader
+ if not (request.user.is_admin or
+ request.user.id == uploader_id):
+ raise Forbidden()
+
form = user_forms.ConfirmDeleteForm(request.form)
if request.method == 'POST' and form.validate():