# 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