Rappel: Affichage du dernier rappel
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / rappels / models.py
CommitLineData
c4312cce
PP
1# -*- coding: utf-8 -*-
2
afc8b9b1 3import datetime
c4312cce 4
afc8b9b1 5from django.db import models
c4312cce
PP
6from django.contrib.auth.models import User
7
afc8b9b1
PP
8from chercheurs.models import Chercheur
9
c4312cce
PP
10
11class Rappel(models.Model):
12 date_creation = models.DateTimeField("date de création", auto_now_add=True)
13 user_creation = models.ForeignKey(User, verbose_name="utilisateur création")
14 date_cible = models.DateField("date cible", help_text="Date antérieure ciblée pour cerner les cas à rappeler")
15 date_limite = models.DateField("date limite", help_text="Date limite à communiquer dans le rappel avant laquelle le destinataire doit poser une action")
16 sujet = models.CharField("sujet", max_length=255)
17 contenu = models.TextField("contenu")
18
19 def __unicode__(self):
fe4788a1 20 return "%s - %s" % (self.date_creation, self.sujet)
c4312cce
PP
21
22
23class RappelUser(models.Model):
24 rappel = models.ForeignKey(Rappel, verbose_name="rappel")
25 user = models.ForeignKey(User, verbose_name="utilisateur")
26 date_envoi = models.DateTimeField("date de l'envoi", auto_now_add=True)
27
fe4788a1
PP
28 class Meta:
29 verbose_name = "Trace d'un rappel"
30 verbose_name_plural = "Traces des rappels"
31 ordering = ['-date_envoi']
32
c4312cce 33 def __unicode__(self):
fe4788a1 34 return "%s - %s" % (self.rappel.sujet, self.user)
c4312cce
PP
35
36 def save(self, *args, **kwargs):
37 super(RappelUser, self).save(*args, **kwargs)
38
39 # Envoi du courriel...
bd93f955 40 from django.template import Context, Template
8cda4c7d 41 from django.core.mail import EmailMessage
bd93f955
PP
42 from django.conf import settings
43
44 template = Template(self.rappel.contenu)
45 domaine = settings.SITE_DOMAIN
46 message = template.render(Context({
47 'chercheur': self.user.chercheur.prenom_nom,
48 'domaine': domaine,
49 'date_limite': self.rappel.date_limite
50 }))
8cda4c7d
PP
51 email = EmailMessage(self.rappel.sujet,
52 message,
53 settings.CONTACT_EMAIL,
54 [self.user.email],
55 settings.ADMINS_SEP)
56 email.send()
afc8b9b1
PP
57
58
f7eeb1cb
PP
59class RappelModele(models.Model):
60 nom = models.CharField("nom", max_length=100)
61 sujet = models.CharField("sujet", max_length=255)
62 contenu = models.TextField("contenu")
63
bd93f955
PP
64 class Meta:
65 verbose_name = 'Modèle de rappel'
66 verbose_name_plural = 'Modèles de rappel'
67
f7eeb1cb
PP
68 def __unicode__(self):
69 return self.nom
70
71
afc8b9b1
PP
72class ChercheurRappelManager(models.Manager):
73 def get_query_set(self):
74 last_year = datetime.datetime.today() - datetime.timedelta(days=365)
75 return super(ChercheurRappelManager, self).get_query_set().filter(user__is_active=True).filter(user__last_login__lt=last_year)
76
77
78class ChercheurRappel(Chercheur):
79
80 objects = ChercheurRappelManager()
81
82 class Meta:
83 proxy = True
84 verbose_name = 'chercheur (rappel)'
85 verbose_name_plural = 'chercheur (rappel)'
86
87 def last_login(self):
88 return self.user.last_login
535de3be 89 last_login.short_description = "Dernière connexion"
e2941395
PP
90
91 def dernier_rappel(self):
92 try:
93 return self.user.rappeluser_set.all()[0].date_envoi
94 except:
95 return "Aucun rappel envoyé"
96 dernier_rappel.short_description = 'Dernier rappel'