diff --git a/archivebox/core/admin.py b/archivebox/core/admin.py index 2d86313f..24f5e5c6 100644 --- a/archivebox/core/admin.py +++ b/archivebox/core/admin.py @@ -7,11 +7,11 @@ from archivebox.core.models import Snapshot, ArchiveResult, Tag from archivebox.core.admin_tags import TagAdmin from archivebox.core.admin_snapshots import SnapshotAdmin from archivebox.core.admin_archiveresults import ArchiveResultAdmin -from archivebox.core.admin_users import UserAdmin +from archivebox.core.admin_users import CustomUserAdmin def register_admin(admin_site): - admin_site.register(get_user_model(), UserAdmin) + admin_site.register(get_user_model(), CustomUserAdmin) admin_site.register(ArchiveResult, ArchiveResultAdmin) admin_site.register(Snapshot, SnapshotAdmin) admin_site.register(Tag, TagAdmin) diff --git a/archivebox/core/admin_users.py b/archivebox/core/admin_users.py index 934c0bd7..92c9c1cb 100644 --- a/archivebox/core/admin_users.py +++ b/archivebox/core/admin_users.py @@ -10,6 +10,12 @@ class CustomUserAdmin(UserAdmin): sort_fields = ['id', 'email', 'username', 'is_superuser', 'last_login', 'date_joined'] list_display = ['username', 'id', 'email', 'is_superuser', 'last_login', 'date_joined'] readonly_fields = ('snapshot_set', 'archiveresult_set', 'tag_set', 'apitoken_set', 'outboundwebhook_set') + + # Preserve Django's default user creation form and fieldsets + # This ensures passwords are properly hashed and permissions are set correctly + add_fieldsets = UserAdmin.add_fieldsets + + # Extend fieldsets for change form only (not user creation) fieldsets = [*UserAdmin.fieldsets, ('Data', {'fields': readonly_fields})] @admin.display(description='Snapshots')