[#2658] Ne pas afficher les objets archivés nulle part sauf dans l'admin
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 31 May 2012 21:48:04 +0000 (17:48 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Mon, 18 Jun 2012 22:30:21 +0000 (18:30 -0400)
project/rh/admin.py
project/rh/managers.py
project/rh/models.py

index 7fc424e..fb74187 100644 (file)
@@ -37,14 +37,14 @@ class BaseAdmin(admin.ModelAdmin):
 
 # Admin pour reversion
 
-class ArchiveMixin(object):
+class ArchivableAdmin(admin.ModelAdmin):
     """
-    Archive Mixin pour gérer le queryset et le display
-    NON COMPRIS : list_filter, et list_display, field à setter dans la classe.
+    Admin pour les modèles archivables
     """
+    list_filter = ('archive', )
 
     def queryset(self, request):
-        return self.model._base_manager
+        return self.model.avec_archives.all()
 
     def _archive(self, obj):
         if obj.archive:
@@ -336,7 +336,7 @@ class ClassementAdmin(reversion.VersionAdmin, DerniereModificationAdmin,
     _classement.short_description = u"Classement"
 
 
-class DeviseAdmin(reversion.VersionAdmin, ArchiveMixin,
+class DeviseAdmin(reversion.VersionAdmin, ArchivableAdmin,
                   DerniereModificationAdmin, BaseAdmin):
     ignore_duplicate_revisions = True
     list_display = (
@@ -1010,7 +1010,7 @@ class ResponsableImplantationAdmin(BaseAdmin):
         return False
 
 
-class ServiceAdminBase(ArchiveMixin, DerniereModificationAdmin, BaseAdmin):
+class ServiceAdminBase(ArchivableAdmin, DerniereModificationAdmin, BaseAdmin):
     list_display = ('nom', '_archive', 'derniere_modification')
     list_filter = ('archive', )
     fieldsets = (
@@ -1098,7 +1098,7 @@ class TypePosteAdmin(reversion.VersionAdmin, DerniereModificationAdmin,
     )
 
 
-class TypeRemunerationAdmin(reversion.VersionAdmin, ArchiveMixin,
+class TypeRemunerationAdmin(reversion.VersionAdmin, ArchivableAdmin,
                             DerniereModificationAdmin, BaseAdmin):
     ignore_duplicate_revisions = True
     list_display = (
index 3390cec..f07d024 100644 (file)
@@ -161,13 +161,5 @@ class DossierComparaisonManager(SecurityManager):
     prefixe_implantation = "implantation__region"
 
 
-class DeviseManager(models.Manager):
-    pass
-
-
-class ServiceManager(models.Manager):
-    pass
-
-
 class TypeRemunerationManager(models.Manager):
     pass
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)