Ajout de la colonne responsable dans listing des postes
authorJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 16 Feb 2012 16:09:37 +0000 (10:09 -0600)
committerJean-Philippe Caissy <jpcaissy@piji.ca>
Thu, 16 Feb 2012 16:09:37 +0000 (10:09 -0600)
project/rh/admin.py

index a6a79a1..062c1e1 100644 (file)
@@ -44,34 +44,47 @@ 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 'date_debut' in k:
-                prefix_debut = "".join(k.split('date_debut')[0:-1]) + 'date_debut'
-                date_debut = v
+            if 'periode' == k:
+                periode = self.params[k]
                 del self.params[k]
-            elif 'date_fin' in k:
-                prefix_fin = "".join(k.split('date_fin')[0:-1]) + 'date_fin'
-                date_fin = v
+            if 'annee' == k:
+                annee = self.params[k]
+                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()
-
-        # 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:    
+        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'
             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}))
@@ -258,7 +271,7 @@ class CommentaireAdmin(admin.ModelAdmin):
 
 
 class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
-    list_display = ('code', 'nom', '_date_modification', 'user_modification', '_archive',)
+    list_display = ('code', 'nom', '_date_modification', 'user_modification',)
     list_filter = ('archive', )
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {
@@ -266,21 +279,6 @@ 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'
@@ -592,6 +590,7 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admi
         '_occupe_par',
         'implantation', 
         '_service', 
+        '_responsable',
         'date_debut', 
         'date_fin',
         '_date_modification',
@@ -660,7 +659,6 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admi
             'service__id__exact',
             'service__isnull',
             'vacant__exact',
-            'vacant__isnull',
             ):
             return True
 
@@ -683,6 +681,35 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, ProtectRegionMixin, admi
         return obj.service
     _service.short_description = 'Service'
 
+    def _responsable(self, obj):
+        try:
+            responsable = u"""<a href="%s" onclick="return showAddAnotherPopup(this)"><img src="%simg/loupe.png" title="Aperçu du poste"></a> <a href="%s">%s</a><br />""" % \
+                    (
+                            reverse('poste_apercu', args=(obj.responsable.id,)),
+                            settings.STATIC_URL,
+                            reverse('admin:rh_poste_change', args=(obj.responsable.id,)),
+                            obj.responsable.nom
+                    )
+        except:
+            responsable = ''
+
+        try:
+            employe = "%s %s" % (obj.responsable.rh_dossiers.all()[0].employe.nom.upper(), obj.responsable.rh_dossiers.all()[0].employe.prenom)
+            employe_id = obj.responsable.rh_dossiers.all()[0].id
+            employe = u"""<br /><a href="%s" onclick="return showAddAnotherPopup(this)"><img src="%simg/loupe.png" title="Aperçu de l'employé"></a> <a href="%s">%s</a>""" % \
+                    (
+                            reverse('employe_apercu', args=(employe_id,)),
+                            settings.STATIC_URL,
+                            reverse('admin:rh_employe_change', args=(employe_id,)),
+                            employe
+                    )
+        except:
+            employe = ""
+
+        return "%s %s" % (responsable, employe)
+    _responsable.short_description = 'Responsable'
+    _responsable.allow_tags = True
+
     def _nom(self, poste):
         return """<a href="%s">%s</a>""" % \
                 (reverse('admin:rh_poste_change', args=(poste.id,)),