[#2658] Intégration de reversion à l'app rh
[auf_rh_dae.git] / project / rh / models.py
index d2771ba..07e702f 100644 (file)
@@ -7,8 +7,6 @@ from decimal import Decimal
 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
@@ -109,12 +107,15 @@ class DevisableMixin(object):
         return int(round(float(self.montant) * float(taux), 2))
 
 
-class Commentaire(AUFMetadata):
+class Commentaire(models.Model):
     texte = models.TextField()
     owner = models.ForeignKey(
         'auth.User', db_column='owner', related_name='+',
         verbose_name=u"Commentaire de"
     )
+    date_creation = models.DateTimeField(
+        u'date', auto_now_add=True, blank=True, null=True
+    )
 
     class Meta:
         abstract = True
@@ -132,7 +133,7 @@ POSTE_APPEL_CHOICES = (
 )
 
 
-class Poste_(AUFMetadata):
+class Poste_(models.Model):
     """
     Un Poste est un emploi (job) à combler dans une implantation.
     Un Poste peut être comblé par un Employe, auquel cas un Dossier est créé.
@@ -335,14 +336,13 @@ class Poste(Poste_):
         UTILISE pour mettre a jour le flag vacant
         """
         return [
-            d.employe for d in self.rh_dossiers
-            .filter(supprime=False)
-            .exclude(date_fin__lt=date.today())
+            d.employe
+            for d in self.rh_dossiers.exclude(date_fin__lt=date.today())
         ]
 
 reversion.register(Poste, format='xml', follow=[
     'rh_financements', 'rh_pieces', 'rh_comparaisons_internes',
-    'commentaires', 'rh_dossiers'
+    'commentaires'
 ])
 
 
@@ -412,7 +412,7 @@ class PostePiece(PostePiece_):
 reversion.register(PostePiece, format='xml')
 
 
-class PosteComparaison_(AUFMetadata, DevisableMixin):
+class PosteComparaison_(models.Model, DevisableMixin):
     """
     De la même manière qu'un dossier, un poste peut-être comparé à un autre
     poste.
@@ -440,8 +440,6 @@ class PosteComparaison(PosteComparaison_):
         Poste, related_name='rh_comparaisons_internes'
     )
 
-    objects = NoDeleteManager()
-
 reversion.register(PosteComparaison, format='xml')
 
 
@@ -455,7 +453,7 @@ reversion.register(PosteCommentaire, format='xml')
 
 ### EMPLOYÉ/PERSONNE
 
-class Employe(AUFMetadata):
+class Employe(models.Model):
     """
     Personne occupant ou ayant occupé un Poste. Un Employe aura autant de
     Dossiers qu'il occupe ou a occupé de Postes.
@@ -588,7 +586,7 @@ class Employe(AUFMetadata):
         return regions
 
 reversion.register(Employe, format='xml', follow=[
-    'pieces', 'commentaires', 'ayantdroits', 'rh_dossiers'
+    'pieces', 'commentaires', 'ayantdroits'
 ])
 
 
@@ -637,7 +635,7 @@ LIEN_PARENTE_CHOICES = (
 )
 
 
-class AyantDroit(AUFMetadata):
+class AyantDroit(models.Model):
     """
     Personne en relation avec un Employe.
     """
@@ -709,7 +707,7 @@ COMPTE_COMPTA_CHOICES = (
 )
 
 
-class Dossier_(AUFMetadata, DevisableMixin):
+class Dossier_(models.Model, DevisableMixin):
     """
     Le Dossier regroupe les informations relatives à l'occupation
     d'un Poste par un Employe. Un seul Dossier existe par Poste occupé
@@ -1073,7 +1071,7 @@ reversion.register(DossierComparaison, format='xml')
 
 ### RÉMUNÉRATION
 
-class RemunerationMixin(AUFMetadata):
+class RemunerationMixin(models.Model):
 
     # Identification
     type = models.ForeignKey(
@@ -1144,13 +1142,14 @@ reversion.register(Remuneration, format='xml')
 
 ### CONTRATS
 
-class ContratManager(NoDeleteManager):
+class ContratManager(models.Manager):
+
     def get_query_set(self):
         return super(ContratManager, self).get_query_set() \
                 .select_related('dossier', 'dossier__poste')
 
 
-class Contrat_(AUFMetadata):
+class Contrat_(models.Model):
     """
     Document juridique qui encadre la relation de travail d'un Employe
     pour un Poste particulier. Pour un Dossier (qui documente cette
@@ -1188,7 +1187,7 @@ reversion.register(Contrat, format='xml')
 
 ### RÉFÉRENCES RH
 
-class CategorieEmploi(AUFMetadata):
+class CategorieEmploi(models.Model):
     """
     Catégorie utilisée dans la gestion des Postes.
     Catégorie supérieure à TypePoste.
@@ -1223,7 +1222,7 @@ class FamilleProfessionnelle(models.Model):
 reversion.register(FamilleProfessionnelle, format='xml')
 
 
-class TypePoste(AUFMetadata):
+class TypePoste(models.Model):
     """
     Catégorie de Poste.
     """
@@ -1266,7 +1265,7 @@ NATURE_REMUNERATION_CHOICES = (
 )
 
 
-class TypeRemuneration(AUFMetadata):
+class TypeRemuneration(models.Model):
     """
     Catégorie de Remuneration.
     """
@@ -1297,7 +1296,7 @@ class TypeRemuneration(AUFMetadata):
 reversion.register(TypeRemuneration, format='xml')
 
 
-class TypeRevalorisation(AUFMetadata):
+class TypeRevalorisation(models.Model):
     """
     Justification du changement de la Remuneration.
     (Actuellement utilisé dans aucun traitement informatique.)
@@ -1315,7 +1314,7 @@ class TypeRevalorisation(AUFMetadata):
 reversion.register(TypeRevalorisation, format='xml')
 
 
-class Service(AUFMetadata):
+class Service(models.Model):
     """
     Unité administrative où les Postes sont rattachés.
     """
@@ -1345,7 +1344,7 @@ TYPE_ORGANISME_CHOICES = (
 )
 
 
-class OrganismeBstg(AUFMetadata):
+class OrganismeBstg(models.Model):
     """
     Organisation d'où provient un Employe mis à disposition (MAD) de
     ou détaché (DET) à l'AUF à titre gratuit.
@@ -1375,7 +1374,7 @@ class OrganismeBstg(AUFMetadata):
 reversion.register(OrganismeBstg, format='xml')
 
 
-class Statut(AUFMetadata):
+class Statut(models.Model):
     """
     Statut de l'Employe dans le cadre d'un Dossier particulier.
     """
@@ -1426,7 +1425,7 @@ class ClassementManager(models.Manager):
         return qs.all()
 
 
-class Classement_(AUFMetadata):
+class Classement_(models.Model):
     """
     Éléments de classement de la
     "Grille générique de classement hiérarchique".
@@ -1464,7 +1463,7 @@ class Classement(Classement_):
 reversion.register(Classement, format='xml')
 
 
-class TauxChange_(AUFMetadata):
+class TauxChange_(models.Model):
     """
     Taux de change de la devise vers l'euro (EUR)
     pour chaque année budgétaire.
@@ -1490,14 +1489,14 @@ class TauxChange(TauxChange_):
 reversion.register(TauxChange, format='xml')
 
 
-class ValeurPointManager(NoDeleteManager):
+class ValeurPointManager(models.Manager):
 
     def get_query_set(self):
         return super(ValeurPointManager, self).get_query_set() \
                 .select_related('devise', 'implantation')
 
 
-class ValeurPoint_(AUFMetadata):
+class ValeurPoint_(models.Model):
     """
     Utile pour connaître, pour un Dossier, le salaire de base théorique lié
     au classement dans la grille. La ValeurPoint s'obtient par l'implantation
@@ -1506,6 +1505,7 @@ class ValeurPoint_(AUFMetadata):
     salaire de base = coefficient * valeur du point de l'Implantation du Poste
     """
 
+    objects = models.Manager()
     actuelles = ValeurPointManager()
 
     valeur = models.FloatField(null=True)
@@ -1535,7 +1535,7 @@ class ValeurPoint(ValeurPoint_):
 reversion.register(ValeurPoint, format='xml')
 
 
-class Devise(AUFMetadata):
+class Devise(models.Model):
     """
     Devise monétaire.
     """
@@ -1556,7 +1556,7 @@ class Devise(AUFMetadata):
 reversion.register(Devise, format='xml')
 
 
-class TypeContrat(AUFMetadata):
+class TypeContrat(models.Model):
     """
     Type de contrat.
     """