diff --git a/bookwyrm/models/base_model.py b/bookwyrm/models/base_model.py index b212d693..60b04d18 100644 --- a/bookwyrm/models/base_model.py +++ b/bookwyrm/models/base_model.py @@ -145,9 +145,11 @@ class ActivitypubMixin: if hasattr(self, 'serialize_reverse_fields'): # for example, editions of a work - for model_field_name, activity_field_name in \ + for model_field_name, activity_field_name, sort_field in \ self.serialize_reverse_fields: - related_field = getattr(self, model_field_name) + related_field = getattr( + self, model_field_name + ).order_by(sort_field) activity[activity_field_name] = \ unfurl_related_field(related_field) diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index 07d1d5dc..49b9f0a9 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -144,7 +144,7 @@ class Work(OrderedCollectionPageMixin, Book): ) activity_serializer = activitypub.Work - serialize_reverse_fields = [('editions', 'editions')] + serialize_reverse_fields = [('editions', 'editions', '-edition_rank')] deserialize_reverse_fields = [('editions', 'editions')] diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py index 2494c458..dad65974 100644 --- a/bookwyrm/models/status.py +++ b/bookwyrm/models/status.py @@ -47,7 +47,7 @@ class Status(OrderedCollectionPageMixin, BookWyrmModel): objects = InheritanceManager() activity_serializer = activitypub.Note - serialize_reverse_fields = [('attachments', 'attachment')] + serialize_reverse_fields = [('attachments', 'attachment', 'id')] deserialize_reverse_fields = [('attachments', 'attachment')] @classmethod diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 4cbe387f..ef68f992 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -200,7 +200,7 @@ class KeyPair(ActivitypubMixin, BookWyrmModel): blank=True, null=True, activitypub_field='publicKeyPem') activity_serializer = activitypub.PublicKey - serialize_reverse_fields = [('owner', 'owner')] + serialize_reverse_fields = [('owner', 'owner', 'id')] def get_remote_id(self): # self.owner is set by the OneToOneField on User