diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index d0c3c7fd3..9e05c03af 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -201,14 +201,13 @@ class Book(BookDataModel): @property def alt_text(self): """image alt test""" - text = self.title - if self.edition_info: - text += f" ({self.edition_info})" - return text + author = f"{name}: " if (name := self.author_text) else "" + edition = f" ({info})" if (info := self.edition_info) else "" + return f"{author}{self.title}{edition}" def save(self, *args: Any, **kwargs: Any) -> None: """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, Work)): raise ValueError("Books should be added as Editions or Works") return super().save(*args, **kwargs) diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index 590b7b873..8122e9505 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -92,7 +92,23 @@ class Book(TestCase): 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 (worm, Glorbish language, 2020)") + + def test_alt_text(self): + """text slug used for cover images""" + book = models.Edition.objects.create(title="Test Edition") + author = models.Author.objects.create(name="Author Name") + + self.assertEqual(book.alt_text, "Test Edition") + + book.authors.set([author]) + book.save() + + self.assertEqual(book.alt_text, "Author Name: Test Edition") + + book.physical_format = "worm" + book.published_date = timezone.make_aware(parse("2022")) + + self.assertEqual(book.alt_text, "Author Name: Test Edition (worm, 2022)") def test_get_rank(self): """sets the data quality index for the book"""