[#2658] Ne pas afficher les objets archivés nulle part sauf dans l'admin
[auf_rh_dae.git] / project / rh / models.py
index 07e702f..67cd2b2 100644 (file)
@@ -17,10 +17,8 @@ from project.rh.change_list import \
         RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, STATUT_INACTIF, \
         STATUT_FUTUR
 from project.rh.managers import \
-        PosteManager, DossierManager, EmployeManager, \
-        DossierComparaisonManager, \
-        PosteComparaisonManager, DeviseManager, ServiceManager, \
-        TypeRemunerationManager
+        PosteManager, DossierManager, DossierComparaisonManager, \
+        PosteComparaisonManager, TypeRemunerationManager, EmployeManager
 from project.rh.validators import validate_date_passee
 
 
@@ -65,6 +63,23 @@ def contrat_dispatch(instance, filename):
     return path
 
 
+class ArchivableManager(models.Manager):
+
+    def get_query_set(self):
+        return super(ArchivableManager, self).get_query_set() \
+                .filter(archive=False)
+
+
+class Archivable(models.Model):
+    archive = models.BooleanField(u'archivé', default=False)
+
+    objects = ArchivableManager()
+    avec_archives = models.Manager()
+
+    class Meta:
+        abstract = True
+
+
 class DevisableMixin(object):
 
     def get_annee_pour_taux_devise(self):
@@ -1265,7 +1280,7 @@ NATURE_REMUNERATION_CHOICES = (
 )
 
 
-class TypeRemuneration(models.Model):
+class TypeRemuneration(Archivable):
     """
     Catégorie de Remuneration.
     """
@@ -1279,7 +1294,6 @@ class TypeRemuneration(models.Model):
         u"nature de la rémunération", max_length=30,
         choices=NATURE_REMUNERATION_CHOICES
     )
-    archive = models.BooleanField(verbose_name=u"Archivé", default=False)
 
     class Meta:
         ordering = ['nom']
@@ -1287,11 +1301,7 @@ class TypeRemuneration(models.Model):
         verbose_name_plural = u"Types de rémunération"
 
     def __unicode__(self):
-        if self.archive:
-            archive = u"(archivé)"
-        else:
-            archive = ""
-        return u'%s %s' % (self.nom, archive)
+        return self.nom
 
 reversion.register(TypeRemuneration, format='xml')
 
@@ -1314,26 +1324,19 @@ class TypeRevalorisation(models.Model):
 reversion.register(TypeRevalorisation, format='xml')
 
 
-class Service(models.Model):
+class Service(Archivable):
     """
     Unité administrative où les Postes sont rattachés.
     """
-    objects = ServiceManager()
-
-    archive = models.BooleanField(verbose_name=u"Archivé", default=False)
     nom = models.CharField(max_length=255)
 
     class Meta:
         ordering = ['nom']
-        verbose_name = u"Service"
-        verbose_name_plural = u"Services"
+        verbose_name = u"service"
+        verbose_name_plural = u"services"
 
     def __unicode__(self):
-        if self.archive:
-            archive = u"(archivé)"
-        else:
-            archive = ""
-        return u'%s %s' % (self.nom, archive)
+        return self.nom
 
 reversion.register(Service, format='xml')
 
@@ -1535,20 +1538,17 @@ class ValeurPoint(ValeurPoint_):
 reversion.register(ValeurPoint, format='xml')
 
 
-class Devise(models.Model):
+class Devise(Archivable):
     """
     Devise monétaire.
     """
-    objects = DeviseManager()
-
-    archive = models.BooleanField(verbose_name=u"Archivé", default=False)
     code = models.CharField(max_length=10, unique=True)
     nom = models.CharField(max_length=255)
 
     class Meta:
         ordering = ['code']
-        verbose_name = u"Devise"
-        verbose_name_plural = u"Devises"
+        verbose_name = u"devise"
+        verbose_name_plural = u"devises"
 
     def __unicode__(self):
         return u'%s - %s' % (self.code, self.nom)