release emploi 0.6
[auf_django_emploi.git] / auf / django / emploi / models.py
index 62716c4..9b97cc6 100755 (executable)
@@ -1,28 +1,27 @@
-# -=- encoding: utf-8 -=-
+# -*- encoding: utf-8 -*
 
 import datetime
 from django.core.files.storage import FileSystemStorage
 from tinymce import models as tinymce_models
 from django.db import models
-import settings
-#from private_files import PrivateFileField
-
 import datamaster_modeles.models as ref
+import settings
 
 ### CONSTANTES ###
 # HELP_TEXT
 HELP_TEXT_NB_DEPENDANT = "Le nombre de personnes à charge"
-HELP_TEXT_FORMAT_DATE = "Le format de la date est AAAA-MM-JJ"
 HELP_TEXT_TAGS_ACCEPTES = "Pour le texte, les variables disponibles sont : \
                             {{ nom_candidat }} {{ prenom_candidat }} \
                             {{ offre_emploi }}. Ces champs seront \
                             automatiquement remplacés par les informations de \
                             chaque candidat."
-
+HELP_TEXT_EN_AFFICHAGE = "En cochant cette case, l'offre d'emploi sera affichée\
+                         sur le site institutionnel dès qu'elle aura le statut \
+                        'En diffusion' et ce, jusqu'à la date limite."
 
 STATUT_OFFRE_EMPLOI_CHOICES = (
     ('NOUV', 'Nouveau'),
-    ('AFFI', 'Offre d\'emploi en affichage'),
+    ('AFFI', 'En diffusion'),
     ('EVAL', 'En évaluation des candidatures'),
     ('ENTR', 'En entrevue'),
     ('TERM', 'Terminé'),
@@ -33,12 +32,14 @@ GENRE_CHOICES = (
     ('M', 'Homme'),
     ('F', 'Femme'),
 )
+
 SITUATION_CHOICES = (
     ('C', 'Célibataire'),
-    ('F', 'Conjoint de fait'),
     ('M', 'Marié'),
-    ('D', 'Divorcé'),
+    ('F', 'Conjoint de fait'),
+    ('P', 'Pacsé'),
 )
+
 STATUT_CHOICES = (
     ('NOUV', 'Nouveau'),
     ('REC', 'Recevable'),
@@ -62,23 +63,23 @@ class Metadata(models.Model):
     actif == False : objet réputé supprimé.
     """
     actif = models.BooleanField(default=True)
-    date_creation = models.DateField(auto_now_add=True,
-                        help_text=HELP_TEXT_FORMAT_DATE, )
+    date_creation = models.DateField(auto_now_add=True, )
     
     class Meta:
         abstract = True
 
 class OffreEmploi(Metadata):
     est_affiche = models.BooleanField(default=False, 
-                                    verbose_name="En affichage sur le site")
+                        verbose_name="À afficher sur le site institutionnel",
+                        help_text=HELP_TEXT_EN_AFFICHAGE)
     statut = models.CharField(max_length=4, choices=STATUT_OFFRE_EMPLOI_CHOICES,
                                 default='NOUV')
+    date_limite = models.DateField(verbose_name="Date limite",)
     nom = models.CharField(max_length=255)
-    resume = models.TextField(verbose_name="Résumé")
-    description = tinymce_models.HTMLField()
-    #poste = models.ForeignKey('rh.Poste', db_column='poste')
-    date_limite = models.DateField(verbose_name="Date limite",
-                        help_text=HELP_TEXT_FORMAT_DATE,)  
+    resume = models.TextField(verbose_name="Résumé", blank=True)
+    description = models.TextField()
+    poste = models.CharField(max_length=255)
+    poste_nom = models.CharField(max_length=255)
     region = models.ForeignKey(ref.Region, db_column='region', 
                 verbose_name="Région")
     bureau = models.ForeignKey(ref.Bureau, db_column='bureau', )
@@ -86,8 +87,7 @@ class OffreEmploi(Metadata):
                         verbose_name="Durée de l'affectation")
     renumeration = models.CharField(max_length=255,
                     verbose_name='Rénumération')
-    debut_affectation = models.DateField(verbose_name="Début de l'affectation",
-                        help_text=HELP_TEXT_FORMAT_DATE,)
+    debut_affectation = models.DateField(verbose_name="Début de l'affectation",)
     lieu_affectation = models.ForeignKey(ref.Implantation,  
                         db_column='implantation', 
                         verbose_name="Lieu d'affectation")
@@ -127,38 +127,39 @@ 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", blank=True)
     code_postal = models.CharField(max_length=255, blank=True)
     pays = models.ForeignKey(ref.Pays, db_column='pays',
             related_name='+')
 
-    def __unicode__(self):
-        return '%s %s [%s]' % (self.prenom, self.nom, self.id)
-
     class Meta:
         db_table = 'emploi_candidat'
 
+    def pieces_jointes(self):
+        return CandidatPiece.objects.filter(candidat=self) 
+    pieces_jointes.allow_tags = True    
+
+    def __unicode__(self):
+        return '%s %s [%s]' % (self.nom, self.prenom, self.id)
+
+
 # Upload de fichiers
-#storage_prive = FileSystemStorage(settings.PRIVE_MEDIA_ROOT, 
-#                            base_url=settings.PRIVE_MEDIA_URL)
+storage_prive = FileSystemStorage(settings.OE_PRIVE_MEDIA_ROOT, 
+                            base_url=settings.OE_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)
+    path = u'%s/%s/%s' % ('emplois', instance.candidat.id, filename)
     return path
 
 class CandidatPiece(models.Model):
     candidat = models.ForeignKey(Candidat, db_column='candidat',
                 related_name='candidat_piece') 
     nom = models.CharField(max_length=3, choices=TYPE_PIECE_CHOICES)
-    #path = PrivateFileField("file", upload_to=candidat_piece_dispatch)
-    #    path = models.FileField(verbose_name="Fichier", 
-    #        upload_to=candidat_piece_dispatch, )
-    #storage=storage_prive, )
+    path = models.FileField(verbose_name="Fichier", 
+                        upload_to=candidat_piece_dispatch, storage=storage_prive)
 
     class Meta:
-        db_table = 'emploi_evaluateur'
+        db_table = 'emploi_pieces'
         verbose_name = "pièce jointe"
         verbose_name_plural = "pièces jointes"