Commit | Line | Data |
---|---|---|
c4312cce PP |
1 | # -*- coding: utf-8 -*- |
2 | ||
afc8b9b1 | 3 | import datetime |
c4312cce | 4 | |
afc8b9b1 | 5 | from django.db import models |
c4312cce PP |
6 | from django.contrib.auth.models import User |
7 | ||
afc8b9b1 PP |
8 | from chercheurs.models import Chercheur |
9 | ||
c4312cce PP |
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): | |
fe4788a1 | 20 | return "%s - %s" % (self.date_creation, self.sujet) |
c4312cce PP |
21 | |
22 | ||
23 | class RappelUser(models.Model): | |
24 | rappel = models.ForeignKey(Rappel, verbose_name="rappel") | |
25 | user = models.ForeignKey(User, verbose_name="utilisateur") | |
df1a1b91 PP |
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) | |
c4312cce | 28 | |
fe4788a1 PP |
29 | class Meta: |
30 | verbose_name = "Trace d'un rappel" | |
31 | verbose_name_plural = "Traces des rappels" | |
32 | ordering = ['-date_envoi'] | |
33 | ||
c4312cce | 34 | def __unicode__(self): |
fe4788a1 | 35 | return "%s - %s" % (self.rappel.sujet, self.user) |
c4312cce | 36 | |
df1a1b91 PP |
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é' | |
afc8b9b1 PP |
42 | |
43 | ||
f7eeb1cb PP |
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 | ||
bd93f955 PP |
49 | class Meta: |
50 | verbose_name = 'Modèle de rappel' | |
51 | verbose_name_plural = 'Modèles de rappel' | |
52 | ||
f7eeb1cb PP |
53 | def __unicode__(self): |
54 | return self.nom | |
55 | ||
56 | ||
afc8b9b1 PP |
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 | |
535de3be | 74 | last_login.short_description = "Dernière connexion" |
e2941395 PP |
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' |