Files
appunti/notes/models.py
2025-12-10 18:28:07 +05:30

31 lines
1.1 KiB
Python

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils import timezone
# Create your models here.
class User(AbstractUser):
allow_notes_from = models.ManyToManyField('User', related_name='allowed_notes_to', blank=True)
expiry_seconds = models.PositiveIntegerField(default=86400)
@property
def alive_received_notes(self) -> models.QuerySet["Note"]:
return self.received_notes.filter(expiry__gt=timezone.now()).select_related("from_user", "to_user")
@property
def visible_name(self) -> str:
if self.first_name or self.last_name:
return self.get_full_name()
return self.username
class Note(models.Model):
from_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='created_notes')
to_user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='received_notes')
note = models.TextField()
expiry = models.DateTimeField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.from_user.username} -> {self.to_user.username}: {self.note[:30]}"