Fix rdn for multiple user spaces

This commit is contained in:
Götz 2019-03-28 02:22:18 +01:00
parent c7feccea56
commit c35c59ebfc
2 changed files with 31 additions and 13 deletions

View File

@ -1,15 +1,9 @@
from django.db import models
# Create your models here. # 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 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. 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) mobile_phone = ldap_fields.CharField(db_column='mobile', blank=True)
photo = ldap_fields.ImageField(db_column='jpegPhoto') 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): def __str__(self):
return self.username return self.username
@ -36,7 +42,7 @@ class LdapUser(ldapdb.models.Model):
return self.full_name return self.full_name
class LdapGroup(ldapdb.models.Model): class LdapGroup(Model):
""" """
Class for representing an LDAP group entry. 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) name = ldap_fields.CharField(db_column='cn', max_length=200, primary_key=True)
members = ldap_fields.ListField(db_column='member') 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): def __str__(self):
return self.name return self.name

View File

@ -19,10 +19,10 @@ def userlist(request):
user = LdapUser.objects.all() user = LdapUser.objects.all()
context = {'users': user, } context = {'users': user, }
# ldap_user = LdapUser.objects.get(username='fred') # 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', # password='lappen1', first_name='ferdinand1',
# last_name='red1', ) # last_name='red1', )
# new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_sowi,ou=fachschaften', name="funny_sowi1", # new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_wiai,ou=fachschaften', name="funny_wiai12",
# members=['dc=stuve,dc=de']) # members=['dc=stuve,dc=de'])
# new_group.save() # new_group.save()
@ -30,6 +30,6 @@ def userlist(request):
def changelist(request, dn): def changelist(request, dn):
user = User.objects.get(id=uid) user = User.objects.get(dn=dn)
context = {'user': user, } context = {'user': user, }
return render(request, 'user_detail.jinja', context) return render(request, 'user_detail.jinja', context)