fix counting
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 16 Feb 2012 19:41:29 +0000 (14:41 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 16 Feb 2012 19:41:29 +0000 (14:41 -0500)
project/rh/admin.py
project/rh/change_list.py

index e107914..4ece706 100644 (file)
@@ -521,6 +521,8 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admi
         'implantation', 
         '_service', 
         '_responsable',
+        'date_debut',
+        'date_fin',
         '_date_modification',
         'user_modification',
         )
index 9e6a224..93b6176 100644 (file)
@@ -169,6 +169,11 @@ class ChangeList(DjangoChangeList):
                     borne_gauche = aujourdhui
                     borne_droite = aujourdhui
                 elif v == STATUT_INACTIF:
+                    # dans le cas d'une FK, on retire des inactifs ceux qui ont une FK active
+                    if prefix != "":
+                        q_range = self.get_q_range(prefix, aujourdhui, aujourdhui)
+                        id_actifs = [o.id for o in qs.filter(q_range).distinct()]
+                        qs = qs.exclude(id__in=id_actifs)
                     borne_droite = aujourdhui
                 elif v == STATUT_FUTUR:
                     borne_gauche = aujourdhui
@@ -176,8 +181,7 @@ class ChangeList(DjangoChangeList):
                     q = q & self.get_q_inconnu(prefix)
                 
         q_range = self.get_q_range(prefix, borne_gauche, borne_droite)
-        qs = qs.filter(q & q_range)
-
+        qs = qs.filter(q & q_range).distinct()
 
         # Use select_related() if one of the list_display options is a field
         # with a relationship and the provided queryset doesn't already have
@@ -230,19 +234,3 @@ class ChangeList(DjangoChangeList):
             return qs.distinct()
         else:
             return qs
-
-    def get_query_string(self, new_params=None, remove=None):
-        if new_params is None: new_params = {}
-        if remove is None: remove = []
-        p = self.params.copy()
-        for r in remove:
-            for k in p.keys():
-                if k.startswith(r):
-                    del p[k]
-        for k, v in new_params.items():
-            if v is None:
-                if k in p:
-                    del p[k]
-            else:
-                p[k] = v
-        return '?%s' % urlencode(p)