ajouté des inlines dans l'admin (#1555)
authorNicolas Cadou <ncadou@cadou.ca>
Wed, 15 Jun 2011 00:41:37 +0000 (20:41 -0400)
committerNicolas Cadou <ncadou@cadou.ca>
Wed, 15 Jun 2011 01:06:05 +0000 (21:06 -0400)
project/budget/admin.py
project/budget/models.py
project/rh/admin.py
project/rh/lib.py

index b177751..bd44358 100644 (file)
@@ -7,7 +7,6 @@ from rh.lib import (ClassementAdmin, DossierAdmin, EvenementAdmin,
                     EvenementRemunerationAdmin, PosteAdmin, RemunerationAdmin,
                     ValeurPointAdmin, TauxChangeAdmin)
 
-
 admin.site.register(Classement, ClassementAdmin)
 admin.site.register(Dossier, DossierAdmin)
 admin.site.register(Evenement, EvenementAdmin)
index 6c40b51..da4a4e6 100755 (executable)
@@ -114,6 +114,7 @@ class Classement(rh.Classement_):
     __doc__ = rh.Classement_.__doc__
     simulation = models.ForeignKey(Simulation)
 
+
 class Dossier(rh.Dossier_):
     __doc__ = rh.Dossier_.__doc__
     simulation = models.ForeignKey(Simulation)
index 3698af5..5445949 100644 (file)
@@ -4,34 +4,51 @@ from django.contrib import admin
 from rh.models import *
 from rh.lib import *
 
+AyantDroitInline.model = AyantDroit
+AyantDroitCommentaireInline.model = AyantDroitCommentaire
+ContratInline.model = Contrat
+DossierROInline.model = Dossier
+DossierCommentaireInline.model = DossierCommentaire
+DossierPieceInline.model = DossierPiece
+EmployeInline.model = Employe
+EmployeCommentaireInline.model = EmployeCommentaire
+EmployePieceInline.model = EmployePiece
+EvenementInline.model = Evenement
+EvenementRemunerationInline.model = EvenementRemuneration
+PosteInline.model = Poste
+PosteCommentaireInline.model = PosteCommentaire
+PosteFinancementInline.model = PosteFinancement
+PostePieceInline.model = PostePiece
+RemunerationInline.model = Remuneration
+TypePosteInline.model = TypePoste
 
-#admin.site.register(Commentaire, CommentaireAdmin)
-admin.site.register(Poste, PosteAdmin)
-#admin.site.register(PosteFinancement, PosteFinancementAdmin)
-#admin.site.register(PostePiece, PostePieceAdmin)
-#admin.site.register(PosteCommentaire, PosteCommentaireAdmin)
-admin.site.register(Employe, EmployeAdmin)
-#admin.site.register(EmployePiece, EmployePieceAdmin)
-#admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin)
 admin.site.register(AyantDroit, AyantDroitAdmin)
 #admin.site.register(AyantDroitCommentaire, AyantDroitCommentaireAdmin)
+admin.site.register(Classement, ClassementAdmin)
+#admin.site.register(Commentaire, CommentaireAdmin)
+admin.site.register(Contrat, ContratAdmin)
+admin.site.register(Devise, DeviseAdmin)
 admin.site.register(Dossier, DossierAdmin)
-#admin.site.register(DossierPiece, DossierPieceAdmin)
 #admin.site.register(DossierCommentaire, DossierCommentaireAdmin)
-admin.site.register(Remuneration, RemunerationAdmin)
-admin.site.register(Contrat, ContratAdmin)
+#admin.site.register(DossierPiece, DossierPieceAdmin)
+admin.site.register(Employe, EmployeAdmin)
+#admin.site.register(EmployeCommentaire, EmployeCommentaireAdmin)
+#admin.site.register(EmployePiece, EmployePieceAdmin)
 admin.site.register(Evenement, EvenementAdmin)
 admin.site.register(EvenementRemuneration, EvenementRemunerationAdmin)
 admin.site.register(FamilleEmploi, FamilleEmploiAdmin)
+admin.site.register(OrganismeBstg, OrganismeBstgAdmin)
+admin.site.register(Poste, PosteAdmin)
+#admin.site.register(PosteCommentaire, PosteCommentaireAdmin)
+#admin.site.register(PosteFinancement, PosteFinancementAdmin)
+#admin.site.register(PostePiece, PostePieceAdmin)
+admin.site.register(Remuneration, RemunerationAdmin)
+admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin)
+admin.site.register(Service, ServiceAdmin)
+admin.site.register(Statut, StatutAdmin)  # FIXME: timeout in admin
+admin.site.register(TauxChange, TauxChangeAdmin)
+admin.site.register(TypeContrat, TypeContratAdmin)  # FIXME: timeout in admin
 admin.site.register(TypePoste, TypePosteAdmin)
 admin.site.register(TypeRemuneration, TypeRemunerationAdmin)
 admin.site.register(TypeRevalorisation, TypeRevalorisationAdmin)
