1
0
Parcourir la source

Un peu. J'ai créé un fichier TODO.md

SimonBoulier il y a 7 ans
Parent
commit
aedfb2863e
4 fichiers modifiés avec 52 ajouts et 15 suppressions
  1. 13 0
      README.md
  2. 11 0
      TODO.md
  3. 19 15
      coin/members/admin.py
  4. 9 0
      coin/offers/admin.py

+ 13 - 0
README.md

@@ -325,6 +325,19 @@ If you enable an extra-app after initial installation, make sure to sync databas
 *nb: extra apps are loaded after the builtin apps.*
 
 
+Permissions
+===========
+
+Exemple pour un groupe gérant les membres souscrivant à l'abonnememnt 'wifi-bottière' :
+1 - Créer une Row Level Permisison 'wifibot-perm' avec Content Type : abonnement, Offre : 'wifi-bottière'
+2 - Créer un groupe 'wifibot-group' avec les perms :
+	- membres | membre | Can add membre
+	- membres | membre | Can change membre
+	- offers | abonnement | Can add abonnement
+	- offers | abonnement | Can change abonnement
+	- offers | abonnement | wifibot-perm
+3 - Donner ce groupe aux utilisateurs concernés
+
 Settings
 ========
 

+ 11 - 0
TODO.md

@@ -0,0 +1,11 @@
+[x] pouvoir ajouter un abonnement en créant un membre
+[x] ne pas pouvoir ajouter un abonnement à un membre existant
+[x] ne pas pouvoir chger un user d'un abo
+[ ] readme
+[ ] notifs au bureau
+[ ] check daimrod place date inscription et fin
+[ ] faire tester la secu
+[ ] migrations propres
+
+Pour le futur :
+[ ] virer (ou faire fonctionner) le bouton 'Ajouter un abonnement' de la page de modification d'un membre

+ 19 - 15
coin/members/admin.py

@@ -35,20 +35,23 @@ class MembershipFeeInline(admin.TabularInline):
 class OfferSubscriptionInline(admin.TabularInline):
     model = OfferSubscription
     extra = 0
-    readonly_fields = ('get_subscription_reference', 'subscription_date', 'resign_date',
-                       'commitment', 'offer', 'show_change_link')
-
-    # FIXME: Workaround en attendant la migration vers Django >=1.8
-    # À remplacer par InlineModelAdmin.show_change_link = True
-    def show_change_link(self, obj=None):
-        url = reverse('admin:%s_%s_change' % (obj._meta.app_label,
-                                              obj._meta.model_name),
-                      args=[obj.id])
-        return format_html(u'<a href="{}">Éditer</a>', url)
-    show_change_link.short_description = 'Éditer ?'
-
-    def has_add_permission(self, request, obj=None):
-        return False
+
+    common_fields = ('subscription_date', 'resign_date', 'commitment', 'offer')
+    all_fields = ('get_subscription_reference',) + common_fields
+
+    def get_fields(self, request, obj=None):
+        if obj:
+            return self.all_fields
+        else:
+            return self.common_fields
+
+    def get_readonly_fields(self, request, obj=None):
+        if obj:
+            return self.all_fields
+        else:
+            return ()
+
+    show_change_link = True
 
     def has_delete_permission(self, request, obj=None):
         return False
@@ -82,7 +85,8 @@ class MemberAdmin(UserAdmin):
                 ('username',))})
         perm_fieldset = ('Permissions', {'fields': (
             ('is_active', 'is_staff', 'is_superuser', 'groups'))})
-        
+
+        # if obj is null then it is a creation, otherwise it is a modification
         if obj:
             return (
                 ('Adhérent', {'fields': (

+ 9 - 0
coin/offers/admin.py

@@ -49,6 +49,15 @@ class OfferSubscriptionAdmin(admin.ModelAdmin):
              )
     form = autocomplete_light.modelform_factory(OfferSubscription, fields='__all__')
 
+    def get_readonly_fields(self, request, obj=None):
+        if request.user.is_superuser:
+            return ()
+        else:
+            return ('member', 'offer')
+
+    def has_add_permission(self, request, obj=None):
+        return request.user.is_superuser
+
     def get_queryset(self, request):
         qs = super(OfferSubscriptionAdmin, self).get_queryset(request)
         if request.user.is_superuser: