Administration séparer pour adhésion
authorPA Parent <paparent@paparent.me>
Thu, 21 Jul 2011 19:12:19 +0000 (15:12 -0400)
committerPA Parent <paparent@paparent.me>
Thu, 21 Jul 2011 19:12:19 +0000 (15:12 -0400)
auf_savoirs_en_partage/chercheurs/admin.py

index 5a8c209..82d1d97 100644 (file)
@@ -174,6 +174,30 @@ class ChercheurAdminQuerySet(ChercheurQuerySet):
         return super(ChercheurAdminQuerySet, qs).filter(*args, **kwargs)
 
 
+class ChercheurGroupeAdmin(admin.ModelAdmin):
+    list_filter = ('groupe',)
+    list_display = ('groupe', 'chercheur', 'actif')
+    list_editable = ('actif',)
+
+    def queryset(self, request):
+        qs = super(ChercheurGroupeAdmin, self).queryset(request)
+
+        if not request.user.is_superuser and not request.user.has_perm('chercheurs.change_chercheurgroupe'):
+            qs = qs.filter(groupe__responsables=request.user)
+
+        return qs
+
+    def has_change_permission(self, request, obj=None):
+
+        if not obj:
+            if request.user.responsable_groupe.count():
+                return True
+        else:
+            if request.user in obj.groupe.responsables.all():
+                return True
+
+        return super(BaseGroupeAdmin, self).has_change_permission(request, obj)
+
 class MemberInline(admin.TabularInline):
     model = ChercheurGroupe
 
@@ -234,4 +258,5 @@ admin.site.register(Chercheur, ChercheurAdmin)
 admin.site.register(Publication)
 admin.site.register(GroupeChercheur, GroupeChercheurAdmin)
 admin.site.register(DomaineRecherche, DomaineRechercheAdmin)
+admin.site.register(ChercheurGroupe, ChercheurGroupeAdmin)