fixing bug #255 as Joar and CWebber ask me to do :)
This commit is contained in:
parent
ddaf070ad7
commit
fb2fbe2c0a
@ -64,12 +64,7 @@ class BasicFileStorage(StorageInterface):
|
|||||||
def delete_file(self, filepath):
|
def delete_file(self, filepath):
|
||||||
# TODO: Also delete unused directories if empty (safely, with
|
# TODO: Also delete unused directories if empty (safely, with
|
||||||
# checks to avoid race conditions).
|
# checks to avoid race conditions).
|
||||||
try:
|
|
||||||
os.remove(self._resolve_filepath(filepath))
|
os.remove(self._resolve_filepath(filepath))
|
||||||
except OSError:
|
|
||||||
# the file do not exists!
|
|
||||||
# This should fix bug #255
|
|
||||||
pass
|
|
||||||
|
|
||||||
def file_url(self, filepath):
|
def file_url(self, filepath):
|
||||||
if not self.base_url:
|
if not self.base_url:
|
||||||
|
@ -16,6 +16,19 @@
|
|||||||
|
|
||||||
from mediagoblin import mg_globals
|
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):
|
def delete_media_files(media):
|
||||||
"""
|
"""
|
||||||
Delete all files associated with a MediaEntry
|
Delete all files associated with a MediaEntry
|
||||||
@ -23,10 +36,21 @@ def delete_media_files(media):
|
|||||||
Arguments:
|
Arguments:
|
||||||
- media: A MediaEntry document
|
- media: A MediaEntry document
|
||||||
"""
|
"""
|
||||||
|
noSuchFiles = []
|
||||||
for listpath in media.media_files.itervalues():
|
for listpath in media.media_files.itervalues():
|
||||||
|
try:
|
||||||
mg_globals.public_store.delete_file(
|
mg_globals.public_store.delete_file(
|
||||||
listpath)
|
listpath)
|
||||||
|
except OSError:
|
||||||
|
noSuchFiles.append(_jointhat(listpath))
|
||||||
|
|
||||||
for attachment in media.attachment_files:
|
for attachment in media.attachment_files:
|
||||||
|
try:
|
||||||
mg_globals.public_store.delete_file(
|
mg_globals.public_store.delete_file(
|
||||||
attachment['filepath'])
|
attachment['filepath'])
|
||||||
|
except OSError:
|
||||||
|
noSuchFiles.append(_jointhat(attachment))
|
||||||
|
|
||||||
|
if noSuchFiles:
|
||||||
|
# This breaks pep8 as far as I know
|
||||||
|
raise OSError, ", ".join(noSuchFiles)
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
import logging
|
||||||
|
|
||||||
from mediagoblin import messages, mg_globals
|
from mediagoblin import messages, mg_globals
|
||||||
from mediagoblin.db.util import DESCENDING, ObjectId
|
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
|
from mediagoblin.media_types import get_media_manager
|
||||||
|
|
||||||
|
|
||||||
|
_log = logging.getLogger(__name__)
|
||||||
|
_log.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
@uses_pagination
|
@uses_pagination
|
||||||
def user_home(request, page):
|
def user_home(request, page):
|
||||||
"""'Homepage' of a User()"""
|
"""'Homepage' of a User()"""
|
||||||
@ -185,7 +189,14 @@ def media_confirm_delete(request, media):
|
|||||||
comment.delete()
|
comment.delete()
|
||||||
|
|
||||||
# Delete all files on the public storage
|
# Delete all files on the public storage
|
||||||
|
try:
|
||||||
delete_media_files(media)
|
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()
|
media.delete()
|
||||||
messages.add_message(
|
messages.add_message(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user