X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5aa7e3bcddd7bac5e9f553e7f6d22e20799293d7..66cc5b69e597087e8ab5b52f8e8aff1d942d6674:/src/catalogue/models/bookmedia.py diff --git a/src/catalogue/models/bookmedia.py b/src/catalogue/models/bookmedia.py index de493d747..14483eb83 100644 --- a/src/catalogue/models/bookmedia.py +++ b/src/catalogue/models/bookmedia.py @@ -13,7 +13,13 @@ from catalogue.fields import OverwriteStorage def _file_upload_to(i, _n): - return 'book/%(ext)s/%(name)s.%(ext)s' % {'ext': i.ext(), 'name': slugify(i.name)} + name = i.book.slug + if i.index: + name += f'_{i.index:03d}' + if i.part_name: + name += f'_' + slugify(i.part_name) + ext = i.ext() + return f'book/{ext}/{name}.{ext}' class BookMedia(models.Model): @@ -32,15 +38,17 @@ class BookMedia(models.Model): index = models.IntegerField(_('index'), default=0) file = models.FileField(_('file'), max_length=600, upload_to=_file_upload_to, storage=OverwriteStorage()) uploaded_at = models.DateTimeField(_('creation date'), auto_now_add=True, editable=False, db_index=True) + project_description = models.CharField(max_length=2048, blank=True) + project_icon = models.CharField(max_length=2048, blank=True) extra_info = models.TextField(_('extra information'), default='{}', editable=False) book = models.ForeignKey('Book', models.CASCADE, related_name='media') source_sha1 = models.CharField(null=True, blank=True, max_length=40, editable=False) def __str__(self): - return "%s (%s)" % (self.name, self.file.name.split("/")[-1]) + return self.file.name.split("/")[-1] class Meta: - ordering = ('type', 'name') + ordering = ('type', 'index') verbose_name = _('book media') verbose_name_plural = _('book media') app_label = 'catalogue' @@ -90,7 +98,7 @@ class BookMedia(models.Model): import mutagen from mutagen import id3 - artist_name = director_name = project = funded_by = '' + artist_name = director_name = project = funded_by = license = '' if self.type == 'mp3': try: audio = id3.ID3(self.file.path)