one more noSuchFiles->no_such_files
[mediagoblin.git] / mediagoblin / tools / files.py
CommitLineData
03ae172a 1# GNU MediaGoblin -- federated, autonomous media hosting
cf29e8a8 2# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
03ae172a
AW
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17from mediagoblin import mg_globals
18
fb2fbe2c
JAN
19import os
20
21def _jointhat(thing):
22 if type(thing) == type(list()) or\
23 type(thing) == type(tuple()):
24 filepath = ""
25 for item in thing:
26 filepath = os.path.join(filepath, item)
27 return filepath
28 else:
29 raise TypeError, "expecting a list or tuple, {0} received".format(
30 str(type(thing)))
31
03ae172a
AW
32def delete_media_files(media):
33 """
34 Delete all files associated with a MediaEntry
35
36 Arguments:
37 - media: A MediaEntry document
38 """
6d539afd 39 no_such_files = []
228c4470 40 for listpath in media.media_files.itervalues():
fb2fbe2c
JAN
41 try:
42 mg_globals.public_store.delete_file(
43 listpath)
44 except OSError:
6d539afd 45 no_such_files.append(_jointhat(listpath))
03ae172a 46
35029581 47 for attachment in media.attachment_files:
fb2fbe2c
JAN
48 try:
49 mg_globals.public_store.delete_file(
50 attachment['filepath'])
51 except OSError:
6d539afd 52 no_such_files.append(_jointhat(attachment))
fb2fbe2c 53
6d539afd 54 if no_such_files:
fb2fbe2c 55 # This breaks pep8 as far as I know
a850b1e2 56 raise OSError, ", ".join(no_such_files)