Merge branch 'nilovna' into dev
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / rappels / models.py
1 # -*- coding: utf-8 -*-
2
3 import datetime
4
5 from django.db import models
6 from django.contrib.auth.models import User
7
8 from chercheurs.models import Chercheur
9
10
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")
18
19 def __unicode__(self):
20 return "%s - %s" % (self.date_creation, self.sujet)
21
22
23 class RappelUser(models.Model):
24 rappel = models.ForeignKey(Rappel, verbose_name="rappel")
25 user = models.ForeignKey(User, verbose_name="utilisateur")
26 date_demande_envoi = models.DateTimeField("date de la demande de l'envoi", null=True, auto_now_add=True)
27 date_envoi = models.DateTimeField("date de l'envoi", null=True)
28
29 class Meta:
30 verbose_name = "Trace d'un rappel"
31 verbose_name_plural = "Traces des rappels"
32 ordering = ['-date_envoi']
33
34 def __unicode__(self):
35 return "%s - %s" % (self.rappel.sujet, self.user)
36
37 def date_demande_envoi_clean(self):
38 return self.date_demande_envoi or ''
39
40 def date_envoi_clean(self):
41 return self.date_envoi or 'Pas envoyé'
42
43
44 class RappelModele(models.Model):
45 nom = models.CharField("nom", max_length=100)
46 sujet = models.CharField("sujet", max_length=255)
47 contenu = models.TextField("contenu")
48
49 class Meta:
50 verbose_name = 'Modèle de rappel'
51 verbose_name_plural = 'Modèles de rappel'
52
53 def __unicode__(self):
54 return self.nom
55
56
57 class ChercheurRappelManager(models.Manager):
58 def get_query_set(self):
59 last_year = datetime.datetime.today() - datetime.timedelta(days=365)
60 return super(ChercheurRappelManager, self).get_query_set().filter(user__is_active=True).filter(user__last_login__lt=last_year)
61
62
63 class ChercheurRappel(Chercheur):
64
65 objects = ChercheurRappelManager()
66
67 class Meta:
68 proxy = True
69 verbose_name = 'chercheur (rappel)'
70 verbose_name_plural = 'chercheur (rappel)'
71
72 def last_login(self):
73 return self.user.last_login
74 last_login.short_description = "Dernière connexion"
75
76 def dernier_rappel(self):
77 try:
78 return self.user.rappeluser_set.all()[0].date_envoi
79 except:
80 return "Aucun rappel envoyé"
81 dernier_rappel.short_description = 'Dernier rappel'