76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
# Create your models here.
|
|
from django.db import models
|
|
from ldapdb.models import fields as ldap_fields
|
|
from ldapdb.models.base import Model
|
|
|
|
|
|
class LdapUser(Model):
|
|
"""
|
|
Class for representing an LDAP user entry.
|
|
"""
|
|
# LDAP meta-data
|
|
base_dn = "dc=stuve,dc=de"
|
|
object_classes = ['inetOrgPerson']
|
|
last_modified = ldap_fields.DateTimeField(db_column='modifyTimestamp', blank=True)
|
|
|
|
# inetOrgPerson
|
|
username = ldap_fields.CharField(db_column='uid', primary_key=True)
|
|
rdn = ''
|
|
password = ldap_fields.CharField(db_column='userPassword')
|
|
first_name = ldap_fields.CharField(db_column='cn', blank=True)
|
|
last_name = ldap_fields.CharField(db_column='sn', blank=True)
|
|
email = ldap_fields.CharField(db_column='mail')
|
|
phone = ldap_fields.CharField(db_column='telephoneNumber', blank=True)
|
|
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
|
|
|
|
def __unicode__(self):
|
|
return self.full_name
|
|
|
|
|
|
class LdapGroup(Model):
|
|
"""
|
|
Class for representing an LDAP group entry.
|
|
"""
|
|
# LDAP meta-data
|
|
base_dn = "dc=stuve,dc=de"
|
|
object_classes = ['groupOfNames']
|
|
|
|
# posixGroup attributes
|
|
rdn = ''
|
|
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
|
|
|
|
def __unicode__(self):
|
|
return self.name
|