-admin.site.register(Service, ServiceAdmin)
-admin.site.register(OrganismeBstg, OrganismeBstgAdmin)
-admin.site.register(Statut, StatutAdmin)
-admin.site.register(Classement, ClassementAdmin)
-admin.site.register(TauxChange, TauxChangeAdmin)
 admin.site.register(ValeurPoint, ValeurPointAdmin)
-admin.site.register(Devise, DeviseAdmin)
-admin.site.register(TypeContrat, TypeContratAdmin)
-admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin)
index 72a06ed..492455b 100644 (file)
 # -*- encoding: utf-8 -*-
 
+from django.db import models
 from django.contrib import admin
 
+from project.rh import models as rh
 
-class CommentaireAdmin(admin.ModelAdmin):
-    pass
 
+class ReadonlyInlineMixin(object):
+    def get_readonly_fields(self, request, obj=None):
+        return [f.name for f in self.model._meta.fields]
 
-class PosteAdmin(admin.ModelAdmin):
-    fieldsets = (
-        (None, {
-            'fields': ('nom', 'nom_feminin', 'implantation', 'type_poste',
-                       'service', 'responsable')
-        }),
-        ('Contrat', {
-            'fields': ('regime_travail', 'regime_travail_nb_heure_semaine')
-        }),
-        ('Recrutement', {
-            'fields': ('local', 'expatrie', 'mise_a_disposition', 'appel')
-        }),
-        ('Rémunération', {
-            'fields': ('classement_min', 'classement_max', 'valeur_point_min',
-                       'valeur_point_max', 'devise_min', 'devise_max',
-                       'salaire_min', 'salaire_max', 'indemn_min',
-                       'indemn_max', 'autre_min', 'autre_max')
-        }),
-        ('Comparatifs de rémunération', {
-            'fields': ('devise_comparaison', 'comp_locale_min',
-                       'comp_locale_max', 'comp_universite_min',
-                       'comp_universite_max', 'comp_fonctionpub_min',
-                       'comp_fonctionpub_max', 'comp_ong_min', 'comp_ong_max',
-                       'comp_autre_min', 'comp_autre_max')
-        }),
-        ('Justification', {
-            'fields': ('justification',)
-        }),
-        ('Autres Metadata', {
-            'fields': ('date_validation', 'date_debut', 'date_fin')
-        }),
-    )
 
+# Inlines
 
