From 80a1180090cd23f7629dd261a7fe9c63e477661d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=
Date: Mon, 25 Sep 2023 15:03:52 -0300
Subject: [PATCH 1/2] Include author name when serializing Quotation
---
bookwyrm/models/status.py | 3 ++-
bookwyrm/tests/models/test_status_model.py | 23 ++++++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py
index 5d61094684..11646431b3 100644
--- a/bookwyrm/models/status.py
+++ b/bookwyrm/models/status.py
@@ -366,7 +366,8 @@ def pure_content(self):
quote = re.sub(r"^", '
"', self.quote)
quote = re.sub(r"
$", '"
', quote)
title, href = self.book.title, self.book.remote_id
- citation = f'— {title}'
+ author = f"{name}: " if (name := self.book.author_text) else ""
+ citation = f'— {author}{title}'
if position := self._format_position():
citation += f", {position}"
return f"{quote} {citation}
{self.content}"
diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py
index 760849f28d..d1f07b44e5 100644
--- a/bookwyrm/tests/models/test_status_model.py
+++ b/bookwyrm/tests/models/test_status_model.py
@@ -314,6 +314,29 @@ def test_quotation_to_pure_activity(self, *_):
)
self.assertEqual(activity["attachment"][0]["name"], "Test Edition")
+ def test_quotation_with_author_to_pure_activity(self, *_):
+ """serialization of quotation of a book with author and edition info"""
+ self.book.authors.set([models.Author.objects.create(name="Author Name")])
+ self.book.physical_format = "worm"
+ self.book.save()
+ status = models.Quotation.objects.create(
+ quote="quote",
+ content="",
+ user=self.local_user,
+ book=self.book,
+ )
+ activity = status.to_activity(pure=True)
+ self.assertEqual(
+ activity["content"],
+ (
+ f'quote — Author Name: '
+ "Test Edition
"
+ ),
+ )
+ self.assertEqual(
+ activity["attachment"][0]["name"], "Author Name: Test Edition (worm)"
+ )
+
def test_quotation_page_serialization(self, *_):
"""serialization of quotation page position"""
tests = [
From 7cfdf235bc96fd8cc97d2f4201d4a6c06d719f7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=
Date: Mon, 25 Sep 2023 15:28:24 -0300
Subject: [PATCH 2/2] Include author in cover image alt text
---
bookwyrm/models/book.py | 9 ++++-----
bookwyrm/tests/models/test_book_model.py | 18 +++++++++++++++++-
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py
index d0c3c7fd34..9e05c03af5 100644
--- a/bookwyrm/models/book.py
+++ b/bookwyrm/models/book.py
@@ -201,14 +201,13 @@ def edition_info(self):
@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 590b7b8738..8122e95051 100644
--- a/bookwyrm/tests/models/test_book_model.py
+++ b/bookwyrm/tests/models/test_book_model.py
@@ -92,7 +92,23 @@ def test_get_edition_info(self):
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"""