Browse Source

Enhance member add form detection

Jocelyn Delalande 7 years ago
parent
commit
64de5f8ea3
1 changed files with 11 additions and 8 deletions
  1. 11 8
      coin/members/admin.py

+ 11 - 8
coin/members/admin.py

@@ -53,7 +53,7 @@ class OfferSubscriptionInline(admin.TabularInline):
         # modification : lecture seule seulement
         else:
             return self.all_fields
-    
+
     show_change_link = True
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
@@ -64,14 +64,17 @@ class OfferSubscriptionInline(admin.TabularInline):
                 kwargs["queryset"] = Offer.objects.manageable_by(request.user)
             return super(OfferSubscriptionInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
-    # pas très beau
-    # quand on créer un membre on autorise à ajouter un abonnement
-    # sinon seulement en lecture seule (sinon ça permettrait de changer les abo qu'on n'a pas le droit de toucher)
     def has_add_permission(self, request):
-        if request.path.split('/')[-2] == 'add':
-            return True
-        else:
-            return request.user.is_superuser
+        # - Quand on *crée* un membre on autorise à ajouter un abonnement
+        # - Quand on *édite* un membre, on interdit l'ajout d'abonnements (sauf
+        #   par le bureau) car cela permettrait de gagner à loisir accès à
+        #   toute fiche adhérent en lui ajoutant un abonnement à une offre dont
+        #   on a la gestion).
+        return (
+            request.resolver_match.view_name == 'admin:members_member_add'
+            or
+            request.user.is_superuser
+        )
 
     # sinon on pourrait supprimer les abo qu'on ne peut pas gérer
     # pourrait peut-être être plus fin, obj réfère ici au member de la page