From 25fd7276ea23d69a707414eb874363601cdcc433 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adeodato=20Sim=C3=B3?= (comment on '
- f'"{self.book.title}", page {self.progress}) (comment on '
- f'"{self.book.title}") ({citation}) ", ' "', self.quote)
quote = re.sub(r"
-- ' - f'"{self.book.title}", page {self.position}
{self.content}' - ) - else: - return_value = ( - f'{quote} {self.content}' - ) - return return_value + citation += f", page {self.position}" + return f"{quote}{citation}
{self.content}" activity_serializer = activitypub.Quotation From 1322a0c6939f364a023aa0df1c01e9685d4c31f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=({citation})
" activity_serializer = activitypub.Comment @@ -358,7 +358,7 @@ class Quotation(BookStatus): quote = re.sub(r"$", '"', quote) citation = f'-- "{self.book.title}"' if self.position_mode == "PG" and self.position and (self.position > 0): - citation += f", page {self.position}" + citation += f", p. {self.position}" return f"{quote}{citation}
{self.content}" activity_serializer = activitypub.Quotation diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index 72aa0ca6c..d41b80575 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -249,14 +249,14 @@ class Status(TestCase): def test_comment_to_pure_activity(self, *_): """subclass of the base model version with a "pure" serializer""" status = models.Comment.objects.create( - content="test content", user=self.local_user, book=self.book + content="test content", user=self.local_user, book=self.book, progress=27 ) activity = status.to_activity(pure=True) self.assertEqual(activity["id"], status.remote_id) self.assertEqual(activity["type"], "Note") self.assertEqual( activity["content"], - f'test content(comment on "Test Edition")
', + f'test content(comment on "Test Edition", p. 27)
', ) self.assertEqual(activity["attachment"][0]["type"], "Document") # self.assertTrue( From ce3885d4f6bed6761cac6761682a8982a4170188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=", '
"', self.quote) quote = re.sub(r"
$", '"', quote) citation = f'-- "{self.book.title}"' - if self.position_mode == "PG" and self.position and (self.position > 0): - citation += f", p. {self.position}" + if position := self._format_position(): + citation += f", {position}" return f"{quote}{citation}
{self.content}" activity_serializer = activitypub.Quotation diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index d41b80575..15d73de9c 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -306,6 +306,29 @@ class Status(TestCase): ) self.assertEqual(activity["attachment"][0]["name"], "Test Edition") + def test_quotation_page_serialization(self, *_): + """serialization of quotation page position""" + tests = [ + ("single pos", 7, None, "p. 7"), + ("page range", 7, 10, "pp. 7-10"), + ] + for desc, beg, end, pages in tests: + with self.subTest(desc): + status = models.Quotation.objects.create( + quote="my quote
", + content="", + user=self.local_user, + book=self.book, + position=beg, + endposition=end, + position_mode="PG", + ) + activity = status.to_activity(pure=True) + self.assertRegex( + activity["content"], + f'^"my quote"
-- , {pages}
$', + ) + def test_review_to_activity(self, *_): """subclass of the base model version with a "pure" serializer""" status = models.Review.objects.create( From cc05cabcb57d340f87a3ae44856fe6574bec7eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=", '
"', self.quote) quote = re.sub(r"
$", '"', quote) - citation = f'-- "{self.book.title}"' + title, href = self.book.title, self.book.remote_id + citation = f'— {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 15d73de9c..760849f28 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -212,7 +212,7 @@ class Status(TestCase): def test_generated_note_to_pure_activity(self, *_): """subclass of the base model version with a "pure" serializer""" status = models.GeneratedNote.objects.create( - content="test content", user=self.local_user + content="reads", user=self.local_user ) status.mention_books.set([self.book]) status.mention_users.set([self.local_user]) @@ -220,7 +220,7 @@ class Status(TestCase): self.assertEqual(activity["id"], status.remote_id) self.assertEqual( activity["content"], - f'mouse test content "Test Edition"', + f'mouse reads Test Edition', ) self.assertEqual(len(activity["tag"]), 2) self.assertEqual(activity["type"], "Note") @@ -256,7 +256,11 @@ class Status(TestCase): self.assertEqual(activity["type"], "Note") self.assertEqual( activity["content"], - f'test content(comment on "Test Edition", p. 27)
', + ( + "test content" + f'(comment on ' + "Test Edition, p. 27)
" + ), ) self.assertEqual(activity["attachment"][0]["type"], "Document") # self.assertTrue( @@ -295,7 +299,11 @@ class Status(TestCase): self.assertEqual(activity["type"], "Note") self.assertEqual( activity["content"], - f'a sickening sense test content', + ( + "a sickening sense " + f'test content" + ), ) self.assertEqual(activity["attachment"][0]["type"], "Document") self.assertTrue( @@ -326,7 +334,7 @@ class Status(TestCase): activity = status.to_activity(pure=True) self.assertRegex( activity["content"], - f'^"my quote"
-- , {pages}
$', + f'^"my quote"
$', ) def test_review_to_activity(self, *_): From fadf30b94216a407aceb3d089595fc40e8bc446e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adeodato=20Sim=C3=B3?=