lib.itmens/social/models.py

44 lines
1.3 KiB
Python
Raw Permalink Normal View History

2022-12-13 06:44:29 +00:00
"""
Models for Social app
DataSignalManager captures create/update/(soft/hard)delete/add/remove from Journal app, and generate Activity objects,
2022-12-13 06:44:29 +00:00
ActivityManager generates chronological view for user and, in future, ActivityStreams
"""
from django.db import models
from django.utils import timezone
2022-12-13 06:44:29 +00:00
from journal.models import (
Piece,
UserOwnedObjectMixin,
)
2023-07-20 21:59:49 -04:00
from users.models import APIdentity
2022-12-13 06:44:29 +00:00
class ActivityTemplate(models.TextChoices):
2022-12-29 23:57:02 -05:00
MarkItem = "mark_item"
ReviewItem = "review_item"
CreateCollection = "create_collection"
LikeCollection = "like_collection"
2023-01-14 09:02:53 -05:00
FeatureCollection = "feature_collection"
CommentChildItem = "comment_child_item"
class LocalActivity(models.Model, UserOwnedObjectMixin):
2023-12-05 23:14:29 -05:00
owner = models.ForeignKey(APIdentity, on_delete=models.CASCADE)
2023-07-20 21:59:49 -04:00
visibility = models.PositiveSmallIntegerField(default=0) # type: ignore
2022-12-29 23:57:02 -05:00
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)
2022-12-13 06:44:29 +00:00
2023-01-07 12:00:09 -05:00
class Meta:
index_together = [
["owner", "created_time"],
]
2022-12-21 14:34:36 -05:00
def __str__(self):
2022-12-29 23:57:02 -05:00
return f"Activity [{self.owner}:{self.template}:{self.action_object}]"