import uuid from django.db import models from django.urls import reverse class Post(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) owner = models.ForeignKey( "lyric.User", related_name="posts", blank=True, null=True, on_delete=models.CASCADE, ) shared_with = models.ManyToManyField( "lyric.User", related_name="shared_posts", blank=True, ) @property def name(self): return self.lines.first().text def get_absolute_url(self): return reverse("billboard:view_post", args=[self.id]) class Line(models.Model): text = models.TextField(default="") post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE, related_name="lines") class Meta: ordering = ("id",) unique_together = ("post", "text") def __str__(self): return self.text