lib.itmens/social/models.py
2025-02-22 19:46:56 -05:00

43 lines
1.3 KiB
Python

"""
Models for Social app
DataSignalManager captures create/update/(soft/hard)delete/add/remove from Journal app, and generate Activity objects,
ActivityManager generates chronological view for user and, in future, ActivityStreams
"""
from django.db import models
from django.utils import timezone
from journal.models import (
Piece,
UserOwnedObjectMixin,
)
from users.models import APIdentity
class ActivityTemplate(models.TextChoices):
MarkItem = "mark_item"
ReviewItem = "review_item"
CreateCollection = "create_collection"
LikeCollection = "like_collection"
FeatureCollection = "feature_collection"
CommentChildItem = "comment_child_item"
class LocalActivity(models.Model, UserOwnedObjectMixin):
owner = models.ForeignKey(APIdentity, on_delete=models.CASCADE)
visibility = models.PositiveSmallIntegerField(default=0) # type: ignore
template = models.CharField(
blank=False, choices=ActivityTemplate.choices, max_length=50
)
action_object = models.ForeignKey(Piece, on_delete=models.CASCADE)
created_time = models.DateTimeField(default=timezone.now, db_index=True)
class Meta:
index_together = [
["owner", "created_time"],
]
def __str__(self):
return f"Activity [{self.owner}:{self.template}:{self.action_object}]"