devise archive
[auf_rh_dae.git] / project / rh / admin.py
index a87fbce..254cd0f 100644 (file)
@@ -44,47 +44,34 @@ class DateRangeMixin(object):
         return ChangeList
 
 class ChangeList(DjangoChangeList):
-    PERIODE_CHOICE = ('', 'actuelle', 'passee', 'future')
 
     def __init__(self, *args, **kwargs):
-        self.annees = {'actuelle': 'actuelle', 'passee': 'passee', 'future': 'future'}
         super(ChangeList, self).__init__(*args, **kwargs)
     
     def get_query_set(self):
         old = self.params.copy()
-        periode = None
-        annee = None
         date_debut = None
         date_fin = None
-        today = datetime.date.today()
         for k, v in self.params.items():
-            if 'periode' == k:
-                periode = self.params[k]
+            if 'date_debut' in k:
+                prefix_debut = "".join(k.split('date_debut')[0:-1]) + 'date_debut'
+                date_debut = v
                 del self.params[k]
-            if 'annee' == k:
-                annee = self.params[k]
+            elif 'date_fin' in k:
+                prefix_fin = "".join(k.split('date_fin')[0:-1]) + 'date_fin'
+                date_fin = v
                 del self.params[k]
-            if 'date_debut' == k:
-                date_debut = self.params[k]
-                del self.params[k]
-            if 'date_fin' == k:
-                date_fin = self.params[k]
-                del self.params[k]
-
         qs = super(ChangeList, self).get_query_set()
-        if periode == 'actuelle':
-            qs = qs.filter(date_fin__exact=today, date_debut__exact=today).distinct()
-        elif periode == 'passee':
-            qs = qs.filter(date_fin__lt=today)
-        elif periode == 'future':
-            qs = qs.filter(date_debut__gt=today)
-        elif annee:
-            date_debut = datetime.date(int(annee), 01, 01)
-            date_fin = datetime.date(int(annee), 12, 31)
-
-        if date_debut and date_fin:
-            prefix_debut = 'date_debut'
-            prefix_fin = 'date_fin'
+
+        # hack pour spécifier un range
+        if date_fin is None and date_debut is not None:
+            date_fin = '2020-01-01'
+            prefix_fin = prefix_debut.replace('debut', 'fin')
+        if date_debut is None and date_fin is not None:
+            date_debut = '1000-01-01'
+            prefix_debut = prefix_fin.replace('fin', 'debut')
+
+        if date_debut is not None and date_fin is not None:    
             q_left = (Q(**{'%s__isnull' % prefix_debut : True}) | Q(**{'%s__lte' % prefix_debut : date_debut})) & (Q(**{'%s__gte' % prefix_fin : date_debut}) & Q(**{'%s__lte' % prefix_fin : date_fin}))
             q_right = (Q(**{'%s__isnull' % prefix_fin : True}) | Q(**{'%s__gte' % prefix_fin : date_fin})) & (Q(**{'%s__gte' % prefix_debut : date_debut}) & Q(**{'%s__lte' % prefix_debut : date_fin}))
             q_both = Q(**{'%s__isnull' % prefix_fin : True}) | Q(**{'%s__lte' % prefix_fin : date_fin}) & (Q(**{'%s__isnull' % prefix_debut : True}) | Q(**{'%s__gte' % prefix_debut : date_debut}))
@@ -271,7 +258,7 @@ class CommentaireAdmin(admin.ModelAdmin):
 
 
 class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
-    list_display = ('code', 'nom', '_date_modification', 'user_modification',)
+    list_display = ('code', 'nom', '_date_modification', 'user_modification', '_archive',)
     list_filter = ('archive', )
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {
@@ -279,6 +266,21 @@ class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
         }),
     )
 
+    def queryset(self, request):
+         return rh.Devise._base_manager
+
+    def _archive(self, obj):
+        if obj.archive:
+            icon = 'no'
+        else:
+            icon = 'yes'
+        html = """<img alt="%s" src="%sadmin/img/admin/icon-%s.gif">""" % (obj.archive, settings.STATIC_URL, icon)
+        return html
+    _archive.short_description = u'Archivé'
+    _archive.admin_order_field = 'archive'
+    _archive.allow_tags = True
+    
+
     def _date_modification(self, obj):
         return date(obj.date_modification) if obj.date_modification is not None else "(aucune)"
     _date_modification.short_description = u'date modification'