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