Fix rdn for multiple user spaces
This commit is contained in:
parent
c7feccea56
commit
c35c59ebfc
@ -1,15 +1,9 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
import ldapdb.models
|
||||
from ldapdb.models import fields as ldap_fields
|
||||
from ldapdb.models.base import Model
|
||||
|
||||
|
||||
class LdapUser(ldapdb.models.Model):
|
||||
class LdapUser(Model):
|
||||
"""
|
||||
Class for representing an LDAP user entry.
|
||||
"""
|
||||
@ -29,6 +23,18 @@ class LdapUser(ldapdb.models.Model):
|
||||
mobile_phone = ldap_fields.CharField(db_column='mobile', blank=True)
|
||||
photo = ldap_fields.ImageField(db_column='jpegPhoto')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.rdn = kwargs.get('rdn', None)
|
||||
if self.rdn:
|
||||
del kwargs['rdn']
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def build_dn(self):
|
||||
"""
|
||||
Build the Distinguished Name for this entry.
|
||||
"""
|
||||
return "%s,%s,%s" % (self.build_rdn(), self.rdn, self.base_dn)
|
||||
|
||||
def __str__(self):
|
||||
return self.username
|
||||
|
||||
@ -36,7 +42,7 @@ class LdapUser(ldapdb.models.Model):
|
||||
return self.full_name
|
||||
|
||||
|
||||
class LdapGroup(ldapdb.models.Model):
|
||||
class LdapGroup(Model):
|
||||
"""
|
||||
Class for representing an LDAP group entry.
|
||||
"""
|
||||
@ -49,6 +55,18 @@ class LdapGroup(ldapdb.models.Model):
|
||||
name = ldap_fields.CharField(db_column='cn', max_length=200, primary_key=True)
|
||||
members = ldap_fields.ListField(db_column='member')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.rdn = kwargs.get('rdn', None)
|
||||
if self.rdn:
|
||||
del kwargs['rdn']
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def build_dn(self):
|
||||
"""
|
||||
Build the Distinguished Name for this entry.
|
||||
"""
|
||||
return "%s,%s,%s" % (self.build_rdn(), self.rdn, self.base_dn)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
@ -19,17 +19,17 @@ def userlist(request):
|
||||
user = LdapUser.objects.all()
|
||||
context = {'users': user, }
|
||||
# ldap_user = LdapUser.objects.get(username='fred')
|
||||
# ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_sowi,ou=fachschaften', username='a123456789',
|
||||
# ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_wiai,ou=fachschaften', username='b3',
|
||||
# password='lappen1', first_name='ferdinand1',
|
||||
# last_name='red1', )
|
||||
# new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_sowi,ou=fachschaften', name="funny_sowi1",
|
||||
# members = ['dc=stuve,dc=de'])
|
||||
# new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_wiai,ou=fachschaften', name="funny_wiai12",
|
||||
# members=['dc=stuve,dc=de'])
|
||||
# new_group.save()
|
||||
|
||||
return render(request, 'user_list.jinja', context)
|
||||
|
||||
|
||||
def changelist(request, dn):
|
||||
user = User.objects.get(id=uid)
|
||||
user = User.objects.get(dn=dn)
|
||||
context = {'user': user, }
|
||||
return render(request, 'user_detail.jinja', context)
|
||||
|
||||
Reference in New Issue
Block a user