import datetime from django.db import models from django.conf import settings from django.contrib.auth.models import Group from django.utils import timezone from django_quill.fields import QuillField from django.dispatch import receiver from django.db.models.signals import pre_save # Create your models here. class cr_Category(models.Model): sName = models.CharField("Désignation", max_length=250) dtUpdated = models.DateTimeField('date updated', auto_now=True) dtCreated = models.DateTimeField('date published', auto_now_add=True) def __str__(self): return self.sName class Meta: verbose_name = "catégorie" verbose_name_plural = "catégories" class cr_Message(models.Model): Caterogy = models.ForeignKey(cr_Category, on_delete=models.DO_NOTHING, verbose_name="Catégorie") sDestUsers = models.TextField("Liste des utilisateurs cibles") sNotReadUsers = models.TextField() sReadedUsers = models.TextField("Liste des utilisateurs ayant lu", blank=True) DestGroup = models.ForeignKey(Group, on_delete=models.DO_NOTHING) sTitle = models.CharField("Titre", max_length=120) sText = QuillField ("Corps de texte") dtValidityFrom = models.DateField("Validité depuis",default=timezone.now) dtValidityTo = models.DateField("Validité jusqu'à", blank=True, null=True) bEnabled = models.BooleanField("Actif", default=True) Author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name="Auteur", on_delete=models.SET_NULL, null=True) sAuthor = models.CharField("Auteur", max_length=120) dtUpdated = models.DateTimeField('date updated', auto_now=True) dtCreated = models.DateTimeField('date published', auto_now_add=True) def get_dtCreated(self): return self.dtCreated.strftime("%d.%b.%Y %H:%M:%S") def calc_read_quotas(self): obj = self n_dest = obj.sDestUsers.count('[') n_readed = obj.sReadedUsers.count('[') if n_dest == 0: return "No dest" return f"{(n_readed/n_dest)*100}%" def __str__(self): return self.sTitle class Meta: verbose_name = "message" verbose_name_plural = "messages"