Browse Source

amélioration visuelle gestion des adhérents

Élie Bouttier 8 years ago
parent
commit
5a58741942
1 changed files with 40 additions and 5 deletions
  1. 40 5
      adhesions/admin.py

+ 40 - 5
adhesions/admin.py

@@ -72,6 +72,7 @@ class UserIsAdherentFilter(admin.SimpleListFilter):
 class UserAdmin(AuthUserAdmin):
     list_display = AuthUserAdmin.list_display + ('get_adhesion_link',)
     list_filter = AuthUserAdmin.list_filter + (UserIsAdherentFilter,)
+    readonly_fields = ('get_adhesion_link',)
 
     def get_adhesion_link(self, user):
         adhesion = user.adhesion
@@ -81,7 +82,10 @@ class UserAdmin(AuthUserAdmin):
 
     def get_form(self, request, obj=None, **kwargs):
         if obj:
-            UserAdmin.inlines = (ProfileInline, AdhesionInline,)
+            if obj.profile.adhesion:
+                UserAdmin.inlines = (ProfileInline,)
+            else:
+                UserAdmin.inlines = (ProfileInline, AdhesionInline,)
             return super().get_form(request, obj, **kwargs)
         else:
             UserAdmin.inlines = (AdhesionInline,)
@@ -89,9 +93,12 @@ class UserAdmin(AuthUserAdmin):
 
     def get_fieldsets(self, request, obj=None):
         if obj:
-            return (
-                AuthUserAdmin.fieldsets[0],
+            fieldsets = (
                 AuthUserAdmin.fieldsets[1],
+                ('Nom d’utilisateur et mot de passe', {
+                    'classes': ('collapse',),
+                    'fields': AuthUserAdmin.fieldsets[0][1]['fields'],
+                }),
                 (AuthUserAdmin.fieldsets[2][0], {
                     'classes': ('collapse',),
                     'fields': ('is_active', 'is_staff', 'is_superuser',), # removing groups and user_permissions
@@ -101,12 +108,19 @@ class UserAdmin(AuthUserAdmin):
                     'fields': AuthUserAdmin.fieldsets[3][1]['fields'],
                 }),
             )
+            if obj.profile.adhesion:
+                fieldsets = (
+                    (None, {
+                        'fields': ('get_adhesion_link',),
+                    }),
+                ) + fieldsets
         else:
-            return (
+            fieldsets = (
                 (None, {
                     'fields': ('first_name', 'last_name', 'username',),
                 }),
             )
+        return fieldsets
 
     def get_actions(self, request):
         actions = super().get_actions(request)
@@ -180,7 +194,6 @@ class AdhesionAdmin(admin.ModelAdmin):
 
 class CorporationAdmin(admin.ModelAdmin):
     list_display = ('social_reason', 'get_adhesion_link')
-    inlines = (AdhesionInline,)
     search_fields = ('social_reason',)
     filter_horizontal = ('members',)
 
@@ -196,6 +209,28 @@ class CorporationAdmin(admin.ModelAdmin):
             del actions['delete_selected']
         return actions
 
+    def get_readonly_fields(self, request, obj=None):
+        readonly_fields = super().get_readonly_fields(request, obj)
+        if obj and obj.adhesion:
+            readonly_fields += ('get_adhesion_link',)
+        return readonly_fields
+
+    def get_fieldsets(self, request, obj=None):
+        fieldsets = super().get_fieldsets(request, obj)
+        # put adhesion_link on top
+        if obj and obj.adhesion:
+            CorporationAdmin.inlines = ()
+            fields = fieldsets[0][1]['fields']
+            fields.remove('get_adhesion_link')
+            fieldsets = (
+                (None, {
+                    'fields': ['get_adhesion_link'] + fields,
+                }),
+            )
+        else:
+            CorporationAdmin.inlines = (AdhesionInline,)
+        return fieldsets
+
     def has_delete_permission(self, request, obj=None):
         return obj and not obj.adhesion