|
|
|
@ -3,6 +3,7 @@ from contextlib import redirect_stderr, redirect_stdout |
|
|
|
from cron_converter import Cron |
|
|
|
from pyexpat import model |
|
|
|
from django.db import models |
|
|
|
from django.conf import settings |
|
|
|
from django.contrib.auth.models import Group |
|
|
|
from django.utils import timezone |
|
|
|
from django.utils.formats import localize |
|
|
|
@ -15,18 +16,25 @@ from datetime import timedelta |
|
|
|
from docutils.core import publish_string |
|
|
|
from django.utils.html import format_html |
|
|
|
|
|
|
|
from sigi.apps.utils.templatetags.model_fields import verbose_name |
|
|
|
|
|
|
|
|
|
|
|
class SigiAlert(models.Model): |
|
|
|
DESTINATARIOS_TODOS = "A" |
|
|
|
DESTINATARIOS_ANONIMOS = "N" |
|
|
|
DESTINATARIOS_EQUIPE = "S" |
|
|
|
DESTINATARIOS_ADMIN = "D" |
|
|
|
DESTINATARIOS_CHOICES = ( |
|
|
|
("A", _("Todo e qualquer usuário")), |
|
|
|
("N", _("Usuários anônimos / não autenticados")), |
|
|
|
("S", _("Membros da equipe Interlegis")), |
|
|
|
("D", _("Administradores do sistema")), |
|
|
|
(DESTINATARIOS_TODOS, _("Todo e qualquer usuário")), |
|
|
|
(DESTINATARIOS_ANONIMOS, _("Usuários anônimos / não autenticados")), |
|
|
|
(DESTINATARIOS_EQUIPE, _("Membros da equipe Interlegis")), |
|
|
|
(DESTINATARIOS_ADMIN, _("Administradores do sistema")), |
|
|
|
) |
|
|
|
caminho = models.CharField(_("caminho da tela"), max_length=200) |
|
|
|
destinatarios = models.CharField( |
|
|
|
_("destinatários"), max_length=1, choices=DESTINATARIOS_CHOICES |
|
|
|
) |
|
|
|
repeticao = models.PositiveIntegerField(_("repetições"), default=3) |
|
|
|
titulo = models.CharField(_("título"), max_length=60) |
|
|
|
mensagem = HTMLField(_("mensagem")) |
|
|
|
|
|
|
|
@ -39,6 +47,32 @@ class SigiAlert(models.Model): |
|
|
|
return self.titulo |
|
|
|
|
|
|
|
|
|
|
|
class AlertViews(models.Model): |
|
|
|
alert = models.ForeignKey( |
|
|
|
SigiAlert, verbose_name=_("alerta"), on_delete=models.CASCADE |
|
|
|
) |
|
|
|
usuario = models.ForeignKey( |
|
|
|
settings.AUTH_USER_MODEL, |
|
|
|
verbose_name=_("usuário"), |
|
|
|
on_delete=models.CASCADE, |
|
|
|
) |
|
|
|
visualizacoes = models.PositiveIntegerField(_("visualizações"), default=0) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
ordering = ("alert", "usuario", "visualizacoes") |
|
|
|
verbose_name = _("visualização") |
|
|
|
verbose_name_plural = _("visualizações") |
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
return _( |
|
|
|
"Usuário {user} visualizou o alerta {alert} {visualizacoes} vezes" |
|
|
|
).format( |
|
|
|
user=str(self.usuario), |
|
|
|
alert=str(self.alert), |
|
|
|
visualizacoes=self.visualizacoes, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
class Config(models.Model): |
|
|
|
PARAMETRO_CHOICES = ( |
|
|
|
("ENCERRA_INSCRICAO", _("Encerra inscrições de oficinas no Portal")), |
|
|
|
|