from django.conf import settings from django.db import models class Collection(models.Model): """A user-created collection of documents.""" name = models.CharField(max_length=300) description = models.TextField(blank=True, default="") cover = models.ImageField(upload_to="collection_covers/", blank=True, null=True) documents = models.ManyToManyField( "documents.Document", related_name="collections", blank=True, ) is_public = models.BooleanField(default=False) owner = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="collections", ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: db_table = "collections_collection" ordering = ["-updated_at"] def __str__(self) -> str: return self.name @property def document_count(self) -> int: return self.documents.count() @property def cover_url(self) -> str | None: if self.cover: return self.cover.url return None