icones apercus
[auf_rh_dae.git] / project / rh / admin.py
index a487214..76adef5 100644 (file)
@@ -22,6 +22,12 @@ from groups import grp_correspondants_rh
 from decorators import in_drh_or_admin
 
 
+class BaseAdmin(admin.ModelAdmin):
+
+    class Media:
+        css = {'screen': ('css/admin_custom.css',)}
+
+
 class ArchiveMixin(object):
     """
     Archive Mixin pour gérer le queryset et le display
@@ -256,7 +262,7 @@ class PosteComparaisonInline(AUFMetadataInlineAdminMixin, admin.TabularInline):
     model = rh.PosteComparaison
 
 
-class ClassementAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class ClassementAdmin(AUFMetadataAdminMixin, BaseAdmin):
     list_display = ('_classement', '_date_modification', 'user_modification', )
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {
@@ -274,11 +280,7 @@ class ClassementAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class CommentaireAdmin(admin.ModelAdmin):
-    pass
-
-
-class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin, ArchiveMixin):
+class DeviseAdmin(AUFMetadataAdminMixin, BaseAdmin, ArchiveMixin):
     list_display = (
             'code',
             'nom',
@@ -300,8 +302,8 @@ class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin, ArchiveMixin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
-        ProtectRegionMixin, admin.ModelAdmin, AjaxSelect,):
+class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin,
+                   ProtectRegionMixin, BaseAdmin, AjaxSelect):
     alphabet_filter = 'employe__nom'
     search_fields = (
         'id',
@@ -395,7 +397,7 @@ class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         apercu_link = u"""<a title="Aperçu du dossier"
                              onclick="return showAddAnotherPopup(this);"
                              href='%s'>
-                             <img src="%simg/loupe.png" />
+                             <img src="%simg/dossier-apercu.png" />
                              </a>""" % \
                 (reverse('dossier_apercu', args=(d.id,)),
                  settings.STATIC_URL,
@@ -441,7 +443,7 @@ class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
     def _poste(self, dossier):
         link = u"""<a title="Aperçu du poste"
                       onclick="return showAddAnotherPopup(this);"
-                      href='%s'><img src="%simg/loupe.png" />
+                      href='%s'><img src="%simg/poste-apercu.png" />
                     </a>
                     <a href="%s" title="Modifier le poste">%s</a>""" % \
                 (reverse('poste_apercu', args=(dossier.poste.id,)),
@@ -463,7 +465,7 @@ class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         view = u"""<a href="%s"
                       title="Aperçu l'employé"
                       onclick="return showAddAnotherPopup(this);">
-                      <img src="%simg/loupe.png" />
+                      <img src="%simg/employe-apercu.png" />
                     </a>""" % (view_link, settings.STATIC_URL,)
         return u"""%s<a href='%s' style="%s;">%s</a>""" % \
         (view, edit_link, style, employe)
@@ -480,20 +482,16 @@ class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
             instance.save()
 
 
-class DossierPieceAdmin(admin.ModelAdmin):
-    pass
-
-
-class DossierCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-
-class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
-        ProtectRegionMixin, admin.ModelAdmin,):
+class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin,
+                   ProtectRegionMixin, BaseAdmin):
     prefixe_recherche_temporelle = "rh_dossiers__"
     alphabet_filter = 'nom'
     DEFAULT_ALPHABET = u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-    search_fields = ('id', 'nom', 'prenom', 'nom_affichage', )
+    search_fields = (
+        'id', 'nom', 'prenom', 'nom_affichage',
+        'rh_dossiers__poste__nom',
+        'rh_dossiers__poste__nom_feminin'
+    )
     ordering = ('nom', )
     form = EmployeAdminForm
     list_display = (
@@ -501,6 +499,7 @@ class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
             '_apercu',
             '_nom',
             '_dossiers_postes',
+            'date_entree',
             '_date_modification',
             'user_modification',
             )
@@ -541,7 +540,7 @@ class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         return u"""<a title="Aperçu de l'employé"
                       onclick="return showAddAnotherPopup(this);"
                       href='%s'>
-                      <img src="%simg/loupe.png" />
+                      <img src="%simg/employe-apercu.png" />
                     </a>""" % \
             (reverse('employe_apercu', args=(obj.id,)), settings.STATIC_URL)
     _apercu.allow_tags = True
@@ -573,7 +572,7 @@ class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
                              href="%s"
                              onclick="return showAddAnotherPopup(this);"
                              title="Aperçu du dossier">
-                             <img src="%simg/loupe.png" />
+                             <img src="%simg/dossier-apercu.png" />
                           </a>
                           <a href="%s">Dossier</a>
                           &nbsp;""" % \
@@ -585,7 +584,7 @@ class EmployeAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
                            href="%s"
                            onclick="return showAddAnotherPopup(this);"
                            title="Aperçu du poste">
-                           <img src="%simg/loupe.png" />
+                           <img src="%simg/poste-apercu.png" />
                         </a>
                         <a href="%s">Poste</a>
                         &nbsp;""" % \
@@ -667,15 +666,7 @@ class EmployeProxyAdmin(EmployeAdmin):
     _organigramme.short_description = "Organigramme"
 
 
-class EmployeCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-
-class EmployePieceAdmin(admin.ModelAdmin):
-    pass
-
-
-class CategorieEmploiAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class CategorieEmploiAdmin(AUFMetadataAdminMixin, BaseAdmin):
     list_display = ('nom', '_date_modification', 'user_modification', )
     inlines = (TypePosteInline,)
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
@@ -688,7 +679,7 @@ class CategorieEmploiAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class OrganismeBstgAdmin(AUFMetadataAdminMixin, BaseAdmin):
     search_fields = ('nom',)
     list_display = (
             'nom',
@@ -710,8 +701,8 @@ class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
-        ProtectRegionMixin, admin.ModelAdmin, AjaxSelect,):
+class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin,
+                 ProtectRegionMixin, BaseAdmin, AjaxSelect):
     form = make_ajax_form(rh.Poste, {
         'implantation': 'implantations',
         'type_poste': 'typepostes',
@@ -734,7 +725,7 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         '_apercu',
         '_nom',
         '_occupe_par',
-        'implantation',
+        '_implantation',
         '_service',
         '_responsable',
         'date_debut',
@@ -820,7 +811,7 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         view_link = u"""<a onclick="return showAddAnotherPopup(this);"
                            title="Aperçu du poste"
                            href='%s'>
-                        <img src="%simg/loupe.png" />
+                        <img src="%simg/poste-apercu.png" />
                         </a>""" % \
                 (reverse('poste_apercu', args=(poste.id,)),
                  settings.STATIC_URL,)
@@ -860,7 +851,7 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         try:
             responsable = u"""<a href="%s"
                                  onclick="return showAddAnotherPopup(this)">
-                                <img src="%simg/loupe.png"
+                                <img src="%simg/poste-apercu.png"
                                      title="Aperçu du poste" />
                               </a>
                               <a href="%s">%s</a>
@@ -873,19 +864,19 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
             responsable = ''
 
         try:
-            employe = obj.responsable.rh_dossiers.all()[0]
-            employe_id = obj.responsable.rh_dossiers.all()[0].id
+            dossier = obj.responsable.rh_dossiers.all().order_by('-date_debut')[0]
+            employe_id = dossier.employe.id
             employe_html = u"""<br />
                     <a href="%s"
                        onclick="return showAddAnotherPopup(this)">
-                       <img src="%simg/loupe.png"
+                       <img src="%simg/employe-apercu.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)
+                     dossier.employe)
         except:
             employe_html = ""
 
@@ -893,12 +884,17 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
     _responsable.short_description = 'Responsable'
     _responsable.allow_tags = True
 
+    def _implantation(self, poste):
+        return poste.implantation.nom
+    _implantation.short_description = 'Implantation'
+    _implantation.admin_order_field = 'implantation'
+
     def _nom(self, poste):
         return """<a href="%s">%s</a>""" % \
                 (reverse('admin:rh_poste_change', args=(poste.id,)),
                 poste.nom)
     _nom.allow_tags = True
-    _nom.short_description = u'Nom'
+    _nom.short_description = u'Poste'
     _nom.admin_order_field = 'nom'
 
     def _date_modification(self, obj):
@@ -916,9 +912,9 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
             l = []
             for e in employes:
                 link = u"""<a href='%s'
-                              title='Aperçu de l\'employer'
+                              title='Aperçu de l\'employé'
                               onclick='return showAddAnotherPopup(this)'>
