-def convert(field, value, func):
- if not value or field == 'jpegPhoto':
- return value
- elif isinstance(value, int):
- return str(value)
- elif isinstance(value, list):
- return [ func(x) for x in value ]
- else:
- return func(value)
-
-class LdapConnection():
- def __init__(self, server, bind_dn, bind_password):
- self.connection = ldap.initialize(server)
- self.connection.simple_bind_s(bind_dn, bind_password)
+def escape_ldap_filter(value):
+ value = str(value)
+ return value.replace('\\', '\\5c') \
+ .replace('*', '\\2a') \
+ .replace('(', '\\28') \
+ .replace(')', '\\29') \
+ .replace('\0', '\\00')
+
+class DatabaseCursor(object):
+ def __init__(self, ldap_connection):
+ self.connection = ldap_connection
+
+class DatabaseFeatures(BaseDatabaseFeatures):
+ pass
+
+class DatabaseOperations(BaseDatabaseOperations):
+ def quote_name(self, name):
+ return name
+
+class LdapConnection(object):
+ def __init__(self):
+ self.connection = None
+ self.charset = "utf-8"
+ self.features = DatabaseFeatures()
+ self.ops = DatabaseOperations()
+
+ def _cursor(self):
+ if self.connection is None:
+ self.connection = ldap.initialize(settings.LDAPDB_SERVER_URI)
+ self.connection.simple_bind_s(
+ settings.LDAPDB_BIND_DN,
+ settings.LDAPDB_BIND_PASSWORD)
+ return DatabaseCursor(self.connection)