[#2658] Intégré django-reversion à l'app rh
[auf_rh_dae.git] / project / rh / models.py
index f39e795..d2771ba 100644 (file)
@@ -4,16 +4,16 @@ import datetime
 from datetime import date
 from decimal import Decimal
 
-from django.core.files.storage import FileSystemStorage
-from django.db import models
-from django.db.models import Q
-from django.conf import settings
-
+import reversion
 from auf.django.emploi.models import \
         GENRE_CHOICES, SITUATION_CHOICES  # devrait plutot être dans references
 from auf.django.metadata.models import AUFMetadata
 from auf.django.metadata.managers import NoDeleteManager
 from auf.django.references import models as ref
+from django.core.files.storage import FileSystemStorage
+from django.db import models
+from django.db.models import Q
+from django.conf import settings
 
 from project.rh.change_list import \
         RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, STATUT_INACTIF, \
@@ -222,22 +222,22 @@ class Poste_(AUFMetadata):
         'Devise', db_column='devise_max', null=True, related_name='+'
     )
     salaire_min = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
     salaire_max = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
     indemn_min = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
     indemn_max = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
     autre_min = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
     autre_max = models.DecimalField(
-        max_digits=12, decimal_places=2, null=True, default=0
+        max_digits=12, decimal_places=2, null=True, blank=True
     )
 
     # Comparatifs de rémunération
@@ -340,6 +340,11 @@ class Poste(Poste_):
             .exclude(date_fin__lt=date.today())
         ]
 
+reversion.register(Poste, format='xml', follow=[
+    'rh_financements', 'rh_pieces', 'rh_comparaisons_internes',
+    'commentaires', 'rh_dossiers'
+])
+
 
 POSTE_FINANCEMENT_CHOICES = (
     ('A', 'A - Frais de personnel'),
@@ -378,6 +383,8 @@ class PosteFinancement(PosteFinancement_):
         Poste, db_column='poste', related_name='rh_financements'
     )
 
+reversion.register(PosteFinancement, format='xml')
+
 
 class PostePiece_(models.Model):
     """
@@ -402,6 +409,8 @@ class PostePiece(PostePiece_):
         Poste, db_column='poste', related_name='rh_pieces'
     )
 
+reversion.register(PostePiece, format='xml')
+
 
 class PosteComparaison_(AUFMetadata, DevisableMixin):
     """
@@ -433,12 +442,15 @@ class PosteComparaison(PosteComparaison_):
 
     objects = NoDeleteManager()
 
+reversion.register(PosteComparaison, format='xml')
+
 
 class PosteCommentaire(Commentaire):
     poste = models.ForeignKey(
         Poste, db_column='poste', related_name='commentaires'
     )
 
+reversion.register(PosteCommentaire, format='xml')
 
 
 ### EMPLOYÉ/PERSONNE
@@ -453,7 +465,7 @@ class Employe(AUFMetadata):
     """
 
     objects = EmployeManager()
-    
+
     # Identification
     nom = models.CharField(max_length=255)
     prenom = models.CharField(u"prénom", max_length=255)
@@ -575,6 +587,10 @@ class Employe(AUFMetadata):
             regions.append(d.poste.implantation.region)
         return regions
 
+reversion.register(Employe, format='xml', follow=[
+    'pieces', 'commentaires', 'ayantdroits', 'rh_dossiers'
+])
+
 
 class EmployePiece(models.Model):
     """
@@ -598,16 +614,20 @@ class EmployePiece(models.Model):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+reversion.register(EmployePiece, format='xml')
+
 
 class EmployeCommentaire(Commentaire):
     employe = models.ForeignKey(
-        'Employe', db_column='employe', related_name='+'
+        'Employe', db_column='employe', related_name='commentaires'
     )
 
     class Meta:
         verbose_name = u"Employé commentaire"
         verbose_name_plural = u"Employé commentaires"
 
+reversion.register(EmployeCommentaire, format='xml')
+
 
 LIEN_PARENTE_CHOICES = (
     ('Conjoint', 'Conjoint'),
@@ -664,12 +684,16 @@ class AyantDroit(AUFMetadata):
             regions.append(d.poste.implantation.region)
         return regions
 
+reversion.register(AyantDroit, format='xml', follow=['commentaires'])
+
 
 class AyantDroitCommentaire(Commentaire):
     ayant_droit = models.ForeignKey(
-        'AyantDroit', db_column='ayant_droit', related_name='+'
+        'AyantDroit', db_column='ayant_droit', related_name='commentaires'
     )
 
+reversion.register(AyantDroitCommentaire, format='xml')
+
 
 ### DOSSIER
 
@@ -976,6 +1000,11 @@ class Dossier(Dossier_):
         )
     )
 
+reversion.register(Dossier, format='xml', follow=[
+    'rh_dossierpieces', 'rh_comparaisons', 'rh_remunerations',
+    'rh_contrats', 'commentaires'
+])
+
 
 class DossierPiece_(models.Model):
     """
@@ -1000,6 +1029,7 @@ class DossierPiece(DossierPiece_):
         Dossier, db_column='dossier', related_name='rh_dossierpieces'
     )
 
+reversion.register(DossierPiece, format='xml')
 
 
 class DossierCommentaire(Commentaire):
@@ -1007,6 +1037,8 @@ class DossierCommentaire(Commentaire):
         Dossier, db_column='dossier', related_name='commentaires'
     )
 
+reversion.register(DossierCommentaire, format='xml')
+
 
 class DossierComparaison_(models.Model, DevisableMixin):
     """
