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(): if form.confirm.data is True: username = media.get_uploader.username # Delete MediaEntry and all related files, comments etc. media.delete() messages.add_message( request, messages.SUCCESS, _('You deleted the media.')) location = media.url_to_next(request.urlgen) if not location: location=media.url_to_prev(request.urlgen) if not location: location=request.urlgen("mediagoblin.user_pages.user_home", user=username) return redirect(request, location=location) else: messages.add_message( request, messages.ERROR, _("The media was not deleted because you didn't check that you were sure.")) return redirect_obj(request, media) if ((request.user.is_admin and request.user.id != media.uploader)): messages.add_message( request, messages.WARNING, _("You are about to delete another user's media. " "Proceed with caution.")) return render_to_response( request, 'mediagoblin/user_pages/media_confirm_delete.html', {'media': media, 'form': form})
def collection_confirm_delete(request, collection): form = user_forms.ConfirmDeleteForm(request.form) if request.method == 'POST' and form.validate(): username = collection.get_actor.username if form.confirm.data is True: collection_title = collection.title # Firstly like with the MediaEntry delete, lets ensure the # public_id is populated as this is really important! collection.get_public_id(request.urlgen) # Delete all the associated collection items for item in collection.get_collection_items(): obj = item.get_object() obj.save() item.delete() collection.delete() messages.add_message( request, messages.SUCCESS, _('You deleted the collection "%s"') % collection_title) return redirect(request, "mediagoblin.user_pages.user_home", user=username) else: messages.add_message( request, messages.ERROR, _("The collection was not deleted because you didn't " "check that you were sure.")) return redirect_obj(request, collection) if (request.user.has_privilege('admin') and request.user.id != collection.actor): messages.add_message( request, messages.WARNING, _("You are about to delete another user's collection. " "Proceed with caution.")) return render_to_response( request, 'mediagoblin/user_pages/collection_confirm_delete.html', { 'collection': collection, 'form': form })
def media_confirm_delete(request, media): form = user_forms.ConfirmDeleteForm(request.form) if request.method == 'POST' and form.validate(): if form.confirm.data is True: username = media.get_actor.username # This probably is already filled but just in case it has slipped # through the net somehow, we need to try and make sure the # MediaEntry has a public ID so it gets properly soft-deleted. media.get_public_id(request.urlgen) # Decrement the users uploaded quota. media.get_actor.uploaded = media.get_actor.uploaded - \ media.file_size media.get_actor.save() # Delete MediaEntry and all related files, comments etc. media.delete() messages.add_message(request, messages.SUCCESS, _('You deleted the media.')) location = media.url_to_next(request.urlgen) if not location: location = media.url_to_prev(request.urlgen) if not location: location = request.urlgen("mediagoblin.user_pages.user_home", user=username) return redirect(request, location=location) else: messages.add_message( request, messages.ERROR, _("The media was not deleted because you didn't check " "that you were sure.")) return redirect_obj(request, media) if (request.user.has_privilege('admin') and request.user.id != media.actor): messages.add_message( request, messages.WARNING, _("You are about to delete another user's media. " "Proceed with caution.")) return render_to_response( request, 'mediagoblin/user_pages/media_confirm_delete.html', { 'media': media, 'form': form })
def collection_confirm_delete(request, collection): form = user_forms.ConfirmDeleteForm(request.form) if request.method == 'POST' and form.validate(): username = collection.get_creator.username if form.confirm.data is True: collection_title = collection.title # Delete all the associated collection items for item in collection.get_collection_items(): entry = item.get_media_entry entry.collected = entry.collected - 1 entry.save() item.delete() collection.delete() messages.add_message( request, messages.SUCCESS, _('You deleted the collection "%s"') % collection_title) return redirect(request, "mediagoblin.user_pages.user_home", user=username) else: messages.add_message( request, messages.ERROR, _("The collection was not deleted because you didn't check that you were sure." )) return redirect_obj(request, collection) if ((request.user.is_admin and request.user.id != collection.creator)): messages.add_message( request, messages.WARNING, _("You are about to delete another user's collection. " "Proceed with caution.")) return render_to_response( request, 'mediagoblin/user_pages/collection_confirm_delete.html', { 'collection': collection, 'form': form })
def media_confirm_delete(request, media): form = user_forms.ConfirmDeleteForm(request.form) if request.method == 'POST' and form.validate(): if form.confirm.data is True: username = media.get_uploader.username media.get_uploader.uploaded = media.get_uploader.uploaded - \ media.file_size media.get_uploader.save() # Delete MediaEntry and all related files, comments etc. media.delete() messages.add_message( request, messages.SUCCESS, _('You deleted the media.')) location = media.url_to_next(request.urlgen) if not location: location=media.url_to_prev(request.urlgen) if not location: location=request.urlgen("mediagoblin.user_pages.user_home", user=username) return redirect(request, location=location) else: messages.add_message( request, messages.ERROR, _("The media was not deleted because you didn't check that you were sure.")) return redirect_obj(request, media) if ((request.user.has_privilege(u'admin') and request.user.id != media.uploader)): messages.add_message( request, messages.WARNING, _("You are about to delete another user's media. " "Proceed with caution.")) return render_to_response( request, 'mediagoblin/user_pages/media_confirm_delete.html', {'media': media, 'form': form})