mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-08-18 16:58:19 +02:00
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import uuid
|
|
|
|
from django.conf import settings
|
|
from django.db import models
|
|
from django.urls import reverse
|
|
from django.utils.html import strip_tags
|
|
from mptt.models import MPTTModel, TreeForeignKey
|
|
|
|
|
|
class Comment(MPTTModel):
|
|
"""Comments model"""
|
|
|
|
add_date = models.DateTimeField(auto_now_add=True)
|
|
|
|
media = models.ForeignKey("Media", on_delete=models.CASCADE, db_index=True, related_name="comments")
|
|
|
|
parent = TreeForeignKey("self", on_delete=models.CASCADE, null=True, blank=True, related_name="children")
|
|
|
|
text = models.TextField(help_text="text")
|
|
|
|
uid = models.UUIDField(unique=True, default=uuid.uuid4)
|
|
|
|
user = models.ForeignKey("users.User", on_delete=models.CASCADE, db_index=True)
|
|
|
|
class MPTTMeta:
|
|
order_insertion_by = ["add_date"]
|
|
|
|
def __str__(self):
|
|
return f"On {self.media.title} by {self.user.username}"
|
|
|
|
def save(self, *args, **kwargs):
|
|
strip_text_items = ["text"]
|
|
for item in strip_text_items:
|
|
setattr(self, item, strip_tags(getattr(self, item, None)))
|
|
|
|
if self.text:
|
|
self.text = self.text[: settings.MAX_CHARS_FOR_COMMENT]
|
|
|
|
super(Comment, self).save(*args, **kwargs)
|
|
|
|
def get_absolute_url(self):
|
|
return f"{reverse('get_media')}?m={self.media.friendly_token}"
|
|
|
|
@property
|
|
def media_url(self):
|
|
return self.get_absolute_url()
|