@@ -1036,6 +1068,8 @@ class DossierComparaison(DossierComparaison_):
         Dossier, related_name='rh_comparaisons'
     )
 
+reversion.register(DossierComparaison, format='xml')
+
 
 ### RÉMUNÉRATION
 
@@ -1052,8 +1086,7 @@ class RemunerationMixin(AUFMetadata):
         null=True, blank=True
     )
     montant = models.DecimalField(
-        null=True, blank=True,
-        default=0, max_digits=12, decimal_places=2
+        null=True, blank=True, max_digits=12, decimal_places=2
     )  # Annuel (12 mois, 52 semaines, 364 jours?)
     devise = models.ForeignKey('Devise', db_column='devise', related_name='+')
 
@@ -1106,6 +1139,8 @@ class Remuneration(Remuneration_):
         Dossier, db_column='dossier', related_name='rh_remunerations'
     )
 
+reversion.register(Remuneration, format='xml')
+
 
 ### CONTRATS
 
@@ -1148,6 +1183,8 @@ class Contrat(Contrat_):
         Dossier, db_column='dossier', related_name='rh_contrats'
     )
 
+reversion.register(Contrat, format='xml')
+
 
 ### RÉFÉRENCES RH
 
@@ -1166,6 +1203,8 @@ class CategorieEmploi(AUFMetadata):
     def __unicode__(self):
         return self.nom
 
+reversion.register(CategorieEmploi, format='xml')
+
 
 class FamilleProfessionnelle(models.Model):
     """
@@ -1181,6 +1220,8 @@ class FamilleProfessionnelle(models.Model):
     def __unicode__(self):
         return self.nom
 
+reversion.register(FamilleProfessionnelle, format='xml')
+
 
 class TypePoste(AUFMetadata):
     """
@@ -1208,6 +1249,9 @@ class TypePoste(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+reversion.register(TypePoste, format='xml')
+
+
 TYPE_PAIEMENT_CHOICES = (
     (u'Régulier', u'Régulier'),
     (u'Ponctuel', u'Ponctuel'),
@@ -1250,6 +1294,8 @@ class TypeRemuneration(AUFMetadata):
             archive = ""
         return u'%s %s' % (self.nom, archive)
 
+reversion.register(TypeRemuneration, format='xml')
+
 
 class TypeRevalorisation(AUFMetadata):
     """
@@ -1266,6 +1312,8 @@ class TypeRevalorisation(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+reversion.register(TypeRevalorisation, format='xml')
+
 
 class Service(AUFMetadata):
     """
@@ -1288,6 +1336,8 @@ class Service(AUFMetadata):
             archive = ""
         return u'%s %s' % (self.nom, archive)
 
+reversion.register(Service, format='xml')
+
 
 TYPE_ORGANISME_CHOICES = (
     ('MAD', 'Mise à disposition'),
@@ -1322,6 +1372,8 @@ class OrganismeBstg(AUFMetadata):
     def get_regions(self):
         return [self.pays.region]
 
+reversion.register(OrganismeBstg, format='xml')
+
 
 class Statut(AUFMetadata):
     """
@@ -1347,6 +1399,8 @@ class Statut(AUFMetadata):
     def __unicode__(self):
         return u'%s : %s' % (self.code, self.nom)
 
+reversion.register(Statut, format='xml')
+
 
 TYPE_CLASSEMENT_CHOICES = (
     ('S', 'S -Soutien'),
@@ -1388,7 +1442,7 @@ class Classement_(AUFMetadata):
     type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
     echelon = models.IntegerField(u"échelon", blank=True, default=0)
     degre = models.IntegerField(u"degré", blank=True, default=0)
-    coefficient = models.FloatField(u"coefficient", default=0, null=True)
+    coefficient = models.FloatField(u"coefficient", blank=True, null=True)
 
     # Méta
     # annee # au lieu de date_debut et date_fin
@@ -1407,6 +1461,8 @@ class Classement_(AUFMetadata):
 class Classement(Classement_):
     __doc__ = Classement_.__doc__
 
+reversion.register(Classement, format='xml')
+
 
 class TauxChange_(AUFMetadata):
     """
@@ -1431,6 +1487,8 @@ class TauxChange_(AUFMetadata):
 class TauxChange(TauxChange_):
     __doc__ = TauxChange_.__doc__
 
+reversion.register(TauxChange, format='xml')
+
 
 class ValeurPointManager(NoDeleteManager):
 
@@ -1474,6 +1532,8 @@ class ValeurPoint_(AUFMetadata):
 class ValeurPoint(ValeurPoint_):
     __doc__ = ValeurPoint_.__doc__
 
+reversion.register(ValeurPoint, format='xml')
+
 
 class Devise(AUFMetadata):
     """
@@ -1493,6 +1553,8 @@ class Devise(AUFMetadata):
     def __unicode__(self):
         return u'%s - %s' % (self.code, self.nom)
 
+reversion.register(Devise, format='xml')
+
 
 class TypeContrat(AUFMetadata):
     """
@@ -1509,6 +1571,8 @@ class TypeContrat(AUFMetadata):
     def __unicode__(self):
         return u'%s' % (self.nom)
 
+reversion.register(TypeContrat, format='xml')
+
 
 ### AUTRES
 
@@ -1544,3 +1608,5 @@ class ResponsableImplantation(models.Model):
         ordering = ['implantation__nom']
         verbose_name = "Responsable d'implantation"
         verbose_name_plural = "Responsables d'implantation"
+
+reversion.register(ResponsableImplantation, format='xml')