forked from mirrors/bookwyrm
Make alt text a model property
This commit is contained in:
parent
2799ed68e3
commit
39dc0501a5
6 changed files with 43 additions and 46 deletions
|
@ -58,6 +58,21 @@ class Book(ActivitypubMixin, BookWyrmModel):
|
||||||
|
|
||||||
objects = InheritanceManager()
|
objects = InheritanceManager()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def edition_info(self):
|
||||||
|
''' properties of this edition, as a string '''
|
||||||
|
items = [
|
||||||
|
self.physical_format if isinstance(self, models.Edition) else None,
|
||||||
|
self.languages[0] + ' language' if self.languages and \
|
||||||
|
self.languages[0] != 'English' else None,
|
||||||
|
str(self.published_date.year) if self.published_date else None,
|
||||||
|
]
|
||||||
|
return ', '.join(i for i in items if i)
|
||||||
|
|
||||||
|
def alt_text(self):
|
||||||
|
''' image alt test '''
|
||||||
|
return '%s cover (%s)' % (self.title, self.edition_info)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
''' can't be abstract for query reasons, but you shouldn't USE it '''
|
''' can't be abstract for query reasons, but you shouldn't USE it '''
|
||||||
if not isinstance(self, Edition) and not isinstance(self, Work):
|
if not isinstance(self, Edition) and not isinstance(self, Work):
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{% load bookwyrm_tags %}
|
{% load bookwyrm_tags %}
|
||||||
<div class="cover-container is-{{ size }}">
|
<div class="cover-container is-{{ size }}">
|
||||||
{% if book.cover %}
|
{% if book.cover %}
|
||||||
<img class="book-cover" src="/images/{{ book.cover }}" alt="{% include 'snippets/cover_alt.html' with book=book %}">
|
<img class="book-cover" src="/images/{{ book.cover }}" alt="{{ book.alt_text }}">
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="no-cover book-cover">
|
<div class="no-cover book-cover">
|
||||||
<img class="book-cover" src="/static/images/no_cover.jpg" alt="No cover">
|
<img class="book-cover" src="/static/images/no_cover.jpg" alt="No cover">
|
||||||
<div>
|
<div>
|
||||||
<p>{{ book.title }}</p>
|
<p>{{ book.title }}</p>
|
||||||
<p>({{ book|edition_info }})</p>
|
<p>({{ book.edition_info }})</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
{% load bookwyrm_tags %}
|
|
||||||
'{{ book.title }}' Cover ({{ book|edition_info }})
|
|
|
@ -97,20 +97,6 @@ def get_boosted(boost):
|
||||||
).get()
|
).get()
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='edition_info')
|
|
||||||
def get_edition_info(book):
|
|
||||||
''' paperback, French language, 1982 '''
|
|
||||||
if not book:
|
|
||||||
return ''
|
|
||||||
items = [
|
|
||||||
book.physical_format if isinstance(book, models.Edition) else None,
|
|
||||||
book.languages[0] + ' language' if book.languages and \
|
|
||||||
book.languages[0] != 'English' else None,
|
|
||||||
str(book.published_date.year) if book.published_date else None,
|
|
||||||
]
|
|
||||||
return ', '.join(i for i in items if i)
|
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='book_description')
|
@register.filter(name='book_description')
|
||||||
def get_book_description(book):
|
def get_book_description(book):
|
||||||
''' use the work's text if the book doesn't have it '''
|
''' use the work's text if the book doesn't have it '''
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
''' testing models '''
|
''' testing models '''
|
||||||
|
from dateutil.parser import parse
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from bookwyrm import models, settings
|
from bookwyrm import models, settings
|
||||||
from bookwyrm.models.book import isbn_10_to_13, isbn_13_to_10
|
from bookwyrm.models.book import isbn_10_to_13, isbn_13_to_10
|
||||||
|
@ -56,3 +58,27 @@ class Book(TestCase):
|
||||||
isbn_13 = '978-1788-16167-1'
|
isbn_13 = '978-1788-16167-1'
|
||||||
isbn_10 = isbn_13_to_10(isbn_13)
|
isbn_10 = isbn_13_to_10(isbn_13)
|
||||||
self.assertEqual(isbn_10, '178816167X')
|
self.assertEqual(isbn_10, '178816167X')
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_edition_info(self):
|
||||||
|
''' text slug about an edition '''
|
||||||
|
book = models.Book.object.create(title='Test Edition')
|
||||||
|
self.assertEqual(book.edition_info, '')
|
||||||
|
|
||||||
|
book.physical_format = 'worm'
|
||||||
|
book.save()
|
||||||
|
self.assertEqual(book.edition_info, 'worm')
|
||||||
|
|
||||||
|
book.languages = ['English']
|
||||||
|
book.save()
|
||||||
|
self.assertEqual(book.edition_info, 'worm')
|
||||||
|
|
||||||
|
book.languages = ['Glorbish', 'English']
|
||||||
|
book.save()
|
||||||
|
self.assertEqual(book.edition_info, 'worm, Glorbish language')
|
||||||
|
|
||||||
|
book.published_date = timezone.make_aware(parse('2020'))
|
||||||
|
book.save()
|
||||||
|
self.assertEqual(book.edition_info, 'worm, Glorbish language, 2020')
|
||||||
|
self.assertEqual(
|
||||||
|
book.alt_text, 'Test Edition cover (worm, Glorbish language, 2020)')
|
||||||
|
|
|
@ -158,34 +158,6 @@ class TemplateTags(TestCase):
|
||||||
self.assertEqual(boosted, status)
|
self.assertEqual(boosted, status)
|
||||||
|
|
||||||
|
|
||||||
def test_get_edition_info(self):
|
|
||||||
''' text slug about an edition '''
|
|
||||||
self.assertEqual(
|
|
||||||
bookwyrm_tags.get_edition_info(self.book), '')
|
|
||||||
|
|
||||||
self.book.physical_format = 'worm'
|
|
||||||
self.book.save()
|
|
||||||
self.assertEqual(
|
|
||||||
bookwyrm_tags.get_edition_info(self.book), 'worm')
|
|
||||||
|
|
||||||
self.book.languages = ['English']
|
|
||||||
self.book.save()
|
|
||||||
self.assertEqual(
|
|
||||||
bookwyrm_tags.get_edition_info(self.book), 'worm')
|
|
||||||
|
|
||||||
self.book.languages = ['Glorbish', 'English']
|
|
||||||
self.book.save()
|
|
||||||
self.assertEqual(
|
|
||||||
bookwyrm_tags.get_edition_info(self.book),
|
|
||||||
'worm, Glorbish language')
|
|
||||||
|
|
||||||
self.book.published_date = timezone.make_aware(parse('2020'))
|
|
||||||
self.book.save()
|
|
||||||
self.assertEqual(
|
|
||||||
bookwyrm_tags.get_edition_info(self.book),
|
|
||||||
'worm, Glorbish language, 2020')
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_book_description(self):
|
def test_get_book_description(self):
|
||||||
''' grab it from the edition or the parent '''
|
''' grab it from the edition or the parent '''
|
||||||
work = models.Work.objects.create(title='Test Work')
|
work = models.Work.objects.create(title='Test Work')
|
||||||
|
|
Loading…
Reference in a new issue