1501: Continuation des modèles (CandidatPiece, Evaluateur, CandidatEvaluation).
authornilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Thu, 26 May 2011 18:45:24 +0000 (14:45 -0400)
committernilovna.bascunan-vasquez <nilovna.bascunan-vasquez@localhost.localdomain>
Thu, 26 May 2011 18:45:24 +0000 (14:45 -0400)
project/recrutement/admin.py
project/recrutement/models.py

index 27d80a5..b1252f8 100644 (file)
@@ -9,5 +9,17 @@ class OffreEmploiAdmin(admin.ModelAdmin):
 class CandidatAdmin(admin.ModelAdmin):
     pass
 
+class CandidatPieceAdmin(admin.ModelAdmin):
+    pass
+
+class EvaluateurAdmin(admin.ModelAdmin):
+    pass
+
+class CandidatEvaluationAdmin(admin.ModelAdmin):
+    pass
+
 admin.site.register(OffreEmploi, OffreEmploiAdmin)
 admin.site.register(Candidat, CandidatAdmin)
+admin.site.register(CandidatPiece, CandidatPieceAdmin)
+admin.site.register(Evaluateur, EvaluateurAdmin)
+admin.site.register(CandidatEvaluation, CandidatEvaluationAdmin)
index 6340835..6ec300e 100755 (executable)
@@ -2,7 +2,9 @@
 
 import datetime
 
+from django.core.files.storage import FileSystemStorage
 from django.db import models
+import settings
 
 import datamaster_modeles.models as ref
 from project.rh import models as rh
@@ -22,6 +24,7 @@ class Metadata(models.Model):
 
 
 class OffreEmploi(Metadata):
+    # TODO : Afficher les bureaux selon la région choisies?
     nom = models.CharField(max_length=255)
     resume = models.TextField()
     description = models.TextField()
@@ -29,6 +32,9 @@ class OffreEmploi(Metadata):
     date_limite = models.DateField(verbose_name="Date limite")  
     region = models.ForeignKey(ref.Region, db_column='region')
     bureau = models.ForeignKey(ref.Bureau, db_column='bureau')
+
+    def __unicode__(self):
+        return '%s [%s]' % (self.nom, self.id)
  
  
 ### CANDIDAT
@@ -52,20 +58,21 @@ STATUT_CHOICES = (
 )
 
 class Candidat(Metadata):
+    # TODO : Automatiser le statut à la création à Nouveau
     offre_emploi = models.ForeignKey('OffreEmploi', db_column='offre_emploi',
                     related_name='candidats')
     prenom = models.CharField(max_length=255)
     nom = models.CharField(max_length=255)
     genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
     nationalite = models.ForeignKey(ref.Pays, 
-                                    db_column='nationalite',
-                                    related_name='candidat_nationalite')
+                    db_column='nationalite',
+                    related_name='candidat_nationalite')
     date_naissance = models.DateField(verbose_name="Date de naissance")   
     situation_famille = models.CharField(max_length=1, 
-                                         choices=SITUATION_CHOICES)
+                        choices=SITUATION_CHOICES)
     nombre_dependant = models.IntegerField(verbose_name="Nombre de dépendant")
     niveau_diplome = models.CharField(max_length=255,
-                                      verbose_name="Niveau du diplôme")
+                        verbose_name="Niveau du diplôme")
     employeur_actuel = models.CharField(max_length=255)
     poste_actuel = models.CharField(max_length=255)
     domaine_professionnel = models.CharField(max_length=255)
@@ -74,9 +81,45 @@ class Candidat(Metadata):
     adresse = models.CharField(max_length=255)
     ville = models.CharField(max_length=255)
     etat_province = models.CharField(max_length=255, 
-                                     verbose_name="État/Province")
+                    verbose_name="État/Province")
     pays = models.ForeignKey(ref.Pays, db_column='pays',
-                             related_name='candidat_pays')
+            related_name='candidats')
 
     statut = models.CharField(max_length=4, 
                               choices=STATUT_CHOICES)
+
+    def __unicode__(self):
+        return '%s %s [%s]' % (self.prenom, self.nom, self.id)
+
+### PIECE CANDIDAT
+# Upload de fichiers
+storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT, 
+                            base_url=settings.PRIVE_MEDIA_URL)
+
+def candidat_piece_dispatch(instance, filename):
+    path = "offre_emploi/%s_%s/%s/%s_%s" % (instance.candidat.nom, 
+                instance.candidat.prenom, instance.nom, instance.candidat.id,
+                filename)
+    return path
+
+class CandidatPiece(models.Model):
+    candidat = models.ForeignKey(Candidat, db_column='candidat',
+                related_name='+') 
+    nom = models.CharField(max_length=255)
+    path = models.FileField(upload_to=candidat_piece_dispatch, 
+            storage=storage_prive)
+
+    def __unicode__(self):
+        return '%s' % (self.nom)
+
+class Evaluateur(models.Model):
+    candidats = models.ManyToManyField(Candidat)
+
+class CandidatEvaluation(models.Model):
+    candidat = models.ForeignKey(Candidat, db_column='candidat', 
+                related_name='candidats') 
+    evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur', 
+                    related_name='evaluateurs') 
+    note = models.IntegerField()
+    commentaire = models.TextField()
+    date = models.DateField(auto_now_add=True)