--- /dev/null
+from ldapdb.models.fields import CharField, IntegerField, ListField
+import ldapdb.models
+
+class LdapUser(ldapdb.models.Model):
+ """
+ Class for representing an LDAP user entry.
+ """
+ # LDAP meta-data
+ base_dn = "ou=people,dc=nodomain"
+ object_classes = ['posixAccount', 'shadowAccount', 'inetOrgPerson']
+
+ # inetOrgPerson
+ first_name = CharField(db_column='givenName')
+ last_name = CharField(db_column='sn')
+ full_name = CharField(db_column='cn')
+ email = CharField(db_column='mail')
+ phone = CharField(db_column='telephoneNumber', blank=True)
+ mobile_phone = CharField(db_column='mobile', blank=True)
+ photo = ImageField(db_column='jpegPhoto')
+
+ # posixAccount
+ uid = IntegerField(db_column='uidNumber', unique=True)
+ group = IntegerField(db_column='gidNumber')
+ gecos = CharField(db_column='gecos')
+ home_directory = CharField(db_column='homeDirectory')
+ login_shell = CharField(db_column='loginShell', default=USERS_SHELL)
+ username = CharField(db_column='uid', primary_key=True)
+ password = CharField(db_column='userPassword')
+
+ def __str__(self):
+ return self.username
+
+ def __unicode__(self):
+ return self.full_name
+
+class LdapGroup(ldapdb.models.Model):
+ """
+ Class for representing an LDAP group entry.
+ """
+ # LDAP meta-data
+ base_dn = "ou=groups,dc=nodomain"
+ object_classes = ['posixGroup']
+
+ # posixGroup attributes
+ gid = IntegerField(db_column='gidNumber', unique=True)
+ name = CharField(db_column='cn', max_length=200, primary_key=True)
+ members = ListField(db_column='memberUid')
+
+ def __str__(self):
+ return self.name
+
+ def __unicode__(self):
+ return self.name
+