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