X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5eaa85a6a703ca0d05063850211eddc414a912b4..52228a02e5543556ce690e25472e95795693563a:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index ab480d7fc..455296217 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -156,26 +156,37 @@ class Tag(TagBase): # TODO: why is this hard-coded ? -def book_upload_path(ext=None): +def book_upload_path(ext=None, maxlen=100): def get_dynamic_path(media, filename, ext=ext): # how to put related book's slug here? if not ext: - ext = media.type + if media.type == 'daisy': + ext = 'daisy.zip' + else: + ext = media.type if not media.name: name = slughifi(filename.split(".")[0]) else: name = slughifi(media.name) - return 'lektura/%s.%s' % (name, ext) + return 'lektura/%s.%s' % (name[:maxlen-len('lektura/.%s' % ext)-4], ext) return get_dynamic_path class BookMedia(models.Model): type = models.CharField(_('type'), choices=MEDIA_FORMATS, max_length="100") - name = models.CharField(_('name'), max_length="100", blank=True) - file = models.FileField(_('file'), upload_to=book_upload_path(), blank=True) + name = models.CharField(_('name'), max_length="100") + file = models.FileField(_('file'), upload_to=book_upload_path()) uploaded_at = models.DateTimeField(_('creation date'), auto_now_add=True, editable=False) extra_info = JSONField(_('extra information'), default='{}') + def book_count(self): + return self.book_set.count() + book_count.short_description = _('book count') + + def books(self): + return mark_safe('
'.join("%s" % (reverse('admin:catalogue_book_change', args=[b.id]), b.title) for b in self.book_set.all())) + books.short_description = _('books') + def __unicode__(self): return "%s (%s)" % (self.name, self.file.name.split("/")[-1]) @@ -547,7 +558,7 @@ class Book(models.Model): tag.save() book_tags.append(tag) - book.tags = book_tags + book_shelves + book.tags = set(book_tags + book_shelves) book_tag = book.book_tag()