From 2e8afb90e60640159de847844ff5510de4b9ef38 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 9 May 2020 18:55:45 -0700 Subject: [PATCH] Fixes bug in activitypub serialization of statuses --- fedireads/models/status.py | 21 +++++++++++++++++++++ fedireads/views.py | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/fedireads/models/status.py b/fedireads/models/status.py index 39cde35e..b567b9db 100644 --- a/fedireads/models/status.py +++ b/fedireads/models/status.py @@ -6,6 +6,7 @@ from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from model_utils.managers import InheritanceManager +from fedireads import activitypub from fedireads.utils.models import FedireadsModel @@ -48,6 +49,11 @@ class Status(FedireadsModel): return '%s/%s/%d' % (base_path, model_name, self.id) + @property + def activitypub_serialize(self): + return activitypub.get_status(self) + + class Comment(Status): ''' like a review but without a rating and transient ''' book = models.ForeignKey('Edition', on_delete=models.PROTECT) @@ -58,6 +64,11 @@ class Comment(Status): super().save(*args, **kwargs) + @property + def activitypub_serialize(self): + return activitypub.get_comment(self) + + class Quotation(Status): ''' like a review but without a rating and transient ''' book = models.ForeignKey('Edition', on_delete=models.PROTECT) @@ -69,6 +80,11 @@ class Quotation(Status): super().save(*args, **kwargs) + @property + def activitypub_serialize(self): + return activitypub.get_quotation(self) + + class Review(Status): ''' a book review ''' name = models.CharField(max_length=255, null=True) @@ -86,6 +102,11 @@ class Review(Status): super().save(*args, **kwargs) + @property + def activitypub_serialize(self): + return activitypub.get_review(self) + + class Favorite(FedireadsModel): ''' fav'ing a post ''' user = models.ForeignKey('User', on_delete=models.PROTECT) diff --git a/fedireads/views.py b/fedireads/views.py index 2d2ca9ae..a1201297 100644 --- a/fedireads/views.py +++ b/fedireads/views.py @@ -330,7 +330,7 @@ def status_page(request, username, status_id): return HttpResponseNotFound() if is_api_request(request): - return JsonResponse(activitypub.get_status(status)) + return JsonResponse(status.activitypub_serialize) data = { 'status': status,