1 # -=- encoding: utf-8 -=-
4 from django
.contrib
.auth
.models
import User
5 from django
.core
.files
.storage
import FileSystemStorage
6 from tinymce
import models
as tinymce_models
7 from django
.db
import models
10 import datamaster_modeles
.models
as ref
11 from project
.rh
.models
import Poste
12 from recrutement
.workflow
import grp_evaluateurs_recrutement
13 from auf
.django
.emploi
import models
as emploi
14 from auf
.django
.emploi
.models
import TYPE_PIECE_CHOICES
16 from recrutement
.workflow
import grp_evaluateurs_recrutement
23 NOTES
= [(i
, i
) for i
in range(NOTE_MIN
, NOTE_MAX
, NOTE_RANGE
)]
26 HELP_TEXT_NB_DEPENDANT
= "Le nombre de personnes à charge"
27 HELP_TEXT_FORMAT_DATE
= "Le format de la date est AAAA-MM-JJ"
28 HELP_TEXT_TAGS_ACCEPTES
= "Pour le texte, les variables disponibles sont : \
29 {{ nom_candidat }} {{ prenom_candidat }} \
30 {{ offre_emploi }} et {{ genre_candidat }} \
31 (Pour Monsieur/Madame). Ces champs seront \
32 automatiquement remplacés par les informations de \
36 class Metadata(models
.Model
):
38 Metadata.actif = flag remplaçant la suppression.
39 actif == False : objet réputé supprimé.
41 actif
= models
.BooleanField(default
=True)
42 date_creation
= models
.DateField(auto_now_add
=True,
43 help_text
=HELP_TEXT_FORMAT_DATE
, )
48 class Candidat(emploi
.Candidat
):
52 class OffreEmploi(emploi
.OffreEmploi
):
56 class CandidatPiece(emploi
.CandidatPiece
):
60 class OffreEmploiManager(models
.Manager
):
61 def get_query_set(self
):
63 return super(OffreEmploiManager
, self
).get_query_set().\
64 select_related(*fkeys
).all()
66 class ProxyPoste(Poste
):
70 def __unicode__(self
):
71 return '%s [%s]' % (self
.nom
, self
.id)
73 class ProxyOffreEmploi(emploi
.OffreEmploi
):
76 verbose_name
= "Offre d'emploi (visualisation)"
77 verbose_name_plural
= "Offres d'emploi (visualisation)"
79 def __unicode__(self
):
80 return '%s [%s] - View' % (self
.nom
, self
.id)
82 class ProxyCandidat(Candidat
):
85 verbose_name
= "Candidat (visualisation)"
86 verbose_name_plural
= "Candidats (visualisation)"
88 def __unicode__(self
):
89 return '%s %s [%s]' % (self
.prenom
, self
.nom
, self
.id)
92 class Evaluateur(models
.Model
):
93 user
= models
.ForeignKey(User
, unique
=True, verbose_name
="Évaluateur")
94 offres_emploi
= models
.ManyToManyField(emploi
.OffreEmploi
,
95 related_name
="evaluateurs", blank
=True)
97 def save(self
, *args
, **kwargs
):
99 Assigner automatiquement l'évaluateurs d'une offre d'emploi à un
102 self
.user
.groups
.add(grp_evaluateurs_recrutement
)
103 super(Evaluateur
, self
).save(*args
, **kwargs
)
106 verbose_name
= "évaluateur"
108 def __unicode__(self
):
109 return '%s %s' % (self
.user
.first_name
, self
.user
.last_name
)
111 class AdministrateurRegional(models
.Model
):
112 user
= models
.ForeignKey(User
, unique
=True,
113 verbose_name
="Administrateur régionnal")
114 regions
= models
.ManyToManyField(ref
.Region
,
115 verbose_name
="Régions", )
118 verbose_name
= "administrateur régional"
119 verbose_name_plural
= "administrateurs régionaux"
121 def __unicode__(self
):
122 return '%s %s' % (self
.user
.first_name
, self
.user
.last_name
)
124 class CandidatEvaluation(models
.Model
):
125 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
127 evaluateur
= models
.ForeignKey(Evaluateur
, db_column
='evaluateur',
128 related_name
='+', verbose_name
='Évaluateur')
129 note
= models
.IntegerField(choices
=NOTES
, blank
=True, null
=True)
130 commentaire
= models
.TextField(null
=True, blank
=True, default
='Aucun')
131 date
= models
.DateField(auto_now_add
=True,
132 help_text
=HELP_TEXT_FORMAT_DATE
, )
135 verbose_name
= 'évaluation du candidat'
136 verbose_name_plural
= 'évaluations des candidats'
138 #### TEMPLATE COURRIEL
140 ('SEL', 'Sélectionné'),
144 class CourrielTemplate(models
.Model
):
145 nom_modele
= models
.CharField(max_length
=100, verbose_name
='Nom du modèle',)
146 sujet
= models
.CharField(max_length
=100, verbose_name
='Sujet du courriel')
147 plain_text
= models
.TextField(verbose_name
='Texte',
148 help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
149 html
= tinymce_models
.HTMLField(verbose_name
='Texte en HTML',
150 help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
152 def __unicode__(self
):
153 return u
'%s' % self
.nom_modele
156 ordering
= ['nom_modele',]
158 class CandidatCourriel(models
.Model
):
159 candidats
= models
.ManyToManyField(Candidat
, verbose_name
="Candidats", )
160 template
= models
.ForeignKey(CourrielTemplate
, db_column
='template',
161 related_name
='+', verbose_name
="Modèle de courriel", )
162 sujet
= models
.CharField(max_length
=255, blank
=True,
163 help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
164 plain_text
= models
.TextField(verbose_name
='Texte', blank
=True,
165 help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
166 html
= tinymce_models
.HTMLField(verbose_name
='Texte en HTML', null
=True,
167 blank
=True, help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
169 def __unicode__(self
):
170 return '%s' % (self
.titre
)
173 verbose_name
= "modèle de courriel"
174 verbose_name_plural
= "modèles de courriel"