|
@@ -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
|
|
|
|