-                              <img src='%simg/loupe.png' />
+                              <img src='%simg/employe-apercu.png' />
                             </a>
                             <a href='%s'>%s</a>""" % \
                      (reverse('employe_apercu', args=(e.id,)),
@@ -941,36 +937,30 @@ class PosteAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
         formset.save_m2m()
 
 
-class PosteCommentaireAdmin(admin.ModelAdmin):
-    pass
-
-
-class PosteFinancementAdmin(admin.ModelAdmin):
-    pass
-
-
-class PostePieceAdmin(admin.ModelAdmin):
-    fk_name = 'poste'
-
-
-class RemunerationAdmin(admin.ModelAdmin):
-    pass
-
-
 class ResponsableInline(admin.TabularInline):
     model = rh.ResponsableImplantation
     extra = 0
     fk_name = "implantation"
 
 
-class ResponsableImplantationAdmin(admin.ModelAdmin):
+class ResponsableImplantationAdmin(BaseAdmin):
     actions = None
     list_filter = ('region', 'statut', )
-    list_display = ('nom', 'statut', '_responsable', )
+    list_display = ('_region', '_nom', 'statut', '_responsable', )
     readonly_fields = ('nom', )
     fields = ('nom', )
     inlines = (ResponsableInline, )
-
+    
+    def _region(self, obj):
+        return obj.region.code
+    _region.short_description = u"Région"
+    _region.admin_order_field = 'region__code'
+    
+    def _nom(self, obj):
+        return obj.nom
+    _nom.short_description = u"Implantation"
+    _nom.admin_order_field = 'nom'
+    
     def _responsable(self, obj):
         try:
             employe = obj.responsable.employe
@@ -999,7 +989,7 @@ class ResponsableImplantationAdmin(admin.ModelAdmin):
         return False
 
 
-class ServiceAdmin(AUFMetadataAdminMixin, admin.ModelAdmin, ArchiveMixin):
+class ServiceAdmin(AUFMetadataAdminMixin, BaseAdmin, ArchiveMixin):
     list_display = (
             'nom',
             '_archive',
@@ -1046,7 +1036,7 @@ class ServiceProxyAdmin(ServiceAdmin):
     _organigramme.short_description = "Organigramme"
 
 
-class StatutAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class StatutAdmin(AUFMetadataAdminMixin, BaseAdmin):
     list_display = ('code', 'nom', '_date_modification', 'user_modification', )
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {
@@ -1061,7 +1051,7 @@ class StatutAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class TauxChangeAdmin(admin.ModelAdmin):
+class TauxChangeAdmin(BaseAdmin):
     list_display = (
             'taux',
             'devise',
@@ -1083,7 +1073,7 @@ class TauxChangeAdmin(admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class TypeContratAdmin(admin.ModelAdmin):
+class TypeContratAdmin(BaseAdmin):
     list_display = (
             'nom',
             'nom_long',
@@ -1103,7 +1093,7 @@ class TypeContratAdmin(admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class TypePosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class TypePosteAdmin(AUFMetadataAdminMixin, BaseAdmin):
     search_fields = ('nom', 'nom_feminin', )
     list_display = (
             'nom',
@@ -1131,7 +1121,7 @@ class TypePosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class TypeRemunerationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin,
+class TypeRemunerationAdmin(AUFMetadataAdminMixin, BaseAdmin,
                             ArchiveMixin):
     list_display = (
             'nom',
@@ -1153,7 +1143,7 @@ class TypeRemunerationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin,
     _date_modification.admin_order_field = 'date_modification'
 
 
-class TypeRevalorisationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class TypeRevalorisationAdmin(AUFMetadataAdminMixin, BaseAdmin):
     list_display = ('nom', '_date_modification', 'user_modification', )
     fieldsets = AUFMetadataAdminMixin.fieldsets + (
         (None, {'fields': ('nom', )}),
@@ -1166,7 +1156,7 @@ class TypeRevalorisationAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _date_modification.admin_order_field = 'date_modification'
 
 
-class ValeurPointAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class ValeurPointAdmin(AUFMetadataAdminMixin, BaseAdmin):
     list_display = (
             '_devise_code',
             '_devise_nom',
@@ -1196,7 +1186,7 @@ class ValeurPointAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
     _devise_nom.short_description = "Nom de la devise"
 
 
-class ImplantationProxyAdmin(admin.ModelAdmin):
+class ImplantationProxyAdmin(BaseAdmin):
     list_display = ('nom', '_organigramme')
     actions = None
 
@@ -1218,7 +1208,7 @@ class ImplantationProxyAdmin(admin.ModelAdmin):
     _organigramme.short_description = "Organigramme"
 
 
-class RegionProxyAdmin(admin.ModelAdmin):
+class RegionProxyAdmin(BaseAdmin):
     list_display = ('nom', '_organigramme')
     actions = None