titles are not filename safe

This commit is contained in:
j 2012-01-17 16:42:39 +05:30
parent 06069b71e2
commit 0700bf7b95
3 changed files with 13 additions and 4 deletions

View file

@ -919,13 +919,14 @@ class Item(models.Model):
shutil.rmtree(base)
ox.makedirs(base)
base = self.path('torrent/%s' % self.get('title'))
filename = utils.sefe_filename(self.get('title'))
base = self.path('torrent/%s' % filename)
base = os.path.abspath(os.path.join(settings.MEDIA_ROOT, base))
size = 0
duration = 0.0
if streams.count() == 1:
url = "%s/torrent/%s.webm" % (self.get_absolute_url(),
quote(self.get('title').encode('utf-8')))
quote(filename.encode('utf-8')))
video = "%s.webm" % base
v = streams[0]
os.symlink(v.video.path, video)
@ -936,7 +937,7 @@ class Item(models.Model):
part = 1
os.makedirs(base)
for v in streams:
video = "%s/%s.Part %d.webm" % (base, self.get('title'), part)
video = "%s/%s.Part %d.webm" % (base, filename, part)
part += 1
os.symlink(v.video.path, video)
size += v.video.size

View file

@ -6,6 +6,14 @@ import re
import unicodedata
import ox
def safe_filename(filename):
filename = filename.replace('_ ', ': ')
filename = filename.replace('/', '_')
filename = filename.replace('\\', '_')
if filename.endswith('.'):
filename = filename[:-1] + '_'
return filename
def decode_id(id):
try:
id = ox.fromAZ(id)

View file

@ -725,7 +725,7 @@ def torrent(request, id, filename=None):
if not filename or filename.endswith('.torrent'):
response = HttpResponse(item.get_torrent(request),
content_type='application/x-bittorrent')
filename = "%s.torrent" % item.get('title')
filename = utils.safe_filename("%s.torrent" % item.get('title'))
response['Content-Disposition'] = 'attachment; filename="%s"' % filename.encode('utf-8')
return response
while filename.startswith('/'):