from django.db import models from django.contrib.auth.models import User from django.utils.translation import gettext_lazy as _ from apps.sites.models import Submissions class UserProfile(models.Model): MATURE = [ ("H", "Hide"), ("B", "Blur"), ("S", "Show"), ] ITEMS_PER_PAGE = [ (24, "24"), (48, "48"), (72, "72"), ] POST_SEEN_DELAY = [ (15, "15"), (30, "30"), (60, "60"), (90, "90"), ] user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, unique=True) show_mature = models.CharField(max_length=2, choices=MATURE, default=MATURE[0][0]) items_per_page = models.IntegerField(choices=ITEMS_PER_PAGE, default=ITEMS_PER_PAGE[0][0]) post_seen_delay = models.IntegerField(choices=POST_SEEN_DELAY, default=POST_SEEN_DELAY[1][1], help_text="Delay in seconds before marking a post as seen") class Meta: verbose_name = _("User Profile") verbose_name_plural = _("User Profiles") def __str__(self): return self.user.username class SeenPost(models.Model): user = models.ForeignKey(UserProfile, on_delete=models.CASCADE) post = models.ForeignKey(Submissions, on_delete=models.CASCADE) timestamp = models.DateTimeField(auto_now_add=True) class Meta: verbose_name = _("Seen Post") verbose_name_plural = _("Seen Posts") def __str__(self) -> str: return self.user.user.username + " - " + self.post.submission_hash