Merge remote-tracking branch 'refs/remotes/merge-requests/37'

This commit is contained in:
Christopher Allan Webber 2012-07-06 08:52:35 -05:00
commit 46583ff4e6
2 changed files with 40 additions and 5 deletions

View File

@ -16,6 +16,19 @@
from mediagoblin import mg_globals
import os
def _jointhat(thing):
if type(thing) == type(list()) or\
type(thing) == type(tuple()):
filepath = ""
for item in thing:
filepath = os.path.join(filepath, item)
return filepath
else:
raise TypeError, "expecting a list or tuple, {0} received".format(
str(type(thing)))
def delete_media_files(media):
"""
Delete all files associated with a MediaEntry
@ -23,10 +36,21 @@ def delete_media_files(media):
Arguments:
- media: A MediaEntry document
"""
no_such_files = []
for listpath in media.media_files.itervalues():
mg_globals.public_store.delete_file(
listpath)
try:
mg_globals.public_store.delete_file(
listpath)
except OSError:
no_such_files.append(_jointhat(listpath))
for attachment in media.attachment_files:
mg_globals.public_store.delete_file(
attachment['filepath'])
try:
mg_globals.public_store.delete_file(
attachment['filepath'])
except OSError:
no_such_files.append(_jointhat(attachment))
if no_such_files:
# This breaks pep8 as far as I know
raise OSError, ", ".join(noSuchFiles)

View File

@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from webob import exc
import logging
from mediagoblin import messages, mg_globals
from mediagoblin.db.util import DESCENDING, ObjectId
@ -33,6 +34,9 @@ from werkzeug.contrib.atom import AtomFeed
from mediagoblin.media_types import get_media_manager
_log = logging.getLogger(__name__)
_log.setLevel(logging.DEBUG)
@uses_pagination
def user_home(request, page):
"""'Homepage' of a User()"""
@ -185,7 +189,14 @@ def media_confirm_delete(request, media):
comment.delete()
# Delete all files on the public storage
delete_media_files(media)
try:
delete_media_files(media)
except OSError, error:
_log.error('No such files from the user "{1}"'
' to delete: {0}'.format(str(error), username))
messages.add_message(request, messages.ERROR,
_('Some of the files with this entry seem'
' to be missing. Deleting anyway.'))
media.delete()
messages.add_message(