date range
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 8 Feb 2012 15:21:13 +0000 (10:21 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Wed, 8 Feb 2012 15:21:13 +0000 (10:21 -0500)
project/rh/admin.py
project/rh/filters.py

index b798dc8..d994ce6 100644 (file)
@@ -19,7 +19,27 @@ from groups import grp_drh
 import models as rh
 import filters
 
-
+################################################################################
+# FILTRAGE PAR DATE 
+################################################################################
+class DateRangeMixin(object):
+    """
+    Mixin pour que le model admin utilise le changelist trafiqué permettant de filter par range
+    non strict.
+    Par défaut, le filtrage est configuré sur aujourd'hui, soit les actifs
+    """
+    def get_changelist(self, request, **kwargs):
+        if request.META.has_key('HTTP_REFERER'):
+            referer = request.META['HTTP_REFERER']
+            referer = "/".join(referer.split('/')[3:])
+            referer = "/%s" % referer.split('?')[0]
+            change_list_view = 'admin:%s_%s_changelist' % (self.model._meta.app_label, self.model.__name__.lower())
+            if referer != reverse(change_list_view):
+                params = request.GET.copy()
+                today = datetime.date.today()
+                params.update({'date_debut__gte' : str(today), 'date_fin__lte' : str(today) })
+                request.GET = params
+        return ChangeList
 
 class ChangeList(DjangoChangeList):
 
@@ -57,6 +77,8 @@ class ChangeList(DjangoChangeList):
         self.params = old
         return qs
 
+################################################################################
+
 # Override of the InlineModelAdmin to support the link in the tabular inline
 class LinkedInline(admin.options.InlineModelAdmin):
     template = "admin/linked.html"
@@ -234,7 +256,7 @@ class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     )
 
 
-class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, AjaxSelect):
+class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, AjaxSelect,):
     alphabet_filter = 'employe__nom'
     search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', 'poste__nom_feminin')
     list_display = (
@@ -294,9 +316,6 @@ class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin,
             ):
             return True
 
-    def get_changelist(self, request, **kwargs):
-        return ChangeList
-
     def _id(self, d):
         apercu_link = u"""<a title="Aperçu du dossier" onclick="return showAddAnotherPopup(this);" href='%s'><img src="%simg/loupe.png" /></a>""" % \
                 (reverse('dossier_apercu', args=(d.id,)),
@@ -366,7 +385,7 @@ class DossierCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class EmployeAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin):
+class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin,):
     alphabet_filter = 'nom'
     DEFAULT_ALPHABET = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     search_fields = ('id', 'nom', 'prenom', 'nom_affichage', )
@@ -390,10 +409,6 @@ class EmployeAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin):
         }),
         )
 
-    def get_changelist(self, request, **kwargs):
-        return ChangeList
-
-
     def _apercu(self, obj):
         return u"""<a title="Aperçu de l'employé" onclick="return showAddAnotherPopup(this);" href='%s'><img src="%simg/loupe.png" /></a>""" % \
                 (reverse('employe_apercu', args=(obj.id,)), settings.STATIC_URL)
@@ -477,7 +492,7 @@ class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
         )
 
 
-class PosteAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, AjaxSelect):
+class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, AjaxSelect,):
     form =  make_ajax_form(rh.Poste, {
         'implantation' : 'implantations',
         'type_poste' : 'typepostes',
@@ -552,10 +567,6 @@ class PosteAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, Aj
                PosteCommentaireInline, )
 
 
-    def get_changelist(self, request, **kwargs):
-        return ChangeList
-
-
     def lookup_allowed(self, key, value):
         if key in (
             'date_debut__gte',
index 1a129cd..b1b3e77 100644 (file)
@@ -21,6 +21,9 @@ class DateDebutFieldFilterSpec(FilterSpec):
         today = datetime.date.today()
         self.links = [
             (u"Toutes" ,{}),
+            (u"Aujourd'hui" ,{
+                '%s__gte' % self.field_path: str(today),
+            }),
         ]
         annees = [i for i in range(start, end, -1)]
         for i in annees:
@@ -54,6 +57,9 @@ class DateFinFieldFilterSpec(FilterSpec):
         today = datetime.date.today()
         self.links = [
             (u"Toutes" ,{}),
+            (u"Aujourd'hui" ,{
+                '%s__lte' % self.field_path: str(today),
+            }),
         ]
         annees = [i for i in range(start, end, -1)]
         for i in annees: