1 # -=- encoding: utf-8 -=-
5 from django
.core
.files
.storage
import FileSystemStorage
6 from django
.db
import models
9 import datamaster_modeles
.models
as ref
10 from project
.rh
import models
as rh
14 class Metadata(models
.Model
):
16 Metadata.actif = flag remplaçant la suppression.
17 actif == False : objet réputé supprimé.
19 actif
= models
.BooleanField(default
=True)
20 date_creation
= models
.DateField(auto_now_add
=True)
26 class OffreEmploi(Metadata
):
27 # TODO : Afficher les bureaux selon la région choisies?
28 nom
= models
.CharField(max_length
=255)
29 resume
= models
.TextField()
30 description
= models
.TextField()
31 poste
= models
.ForeignKey(rh
.Poste
, db_column
='poste')
32 date_limite
= models
.DateField(verbose_name
="Date limite")
33 region
= models
.ForeignKey(ref
.Region
, db_column
='region')
34 bureau
= models
.ForeignKey(ref
.Bureau
, db_column
='bureau')
36 def __unicode__(self
):
37 return '%s [%s]' % (self
.nom
, self
.id)
55 ('SEL', 'Sélectionné'),
57 ('REC', 'Recevable'), # Trouver une lettre plus appropriée?
60 class Candidat(Metadata
):
61 # TODO : Automatiser le statut à la création à Nouveau
62 statut
= models
.CharField(max_length
=4,
63 choices
=STATUT_CHOICES
)
64 offre_emploi
= models
.ForeignKey('OffreEmploi', db_column
='offre_emploi',
66 prenom
= models
.CharField(max_length
=255)
67 nom
= models
.CharField(max_length
=255)
68 genre
= models
.CharField(max_length
=1, choices
=GENRE_CHOICES
)
69 nationalite
= models
.ForeignKey(ref
.Pays
,
70 db_column
='nationalite',
72 date_naissance
= models
.DateField(verbose_name
="Date de naissance")
73 situation_famille
= models
.CharField(max_length
=1,
74 choices
=SITUATION_CHOICES
)
75 nombre_dependant
= models
.IntegerField(verbose_name
="Nombre de dépendant")
76 niveau_diplome
= models
.CharField(max_length
=255,
77 verbose_name
="Niveau du diplôme")
78 employeur_actuel
= models
.CharField(max_length
=255)
79 poste_actuel
= models
.CharField(max_length
=255)
80 domaine_professionnel
= models
.CharField(max_length
=255)
83 adresse
= models
.CharField(max_length
=255)
84 ville
= models
.CharField(max_length
=255)
85 etat_province
= models
.CharField(max_length
=255,
86 verbose_name
="État/Province")
87 pays
= models
.ForeignKey(ref
.Pays
, db_column
='pays',
90 def __unicode__(self
):
91 return '%s %s [%s]' % (self
.prenom
, self
.nom
, self
.id)
95 storage_prive
= FileSystemStorage(settings
.PRIVE_MEDIA_ROOT
,
96 base_url
=settings
.PRIVE_MEDIA_URL
)
98 def candidat_piece_dispatch(instance
, filename
):
99 path
= "offre_emploi/%s_%s/%s/%s_%s" % (instance
.candidat
.nom
,
100 instance
.candidat
.prenom
, instance
.nom
, instance
.candidat
.id,
104 class CandidatPiece(models
.Model
):
105 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
107 nom
= models
.CharField(max_length
=255)
108 path
= models
.FileField(upload_to
=candidat_piece_dispatch
,
109 storage
=storage_prive
)
111 def __unicode__(self
):
112 return '%s' % (self
.nom
)
114 class Evaluateur(models
.Model
):
115 candidats
= models
.ManyToManyField(Candidat
)
116 nom
= models
.CharField(max_length
=255)
117 prenom
= models
.CharField(max_length
=255)
119 def __unicode__(self
):
120 return '%s %s' % (self
.prenom
, self
.nom
)
122 class CandidatEvaluation(models
.Model
):
123 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
125 evaluateur
= models
.ForeignKey(Evaluateur
, db_column
='evaluateur',
127 note
= models
.IntegerField()
128 commentaire
= models
.TextField()
129 date
= models
.DateField(auto_now_add
=True)