#1540
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 7 Jul 2011 14:57:02 +0000 (10:57 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 7 Jul 2011 14:57:02 +0000 (10:57 -0400)
project/rh/admin.py
project/rh/lib.py

index 5445949..4ec92bd 100644 (file)
@@ -1,5 +1,4 @@
-# -*- encoding: utf-8 -*-
-
+# -*- encoding: utf-8 
 from django.contrib import admin
 from rh.models import *
 from rh.lib import *
@@ -34,15 +33,15 @@ admin.site.register(Dossier, DossierAdmin)
 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(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(Remuneration, RemunerationAdmin)
 admin.site.register(ResponsableImplantation, ResponsableImplantationAdmin)
 admin.site.register(Service, ServiceAdmin)
 admin.site.register(Statut, StatutAdmin)  # FIXME: timeout in admin
index 84cfd0b..184c3e5 100644 (file)
@@ -42,17 +42,21 @@ class MetadataAdminMixin(object):
 
 class ReadonlyInlineMixin(object):
     def get_readonly_fields(self, request, obj=None):
-        return [f.name for f in self.model._meta.fields]
+        return [f.name for f in self.model._meta.fields if f.name not in METADATA_READONLY_FIELDS]
 
 
 # Inlines
 
 class AyantDroitInline(admin.TabularInline):
+    exclude = METADATA_READONLY_FIELDS + ('actif', )
     model = models.Model  # à remplacer dans admin.py
-
+    extra = 1
 
 class AyantDroitCommentaireInline(admin.TabularInline):
+    exclude = METADATA_READONLY_FIELDS + ('actif', )
+    readonly_fields = ('owner', )
     model = models.Model  # à remplacer dans admin.py
+    extra = 1
 
 
 class ContratInline(admin.TabularInline):
@@ -63,7 +67,7 @@ class ContratInline(admin.TabularInline):
 
 class DossierROInline(ReadonlyInlineMixin, admin.TabularInline):
     model = models.Model  # à remplacer dans admin.py
-
+    exclude = METADATA_READONLY_FIELDS
 
 class DossierCommentaireInline(admin.TabularInline, MetadataAdminMixin):
     exclude = METADATA_READONLY_FIELDS + ('actif', )
@@ -80,7 +84,10 @@ class EmployeInline(admin.TabularInline):
 
 
 class EmployeCommentaireInline(admin.TabularInline):
+    exclude = METADATA_READONLY_FIELDS + ('actif', )
+    readonly_fields = ('owner', )
     model = models.Model  # à remplacer dans admin.py
+    extra = 1
 
 
 class EmployePieceInline(admin.TabularInline):
@@ -132,8 +139,45 @@ class TypePosteInline(admin.TabularInline):
 # Admins
 
 class AyantDroitAdmin(admin.ModelAdmin):
+    """
+    L'ajout d'un nouvel ayantdroit se fait dans l'admin de l'employé.
+    """
+    search_fields = ('nom', 'prenom', 'employe__nom', 'employe__prenom', )
+    list_display = ('_ayantdroit', '_employe', )
     inlines = (AyantDroitCommentaireInline,)
+    readonly_fields = METADATA_READONLY_FIELDS + ('employe',)
+    fieldsets = (
+        ('Metadata', {
+            'classes': ('collapse',),
+            'fields': METADATA_FIELDSET_FIELDS,
+        }),
+        ("Lien avec l'employé", {
+            'fields': ('employe', 'lien_parente', )
+        }),
+
+        ('Identification', {
+            'fields': ('nom', 'prenom', 'nom_affichage', 'nationalite', 'date_naissance', 'genre', )
+        }),
+    )
+
+    def save_formset(self, request, form, formset, change):
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.AyantDroitCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
+
+    def _ayantdroit(self, obj):
+        return unicode(obj)
+    _ayantdroit.short_description = u'Ayant droit'
 
+    def _employe(self, obj):
+        return unicode(obj.employe)
+    _employe.short_description = u'Employé'
+
+    def has_add_permission(self, request):
+        return False
 
 class AyantDroitCommentaireAdmin(admin.ModelAdmin):
     pass
@@ -159,7 +203,9 @@ class DossierAdmin(MetadataAdminMixin, admin.ModelAdmin,):
     search_fields = ('employe__nom', 'employe__prenom', )
     list_display = ('_employe', '_poste', 'date_debut', 'date_fin', )
     inlines = (DossierPieceInline, ContratInline,
-               RemunerationInline, EvenementInline, DossierCommentaireInline,
+               RemunerationInline,
+               #EvenementInline,
+               DossierCommentaireInline,
               )
     readonly_fields = METADATA_READONLY_FIELDS
     fieldsets = (
@@ -205,12 +251,35 @@ class DossierCommentaireAdmin(admin.ModelAdmin):
     pass
 
 
-class EmployeAdmin(admin.ModelAdmin):
+class EmployeAdmin(MetadataAdminMixin, admin.ModelAdmin):
     inlines = (AyantDroitInline,
                DossierROInline,
                EmployePieceInline,
                EmployeCommentaireInline)
+    readonly_fields = METADATA_READONLY_FIELDS
+    fieldsets = (
+        ('Metadata', {
+            'classes': ('collapse',),
+            'fields': METADATA_FIELDSET_FIELDS,
+        }),
+        ('Identification', {
+            'fields': ('nom', 'prenom', 'nom_affichage', 'nationalite', 'date_naissance', 'genre', )
+        }),
+        ('Informations personnelles', {
+            'fields': ('situation_famille', 'date_entree', )
+        }),
+        ('Coordonnées', {
+            'fields': ('tel_domicile', 'tel_cellulaire', 'adresse', 'ville', 'province', 'code_postal', 'pays', )
+        }),
+        )
 
+    def save_formset(self, request, form, formset, change):
+        instances = formset.save(commit=False)
+        for instance in instances:
+            if instance.__class__ == rh.EmployeCommentaire:
+                instance.owner = request.user
+            instance.save()
+        formset.save_m2m()
 
 class EmployeCommentaireAdmin(admin.ModelAdmin):
     pass