summaryrefslogtreecommitdiffstats
path: root/activities/models/timeline_event.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/models/timeline_event.py')
-rw-r--r--activities/models/timeline_event.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/activities/models/timeline_event.py b/activities/models/timeline_event.py
index e598e3f..30d473d 100644
--- a/activities/models/timeline_event.py
+++ b/activities/models/timeline_event.py
@@ -1,5 +1,7 @@
from django.db import models
+from core.ld import format_ld_date
+
class TimelineEvent(models.Model):
"""
@@ -143,3 +145,26 @@ class TimelineEvent(models.Model):
subject_post_id=interaction.post_id,
subject_identity_id=interaction.identity_id,
).delete()
+
+ ### Mastodon Client API ###
+
+ def to_mastodon_notification_json(self):
+ result = {
+ "id": self.pk,
+ "created_at": format_ld_date(self.created),
+ "account": self.subject_identity.to_mastodon_json(),
+ }
+ if self.type == self.Types.liked:
+ result["type"] = "favourite"
+ result["status"] = self.subject_post.to_mastodon_json()
+ elif self.type == self.Types.boosted:
+ result["type"] = "reblog"
+ result["status"] = self.subject_post.to_mastodon_json()
+ elif self.type == self.Types.mentioned:
+ result["type"] = "mention"
+ result["status"] = self.subject_post.to_mastodon_json()
+ elif self.type == self.Types.followed:
+ result["type"] = "follow"
+ else:
+ raise ValueError(f"Cannot convert {self.type} to notification JSON")
+ return result