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
9 #from private_files import PrivateFileField
11 import datamaster_modeles
.models
as ref
12 from project
.rh
.models
import Poste
13 from recrutement
.workflow
import grp_evaluateurs_recrutement
14 from auf
.django
.emploi
.models
import *
21 NOTES
= [(i
, i
) for i
in range(NOTE_MIN
, NOTE_MAX
, NOTE_RANGE
)]
24 HELP_TEXT_NB_DEPENDANT
= "Le nombre de personnes à charge"
25 HELP_TEXT_FORMAT_DATE
= "Le format de la date est AAAA-MM-JJ"
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 \
33 class Metadata(models
.Model
):
35 Metadata.actif = flag remplaçant la suppression.
36 actif == False : objet réputé supprimé.
38 actif
= models
.BooleanField(default
=True)
39 date_creation
= models
.DateField(auto_now_add
=True,
40 help_text
=HELP_TEXT_FORMAT_DATE
, )
45 class OffreEmploiManager(models
.Manager
):
46 def get_query_set(self
):
48 return super(OffreEmploiManager
, self
).get_query_set().\
49 select_related(*fkeys
).all()
51 class ProxyPoste(Poste
):
55 def __unicode__(self
):
56 return '%s [%s]' % (self
.nom
, self
.id)
58 class ProxyOffreEmploi(OffreEmploi
):
61 verbose_name
= "Offre d'emploi (visualisation)"
62 verbose_name_plural
= "Offres d'emploi (visualisation)"
64 def __unicode__(self
):
65 return '%s [%s] - View' % (self
.nom
, self
.id)
67 class ProxyCandidat(Candidat
):
70 verbose_name
= "Candidat (visualisation)"
71 verbose_name_plural
= "Candidats (visualisation)"
73 def __unicode__(self
):
74 return '%s %s [%s]' % (self
.prenom
, self
.nom
, self
.id)
77 class Evaluateur(models
.Model
):
78 user
= models
.ForeignKey(User
, unique
=True, verbose_name
="Évaluateur")
79 candidats
= models
.ManyToManyField(Candidat
, through
='CandidatEvaluation',
80 related_name
="evaluateurs")
82 """def save(self, *args, **kwargs):
84 Assigner automatiquement les évaluateurs d'une offre d'emploi à un
87 self.user.groups.add(grp_evaluateurs_recrutement)
88 super(Evaluateur, self).save(*args, **kwargs)
91 verbose_name
= "évaluateur"
93 def __unicode__(self
):
94 return '%s %s' % (self
.user
.first_name
, self
.user
.last_name
)
96 class AdministrateurRegional(models
.Model
):
97 user
= models
.ForeignKey(User
, unique
=True,
98 verbose_name
="Administrateur régionnal")
99 regions
= models
.ManyToManyField(ref
.Region
,
100 verbose_name
="Régions", )
103 verbose_name
= "administrateur régional"
104 verbose_name_plural
= "administrateurs régionaux"
106 def __unicode__(self
):
107 return '%s %s' % (self
.user
.first_name
, self
.user
.last_name
)
109 class CandidatEvaluation(models
.Model
):
110 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
112 evaluateur
= models
.ForeignKey(Evaluateur
, db_column
='evaluateur',
113 related_name
='+', verbose_name
='Évaluateur')
114 note
= models
.IntegerField(choices
=NOTES
, blank
=True, null
=True)
115 commentaire
= models
.TextField(null
=True, blank
=True)
116 date
= models
.DateField(auto_now_add
=True,
117 help_text
=HELP_TEXT_FORMAT_DATE
, )
120 verbose_name
= 'évaluation du candidat'
121 verbose_name_plural
= 'évaluations des candidats'
123 #### TEMPLATE COURRIEL
125 ('SEL', 'Sélectionné'),
129 class CourrielTemplate(models
.Model
):
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
, )
137 def __unicode__(self
):
138 return u
'%s' % self
.nom_modele
141 ordering
= ['nom_modele',]
143 class CandidatCourriel(models
.Model
):
144 candidats
= models
.ManyToManyField(Candidat
, verbose_name
="Candidats", )
145 template
= models
.ForeignKey(CourrielTemplate
, db_column
='template',
146 related_name
='+', verbose_name
="Modèle de courriel", )
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
, )
151 html
= tinymce_models
.HTMLField(verbose_name
='Texte en HTML', null
=True,
152 blank
=True, help_text
=HELP_TEXT_TAGS_ACCEPTES
, )
154 def __unicode__(self
):
155 return '%s' % (self
.titre
)