diff --git a/account_manager/models.py b/account_manager/models.py index 6800c50..3b4e203 100644 --- a/account_manager/models.py +++ b/account_manager/models.py @@ -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 diff --git a/account_manager/views.py b/account_manager/views.py index 6f0417f..9df5a44 100644 --- a/account_manager/views.py +++ b/account_manager/views.py @@ -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)