Fix LDAP admin actions: resolve dn__in unsupported lookup
- Added _resolve_ldap_users() helper to fetch LDAP objects by DN individually - ldapdb does not support dn__in lookup used by Django admin queryset - All 3 actions now use _resolve_ldap_users instead of iterating queryset directly
This commit is contained in:
parent
14c396d483
commit
175796ff78
@ -131,6 +131,22 @@ class LdapUserAdmin(admin.ModelAdmin):
|
||||
# Пагинация (LDAP может быть медленным)
|
||||
list_per_page = 100
|
||||
|
||||
def _resolve_ldap_users(self, request):
|
||||
"""Получает выбранные LDAP объекты по DN из POST данных.
|
||||
|
||||
ldapdb не поддерживает dn__in lookup, поэтому
|
||||
получаем каждый объект по DN отдельно.
|
||||
"""
|
||||
selected_dns = request.POST.getlist('_selected_action')
|
||||
users = []
|
||||
for dn in selected_dns:
|
||||
try:
|
||||
user = LdapUser.objects.get(dn=dn)
|
||||
users.append(user)
|
||||
except LdapUser.DoesNotExist:
|
||||
pass
|
||||
return users
|
||||
|
||||
# Кастомные поля для отображения
|
||||
|
||||
def cn_display(self, obj):
|
||||
@ -309,7 +325,8 @@ class LdapUserAdmin(admin.ModelAdmin):
|
||||
success_count = 0
|
||||
error_count = 0
|
||||
|
||||
for ldap_user in queryset:
|
||||
ldap_users = self._resolve_ldap_users(request)
|
||||
for ldap_user in ldap_users:
|
||||
if not ldap_user.employee_number:
|
||||
error_count += 1
|
||||
continue
|
||||
@ -370,7 +387,8 @@ class LdapUserAdmin(admin.ModelAdmin):
|
||||
|
||||
service = UserService()
|
||||
|
||||
for ldap_user in queryset:
|
||||
ldap_users = self._resolve_ldap_users(request)
|
||||
for ldap_user in ldap_users:
|
||||
if not ldap_user.employee_number:
|
||||
error_count += 1
|
||||
continue
|
||||
@ -415,7 +433,8 @@ class LdapUserAdmin(admin.ModelAdmin):
|
||||
"""Показывает различия между LDAP и Django для выбранных пользователей."""
|
||||
diffs = []
|
||||
|
||||
for ldap_user in queryset:
|
||||
ldap_users = self._resolve_ldap_users(request)
|
||||
for ldap_user in ldap_users:
|
||||
if not ldap_user.employee_number:
|
||||
continue
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user