-class PosteFinancementAdmin(admin.ModelAdmin):
-    pass
+class AyantDroitInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
 
 
-class PostePieceAdmin(admin.ModelAdmin):
-    pass
+class AyantDroitCommentaireInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
 
 
-class PosteCommentaireAdmin(admin.ModelAdmin):
+class ContratInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class DossierROInline(ReadonlyInlineMixin, admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class DossierCommentaireInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class DossierPieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EmployeInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EmployeCommentaireInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EmployePieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EvenementInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class EvenementRemunerationInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class PosteInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class PosteCommentaireInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class PosteFinancementInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class PostePieceInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class RemunerationInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+class RemunerationROInline(ReadonlyInlineMixin, RemunerationInline):
     pass
 
 
-class EmployeAdmin(admin.ModelAdmin):
+class TypePosteInline(admin.TabularInline):
+    model = models.Model  # à remplacer dans admin.py
+
+
+# Admins
+
+class AyantDroitAdmin(admin.ModelAdmin):
+    inlines = (AyantDroitCommentaireInline,)
+
+
+class AyantDroitCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class EmployePieceAdmin(admin.ModelAdmin):
+class ClassementAdmin(admin.ModelAdmin):
     pass
 
 
-class EmployeCommentaireAdmin(admin.ModelAdmin):
+class CommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class AyantDroitAdmin(admin.ModelAdmin):
+class ContratAdmin(admin.ModelAdmin):
     pass
 
 
-class AyantDroitCommentaireAdmin(admin.ModelAdmin):
+class DeviseAdmin(admin.ModelAdmin):
     pass
 
 
 class DossierAdmin(admin.ModelAdmin):
     list_display = ('_employe', '_poste')
+    inlines = (DossierPieceInline, DossierCommentaireInline, ContratInline,
+               RemunerationInline, EvenementInline)
 
     def _poste(self, dossier):
         return unicode(dossier.poste.nom)
@@ -93,16 +133,23 @@ class DossierCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class RemunerationAdmin(admin.ModelAdmin):
+class EmployeAdmin(admin.ModelAdmin):
+    inlines = (AyantDroitInline,
+               DossierROInline,
+               EmployePieceInline,
+               EmployeCommentaireInline)
+
+
+class EmployeCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class ContratAdmin(admin.ModelAdmin):
+class EmployePieceAdmin(admin.ModelAdmin):
     pass
 
 
 class EvenementAdmin(admin.ModelAdmin):
-    pass
+    inlines = (EvenementRemunerationInline,)
 
 
 class EvenementRemunerationAdmin(admin.ModelAdmin):
@@ -110,52 +157,99 @@ class EvenementRemunerationAdmin(admin.ModelAdmin):
 
 
 class FamilleEmploiAdmin(admin.ModelAdmin):
-    pass
+    inlines = (TypePosteInline,)
 
 
-class TypePosteAdmin(admin.ModelAdmin):
-    pass
+class OrganismeBstgAdmin(admin.ModelAdmin):
+    inlines = (DossierROInline,)
 
 
-class TypeRemunerationAdmin(admin.ModelAdmin):
-    pass
+class PosteAdmin(admin.ModelAdmin):
+    fieldsets = (
+        (None, {
+            'fields': ('nom', 'nom_feminin', 'implantation', 'type_poste',
+                       'service', 'responsable')
+        }),
+        ('Contrat', {
+            'fields': ('regime_travail', 'regime_travail_nb_heure_semaine')
+        }),
+        ('Recrutement', {
+            'fields': ('local', 'expatrie', 'mise_a_disposition', 'appel')
+        }),
+        ('Rémunération', {
+            'fields': ('classement_min', 'classement_max', 'valeur_point_min',
+                       'valeur_point_max', 'devise_min', 'devise_max',
+                       'salaire_min', 'salaire_max', 'indemn_min',
+                       'indemn_max', 'autre_min', 'autre_max')
+        }),
+        ('Comparatifs de rémunération', {
+            'fields': ('devise_comparaison', 'comp_locale_min',
+                       'comp_locale_max', 'comp_universite_min',
+                       'comp_universite_max', 'comp_fonctionpub_min',
+                       'comp_fonctionpub_max', 'comp_ong_min', 'comp_ong_max',
+                       'comp_autre_min', 'comp_autre_max')
+        }),
+        ('Justification', {
+            'fields': ('justification',)
+        }),
+        ('Autres Metadata', {
+            'fields': ('date_validation', 'date_debut', 'date_fin')
+        }),
+    )
 
+    inlines = (PosteFinancementInline,
+               PostePieceInline,
+               PosteCommentaireInline,
+               DossierROInline)
 
-class TypeRevalorisationAdmin(admin.ModelAdmin):
+
+class PosteCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class ServiceAdmin(admin.ModelAdmin):
+class PosteFinancementAdmin(admin.ModelAdmin):
     pass
 
 
-class OrganismeBstgAdmin(admin.ModelAdmin):
+class PostePieceAdmin(admin.ModelAdmin):
     pass
 
 
-class StatutAdmin(admin.ModelAdmin):
+class RemunerationAdmin(admin.ModelAdmin):
     pass
 
 
-class ClassementAdmin(admin.ModelAdmin):
+class ResponsableImplantationAdmin(admin.ModelAdmin):
     pass
 
 
-class TauxChangeAdmin(admin.ModelAdmin):
-    pass
+class ServiceAdmin(admin.ModelAdmin):
+    inlines = (PosteInline,)
 
 
-class ValeurPointAdmin(admin.ModelAdmin):
-    pass
+class StatutAdmin(admin.ModelAdmin):
+    inlines = (EmployeInline,)
 
 
-class DeviseAdmin(admin.ModelAdmin):
+class TauxChangeAdmin(admin.ModelAdmin):
     pass
 
 
 class TypeContratAdmin(admin.ModelAdmin):
-    pass
+    inlines = (ContratInline,)
 
 
-class ResponsableImplantationAdmin(admin.ModelAdmin):
+class TypePosteAdmin(admin.ModelAdmin):
+    inlines = (PosteInline,)
+
+
+class TypeRemunerationAdmin(admin.ModelAdmin):
+    inlines = (RemunerationROInline,)
+
+
+class TypeRevalorisationAdmin(admin.ModelAdmin):
+    inlines = (RemunerationROInline,)
+
+
+class ValeurPointAdmin(admin.ModelAdmin):
     pass