Augmenté la taille des FileField
[auf_rh_dae.git] / project / rh / models.py
index b57d9b6..3c7a538 100644 (file)
@@ -10,6 +10,7 @@ from auf.django.emploi.models import \
 from auf.django.references import models as ref
 from django.contrib.auth.models import User
 from django.core.files.storage import FileSystemStorage
+from django.core.exceptions import MultipleObjectsReturned
 from django.db import models
 from django.db.models import Q
 from django.db.models.signals import post_save, pre_save
@@ -427,7 +428,8 @@ class PostePiece_(models.Model):
     """
     nom = models.CharField(u"Nom", max_length=255)
     fichier = models.FileField(
-        u"Fichier", upload_to=poste_piece_dispatch, storage=storage_prive
+        u"Fichier", upload_to=poste_piece_dispatch, storage=storage_prive,
+        max_length=255
     )
 
     class Meta:
@@ -554,6 +556,18 @@ class Employe(models.Model):
     def __unicode__(self):
         return u'%s %s [%s]' % (self.nom.upper(), self.prenom, self.id)
 
+    def get_latest_dossier_ordered_by_date_fin_and_principal(self):
+        res = self.rh_dossiers.order_by(
+            '-principal', 'date_fin')
+
+        # Retourne en le premier du queryset si la date de fin est None
+        # Sinon, retourne le plus récent selon la date de fin.
+        first = res[0]
+        if first.date_fin == None:
+            return first
+        else:
+            return res.order_by('-principal', '-date_fin')[0]
+
     def civilite(self):
         civilite = u''
         if self.genre.upper() == u'M':
@@ -681,7 +695,8 @@ class EmployePiece(models.Model):
     )
     nom = models.CharField(max_length=255)
     fichier = models.FileField(
-        u"fichier", upload_to=employe_piece_dispatch, storage=storage_prive
+        u"fichier", upload_to=employe_piece_dispatch, storage=storage_prive,
+        max_length=255
     )
 
     class Meta:
@@ -855,7 +870,10 @@ class Dossier_(DateActiviteMixin, models.Model, DevisableMixin,):
         )
 
     # Comptes
-    # TODO?
+    compte_compta = models.CharField(max_length=10, default='aucun',
+                                    verbose_name=u'Compte comptabilité',
+                                    choices=COMPTE_COMPTA_CHOICES)
+    compte_courriel = models.BooleanField()
 
     class Meta:
         abstract = True
@@ -1136,6 +1154,12 @@ class RHDossierClassementRecord(models.Model):
         blank=True,
         db_index=True
     )
+    commentaire = models.CharField(
+        max_length=2048,
+        blank=True,
+        null=True,
+        default='',
+        )
 
     def __unicode__(self):
         return self.classement.__unicode__()
@@ -1190,7 +1214,16 @@ class RHDossierClassementRecord(models.Model):
                     dossier=instance,
                     )
                 previous_classement = instance.before_save.classement
-
+        except MultipleObjectsReturned:
+            qs = cls.objects.filter(
+                dossier=instance,
+                classement=instance.before_save.classement,
+                date_fin=None,
+                )
+            latest = qs.latest('date_debut')
+            qs.exclude(id=latest.id).update(date_fin=today)
+            previous_record = latest
+            previous_classement = latest.classement
         else:
             previous_classement = previous_record.classement
 
@@ -1224,7 +1257,8 @@ class DossierPiece_(models.Model):
     """
     nom = models.CharField(max_length=255)
     fichier = models.FileField(
-        upload_to=dossier_piece_dispatch, storage=storage_prive
+        upload_to=dossier_piece_dispatch, storage=storage_prive,
+        max_length=255
     )
 
     class Meta:
@@ -1436,7 +1470,7 @@ class Contrat_(models.Model):
     )
     fichier = models.FileField(
         upload_to=contrat_dispatch, storage=storage_prive, null=True,
-        blank=True
+        blank=True, max_length=255
     )
 
     class Meta:
@@ -1529,7 +1563,7 @@ TYPE_PAIEMENT_CHOICES = (
 )
 
 NATURE_REMUNERATION_CHOICES = (
-    (u'Traitement', u'Traitements'),
+    (u'Traitement', u'Traitement'),
     (u'Indemnité', u'Indemnités autres'),
     (u'Charges', u'Charges patronales'),
     (u'Accessoire', u'Accessoires'),
@@ -1975,6 +2009,7 @@ class ChangementPersonnel(models.Model):
             id=instance.id)
         dd = instance.date_debut
         df = instance.date_fin
+        today = date.today()
        
         # Here, verify differences between the instance, before and
         # after the save.
@@ -2000,8 +2035,7 @@ class ChangementPersonnel(models.Model):
                 Q(date_fin__gte=dd - NEW_EMPLOYE_THRESHOLD)
                 )
 
-            # 1. If existe un Dossier récent, et c'est une nouvelle
-            # instance de Dossier:
+            # 1. If existe un Dossier récent
             if exists_recent_file_qs.count() > 0:
                 cls.create_changement(
                     instance,
@@ -2014,7 +2048,16 @@ class ChangementPersonnel(models.Model):
                     instance,
                     'NO',
                     )
-                
+
+        elif not df and not created and cls.objects.filter(
+            valide=True,
+            date_creation__gte=today - NEW_EMPLOYE_THRESHOLD,
+            type='DE',
+            ).count() > 0:
+            cls.create_changement(
+                instance,
+                'MO',
+                )
 
         # Date de fin a été modifiée:
         if df_has_changed: