X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/7fdf8249c9c016e397edc3112184e74b0f3f9778..bf3f18ce9313f4929ff327fbf12803157de171cb:/apps/catalogue/models/bookmedia.py?ds=sidebyside diff --git a/apps/catalogue/models/bookmedia.py b/apps/catalogue/models/bookmedia.py index 6291329f6..1ef3fd7b9 100644 --- a/apps/catalogue/models/bookmedia.py +++ b/apps/catalogue/models/bookmedia.py @@ -2,32 +2,35 @@ # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from collections import OrderedDict import json from collections import namedtuple from django.db import models from django.utils.translation import ugettext_lazy as _ -from django.utils.datastructures import SortedDict import jsonfield from fnpdjango.utils.text.slughifi import slughifi from catalogue.fields import OverwritingFileField +def _file_upload_to(i, _n): + return 'book/%(ext)s/%(name)s.%(ext)s' % { + 'ext': i.ext(), 'name': slughifi(i.name)} + class BookMedia(models.Model): """Represents media attached to a book.""" FileFormat = namedtuple("FileFormat", "name ext") - formats = SortedDict([ + formats = OrderedDict([ ('mp3', FileFormat(name='MP3', ext='mp3')), ('ogg', FileFormat(name='Ogg Vorbis', ext='ogg')), ('daisy', FileFormat(name='DAISY', ext='daisy.zip')), ]) - format_choices = [(k, _('%s file') % t.name) + format_choices = [(k, _('%s file' % t.name)) for k, t in formats.items()] type = models.CharField(_('type'), db_index=True, choices=format_choices, max_length=20) name = models.CharField(_('name'), max_length=512) file = OverwritingFileField(_('file'), max_length=600, - upload_to=lambda i, _n: 'book/%(ext)s/%(name)s.%(ext)s' % { - 'ext': i.ext(), 'name': slughifi(i.name)}) + upload_to=_file_upload_to) uploaded_at = models.DateTimeField(_('creation date'), auto_now_add=True, editable=False, db_index=True) extra_info = jsonfield.JSONField(_('extra information'), default={}, editable=False) book = models.ForeignKey('Book', related_name='media') @@ -43,7 +46,6 @@ class BookMedia(models.Model): app_label = 'catalogue' def save(self, *args, **kwargs): - from fnpdjango.utils.text.slughifi import slughifi from catalogue.utils import ExistingFile, remove_zip try: