Commit | Line | Data |
---|---|---|
df59fcab | 1 | # -=- encoding: utf-8 -=- |
2 | ||
3 | import datetime | |
b235ec9d | 4 | from django.contrib.auth.models import User |
4418c732 | 5 | from django.core.files.storage import FileSystemStorage |
ec517164 | 6 | from tinymce import models as tinymce_models |
6f2d5d58 | 7 | from django.db import models |
4418c732 | 8 | import settings |
362a3534 | 9 | #from private_files import PrivateFileField |
6f2d5d58 | 10 | |
df59fcab | 11 | import datamaster_modeles.models as ref |
d0a50c0a | 12 | from project.rh.models import Poste |
0d9e7dce NBV |
13 | from recrutement.workflow import grp_evaluateurs_recrutement |
14 | from auf.django.emploi.models import * | |
df59fcab | 15 | |
596fe324 | 16 | ### CONSTANTES |
17 | #NOTES | |
18 | NOTE_MIN = 1 | |
19 | NOTE_RANGE = 1 | |
e34a2ae0 | 20 | NOTE_MAX = 11 |
596fe324 | 21 | NOTES = [(i, i) for i in range(NOTE_MIN, NOTE_MAX, NOTE_RANGE)] |
b903198b NBV |
22 | |
23 | #HELP_TEXT | |
ee42ad96 | 24 | HELP_TEXT_NB_DEPENDANT = "Le nombre de personnes à charge" |
b903198b | 25 | HELP_TEXT_FORMAT_DATE = "Le format de la date est AAAA-MM-JJ" |
32834000 NBV |
26 | HELP_TEXT_TAGS_ACCEPTES = "Pour le texte, les variables disponibles sont : \ |
27 | {{ nom_candidat }} {{ prenom_candidat }} \ | |
28 | {{ offre_emploi }}. Ces champs seront \ | |
29 | automatiquement remplacés par les informations de \ | |
30 | chaque candidat." | |
596fe324 | 31 | |
df59fcab | 32 | # Abstracts |
33 | class Metadata(models.Model): | |
34 | """Méta-données AUF. | |
35 | Metadata.actif = flag remplaçant la suppression. | |
36 | actif == False : objet réputé supprimé. | |
37 | """ | |
38 | actif = models.BooleanField(default=True) | |
b903198b NBV |
39 | date_creation = models.DateField(auto_now_add=True, |
40 | help_text=HELP_TEXT_FORMAT_DATE, ) | |
df59fcab | 41 | |
42 | class Meta: | |
43 | abstract = True | |
44 | ||
4e8e178f | 45 | class OffreEmploiManager(models.Manager): |
46 | def get_query_set(self): | |
61a4b478 | 47 | fkeys = ('region',) |
720c3ad5 NBV |
48 | return super(OffreEmploiManager, self).get_query_set().\ |
49 | select_related(*fkeys).all() | |
4e8e178f | 50 | |
47cf4908 | 51 | class ProxyPoste(Poste): |
4e8e178f | 52 | class Meta: |
53 | proxy = True | |
54 | ||
55 | def __unicode__(self): | |
56 | return '%s [%s]' % (self.nom, self.id) | |
df59fcab | 57 | |
f6724c20 NBV |
58 | class ProxyOffreEmploi(OffreEmploi): |
59 | class Meta: | |
60 | proxy = True | |
61 | verbose_name = "Offre d'emploi (visualisation)" | |
62 | verbose_name_plural = "Offres d'emploi (visualisation)" | |
63 | ||
64 | def __unicode__(self): | |
65 | return '%s [%s] - View' % (self.nom, self.id) | |
4418c732 | 66 | |
f6724c20 NBV |
67 | class ProxyCandidat(Candidat): |
68 | class Meta: | |
69 | proxy = True | |
70 | verbose_name = "Candidat (visualisation)" | |
71 | verbose_name_plural = "Candidats (visualisation)" | |
72 | ||
73 | def __unicode__(self): | |
74 | return '%s %s [%s]' % (self.prenom, self.nom, self.id) | |
75 | ||
4418c732 | 76 | |
4e8340cf | 77 | class Evaluateur(models.Model): |
dc7faf2b | 78 | user = models.ForeignKey(User, unique=True, verbose_name="Évaluateur") |
720c3ad5 | 79 | candidats = models.ManyToManyField(Candidat, through='CandidatEvaluation', |
720c3ad5 | 80 | related_name="evaluateurs") |
4e8340cf | 81 | |
0d9e7dce NBV |
82 | """def save(self, *args, **kwargs): |
83 | ||
84 | Assigner automatiquement les évaluateurs d'une offre d'emploi à un | |
85 | nouveau candidat. | |
86 | ||
87 | self.user.groups.add(grp_evaluateurs_recrutement) | |
88 | super(Evaluateur, self).save(*args, **kwargs) | |
89 | """ | |
4e8340cf | 90 | class Meta: |
91 | verbose_name = "évaluateur" | |
92 | ||
93 | def __unicode__(self): | |
94 | return '%s %s' % (self.user.first_name, self.user.last_name) | |
95 | ||
b89fef74 | 96 | class AdministrateurRegional(models.Model): |
27c81d11 | 97 | user = models.ForeignKey(User, unique=True, |
dc7faf2b | 98 | verbose_name="Administrateur régionnal") |
3b4bfad3 | 99 | regions = models.ManyToManyField(ref.Region, |
100 | verbose_name="Régions", ) | |
eb579d40 | 101 | |
b235ec9d | 102 | class Meta: |
27c81d11 | 103 | verbose_name = "administrateur régional" |
4e8340cf | 104 | verbose_name_plural = "administrateurs régionaux" |
b235ec9d | 105 | |
2adf9e0c | 106 | def __unicode__(self): |
107 | return '%s %s' % (self.user.first_name, self.user.last_name) | |
108 | ||
4418c732 | 109 | class CandidatEvaluation(models.Model): |
110 | candidat = models.ForeignKey(Candidat, db_column='candidat', | |
3b4b948e | 111 | related_name='+',) |
27c81d11 | 112 | evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur', |
cced6a23 | 113 | related_name='+', verbose_name='Évaluateur') |
596fe324 | 114 | note = models.IntegerField(choices=NOTES, blank=True, null=True) |
362a3534 | 115 | commentaire = models.TextField(null=True, blank=True) |
b903198b NBV |
116 | date = models.DateField(auto_now_add=True, |
117 | help_text=HELP_TEXT_FORMAT_DATE, ) | |
b235ec9d | 118 | |
119 | class Meta: | |
cced6a23 | 120 | verbose_name = 'évaluation du candidat' |
121 | verbose_name_plural = 'évaluations des candidats' | |
ec517164 | 122 | |
1df9fc7f | 123 | #### TEMPLATE COURRIEL |
d84c3a68 | 124 | TEMPLATE_CHOICES = ( |
125 | ('SEL', 'Sélectionné'), | |
126 | ('REF', 'Refusé'), | |
127 | ) | |
128 | ||
129 | class CourrielTemplate(models.Model): | |
32834000 NBV |
130 | nom_modele = models.CharField(max_length=100, verbose_name='Nom du modèle',) |
131 | sujet = models.CharField(max_length=100, verbose_name='Sujet du courriel') | |
132 | plain_text = models.TextField(verbose_name='Texte', | |
133 | help_text=HELP_TEXT_TAGS_ACCEPTES, ) | |
134 | html = tinymce_models.HTMLField(verbose_name='Texte en HTML', | |
135 | help_text=HELP_TEXT_TAGS_ACCEPTES, ) | |
d84c3a68 | 136 | |
137 | def __unicode__(self): | |
0b1bbb53 | 138 | return u'%s' % self.nom_modele |
d84c3a68 | 139 | |
140 | class Meta: | |
0b1bbb53 | 141 | ordering = ['nom_modele',] |
d84c3a68 | 142 | |
143 | class CandidatCourriel(models.Model): | |
32834000 NBV |
144 | candidats = models.ManyToManyField(Candidat, verbose_name="Candidats", ) |
145 | template = models.ForeignKey(CourrielTemplate, db_column='template', | |
0b1bbb53 | 146 | related_name='+', verbose_name="Modèle de courriel", ) |
32834000 NBV |
147 | sujet = models.CharField(max_length=255, blank=True, |
148 | help_text=HELP_TEXT_TAGS_ACCEPTES, ) | |
149 | plain_text = models.TextField(verbose_name='Texte', blank=True, | |
150 | help_text=HELP_TEXT_TAGS_ACCEPTES, ) | |
dc7faf2b NBV |
151 | html = tinymce_models.HTMLField(verbose_name='Texte en HTML', null=True, |
152 | blank=True, help_text=HELP_TEXT_TAGS_ACCEPTES, ) | |
ec517164 | 153 | |
154 | def __unicode__(self): | |
155 | return '%s' % (self.titre) | |
ec517164 | 156 |