50f1ce54fc8b784f8ae50ae7049d9544b0af062e
1 # -=- encoding: utf-8 -=-
5 from django
.core
.files
.storage
import FileSystemStorage
6 from django
.db
import models
8 #from private_files import PrivateFileField
10 import datamaster_modeles
.models
as ref
11 from project
.rh
import models
as rh
18 NOTES
= [(i
, i
) for i
in range(NOTE_MIN
, NOTE_MAX
, NOTE_RANGE
)]
21 class Metadata(models
.Model
):
23 Metadata.actif = flag remplaçant la suppression.
24 actif == False : objet réputé supprimé.
26 actif
= models
.BooleanField(default
=True)
27 date_creation
= models
.DateField(auto_now_add
=True)
33 class OffreEmploi(Metadata
):
34 nom
= models
.CharField(max_length
=255)
35 resume
= models
.TextField()
36 description
= models
.TextField()
37 poste
= models
.ForeignKey(rh
.Poste
, db_column
='poste')
38 date_limite
= models
.DateField(verbose_name
="Date limite")
39 region
= models
.ForeignKey(ref
.Region
, db_column
='region')
40 bureau
= models
.ForeignKey(ref
.Bureau
, db_column
='bureau')
42 def __unicode__(self
):
43 return '%s [%s]' % (self
.nom
, self
.id)
61 ('SEL', 'Sélectionné'),
63 ('REC', 'Recevable'), # Trouver une lettre plus appropriée?
66 class Candidat(Metadata
):
67 # TODO : Automatiser le statut à la création à Nouveau
68 statut
= models
.CharField(max_length
=4, choices
=STATUT_CHOICES
,
70 offre_emploi
= models
.ForeignKey('OffreEmploi', db_column
='offre_emploi',
72 prenom
= models
.CharField(max_length
=255)
73 nom
= models
.CharField(max_length
=255)
74 genre
= models
.CharField(max_length
=1, choices
=GENRE_CHOICES
)
75 nationalite
= models
.ForeignKey(ref
.Pays
,
76 db_column
='nationalite',
78 date_naissance
= models
.DateField(verbose_name
="Date de naissance")
79 situation_famille
= models
.CharField(max_length
=1,
80 choices
=SITUATION_CHOICES
)
81 nombre_dependant
= models
.IntegerField(verbose_name
="Nombre de dépendant")
82 niveau_diplome
= models
.CharField(max_length
=255,
83 verbose_name
="Niveau du diplôme")
84 employeur_actuel
= models
.CharField(max_length
=255)
85 poste_actuel
= models
.CharField(max_length
=255)
86 domaine_professionnel
= models
.CharField(max_length
=255)
89 adresse
= models
.CharField(max_length
=255)
90 ville
= models
.CharField(max_length
=255)
91 etat_province
= models
.CharField(max_length
=255,
92 verbose_name
="État/Province")
93 pays
= models
.ForeignKey(ref
.Pays
, db_column
='pays',
96 def __unicode__(self
):
97 return '%s %s [%s]' % (self
.prenom
, self
.nom
, self
.id)
101 storage_prive
= FileSystemStorage(settings
.PRIVE_MEDIA_ROOT
,
102 base_url
=settings
.PRIVE_MEDIA_URL
)
104 def candidat_piece_dispatch(instance
, filename
):
105 path
= "offre_emploi/%s_%s/%s/%s_%s" % (instance
.candidat
.nom
,
106 instance
.candidat
.prenom
, instance
.nom
, instance
.candidat
.id,
110 class CandidatPiece(models
.Model
):
111 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
112 related_name
='candidat_piece')
113 nom
= models
.CharField(max_length
=255)
114 #path = PrivateFileField("file", upload_to=candidat_piece_dispatch)
115 path
= models
.FileField(upload_to
=candidat_piece_dispatch
,
116 storage
=storage_prive
, )
118 def __unicode__(self
):
119 return '%s' % (self
.nom
)
121 class User(models
.Model
):
122 user
= models
.ForeignKey("auth.User", unique
=True)
123 candidats
= models
.ManyToManyField(Candidat
, verbose_name
='Candidats', blank
=True, null
=True,)
124 region
= models
.ForeignKey(ref
.Region
, db_column
='region')
126 #User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
127 # def __unicode__(self):
128 # return '%s %s' % (self.prenom, self.nom)
130 class CandidatEvaluation(models
.Model
):
131 candidat
= models
.ForeignKey(Candidat
, db_column
='candidat',
133 evaluateur
= models
.ForeignKey(User
, db_column
='evaluateur',
135 note
= models
.IntegerField(choices
=NOTES
, blank
=True, null
=True)
136 commentaire
= models
.TextField(null
=True, blank
=True)
137 date
= models
.DateField(auto_now_add
=True)