2dc23b7e68726fe1d807056afd47707c160bacce
1 # -*- coding: utf-8 -*-
5 from django
.db
import models
6 from django
.contrib
.auth
.models
import User
8 from chercheurs
.models
import Chercheur
11 class 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")
19 def __unicode__(self
):
20 return "%s - %s" % (self
.date_creation
, self
.sujet
)
23 class 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)
29 verbose_name
= "Trace d'un rappel"
30 verbose_name_plural
= "Traces des rappels"
31 ordering
= ['-date_envoi']
33 def __unicode__(self
):
34 return "%s - %s" % (self
.rappel
.sujet
, self
.user
)
36 def save(self
, *args
, **kwargs
):
37 super(RappelUser
, self
).save(*args
, **kwargs
)
39 # Envoi du courriel...
40 from django
.template
import Context
, Template
41 from django
.core
.mail
import EmailMessage
42 from django
.conf
import settings
44 template
= Template(self
.rappel
.contenu
)
45 domaine
= settings
.SITE_DOMAIN
46 message
= template
.render(Context({
47 'chercheur': self
.user
.chercheur
.prenom_nom
,
49 'date_limite': self
.rappel
.date_limite
51 email
= EmailMessage(self
.rappel
.sujet
,
53 settings
.CONTACT_EMAIL
,
59 class RappelModele(models
.Model
):
60 nom
= models
.CharField("nom", max_length
=100)
61 sujet
= models
.CharField("sujet", max_length
=255)
62 contenu
= models
.TextField("contenu")
65 verbose_name
= 'Modèle de rappel'
66 verbose_name_plural
= 'Modèles de rappel'
68 def __unicode__(self
):
72 class 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
)
78 class ChercheurRappel(Chercheur
):
80 objects
= ChercheurRappelManager()
84 verbose_name
= 'chercheur (rappel)'
85 verbose_name_plural
= 'chercheur (rappel)'
88 return self
.user
.last_login
89 last_login
.short_description
= "Dernière connexion"
91 def dernier_rappel(self
):
93 return self
.user
.rappeluser_set
.all()[0].date_envoi
95 return "Aucun rappel envoyé"
96 dernier_rappel
.short_description
= 'Dernier rappel'