Files
Reskreen/carnet_rouge/models.py
2023-06-04 10:41:33 +02:00

75 lines
2.6 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_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"
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"