les responsables gèrent seulement leur groupes
authorPA Parent <paparent@paparent.me>
Tue, 21 Jun 2011 19:36:59 +0000 (15:36 -0400)
committerPA Parent <paparent@paparent.me>
Tue, 21 Jun 2011 19:36:59 +0000 (15:36 -0400)
auf_savoirs_en_partage/chercheurs/admin.py
auf_savoirs_en_partage/chercheurs/models.py

index f0be2f0..50936fb 100644 (file)
@@ -196,12 +196,32 @@ class BaseGroupeAdmin(admin.ModelAdmin):
 
         super(BaseGroupeAdmin, self).save_model(request, obj, form, change)
 
+    def queryset(self, request):
+        qs = super(BaseGroupeAdmin, self).queryset(request)
+
+        return qs.filter(responsables=request.user)
+
+    def has_change_permission(self, request, obj=None, groupe_chercheur=False):
+
+        if not obj:
+            if request.user.responsable_groupe.filter(groupe_chercheur=groupe_chercheur).count():
+                return True
+        else:
+            if request.user in obj.responsables.all():
+                return True
+
+        return super(BaseGroupeAdmin, self).has_change_permission(request, obj)
 
 class GroupeChercheurAdmin(BaseGroupeAdmin):
-    pass
+
+    def has_change_permission(self, request, obj=None):
+        return super(GroupeChercheurAdmin, self).has_change_permission(request, obj, groupe_chercheur=True)
+
 
 class DomaineRechercheAdmin(BaseGroupeAdmin):
-    pass
+
+    def has_change_permission(self, request, obj=None):
+        return super(DomaineRechercheAdmin, self).has_change_permission(request, obj, groupe_chercheur=False)
 
 admin.site.register(Chercheur, ChercheurAdmin)
 admin.site.register(Publication)
index c2360fb..4462d62 100644 (file)
@@ -385,7 +385,7 @@ class Groupe(models.Model):
     actif = models.BooleanField(editable = False, db_column='actif')
     groupe_chercheur = models.BooleanField(default=False, editable=False, verbose_name='Groupe de chercheur')
 
-    responsables = models.ManyToManyField(User, verbose_name='responsables', blank=True)
+    responsables = models.ManyToManyField(User, related_name='responsable_groupe', verbose_name='responsables', blank=True)
 
 
     objects = models.Manager()