Files
Reskreen/carnet_rouge/models.py
2023-12-14 13:56:33 +01:00

76 lines
2.5 KiB
Python

import datetime
from django.db import models
from django.conf import settings
from django.contrib.auth.models import Group
from django.utils import timezone
import uuid
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"
def increment_MessageId():
last_id = cr_Message.objects.all().order_by('MessageId').last()
if not last_id:
return 1
last_id = last_id.MessageId
return last_id + 1
class cr_Message(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)
MessageId = models.IntegerField("ID Message",editable=False, unique=True, default=increment_MessageId)
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, verbose_name="Groupe de destination")
sTitle = models.CharField("Titre", max_length=120)
sText = models.TextField ("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"