projects
/
matthijs
/
upstream
/
django-ldapdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move LDAP compilation to the backend
[matthijs/upstream/django-ldapdb.git]
/
ldapdb
/
backends
/
ldap
/
compiler.py
diff --git
a/ldapdb/backends/ldap/compiler.py
b/ldapdb/backends/ldap/compiler.py
index df3247f76b720d8d7c4c701db835496027dc0c42..7d81981adec2bc95cdde5aedfe992b0946981b42 100644
(file)
--- a/
ldapdb/backends/ldap/compiler.py
+++ b/
ldapdb/backends/ldap/compiler.py
@@
-35,6
+35,7
@@
import ldap
from django.db.models.sql import compiler
import ldap
from django.db.models.sql import compiler
+from django.db.models.sql.where import AND, OR
def get_lookup_operator(lookup_type):
if lookup_type == 'gte':
def get_lookup_operator(lookup_type):
if lookup_type == 'gte':
@@
-44,11
+45,17
@@
def get_lookup_operator(lookup_type):
else:
return '='
else:
return '='
-def where_as_sql(self, qn=None, connection=None):
+def query_as_ldap(query):
+ filterstr = ''.join(['(objectClass=%s)' % cls for cls in query.model.object_classes])
+ sql, params = where_as_ldap(query.where)
+ filterstr += sql
+ return '(&%s)' % filterstr
+
+def where_as_ldap(self):
bits = []
for item in self.children:
if hasattr(item, 'as_sql'):
bits = []
for item in self.children:
if hasattr(item, 'as_sql'):
- sql, params = where_as_
sql(item, qn=qn, connection=connection
)
+ sql, params = where_as_
ldap(item
)
bits.append(sql)
continue
bits.append(sql)
continue
@@
-85,12
+92,6
@@
class SQLCompiler(object):
self.connection = connection
self.using = using
self.connection = connection
self.using = using
- def _ldap_filter(self):
- filterstr = ''.join(['(objectClass=%s)' % cls for cls in self.query.model.object_classes])
- sql, params = where_as_sql(self.query.where)
- filterstr += sql
- return '(&%s)' % filterstr
-
def results_iter(self):
if self.query.select_fields:
fields = self.query.select_fields
def results_iter(self):
if self.query.select_fields:
fields = self.query.select_fields
@@
-103,7
+104,7
@@
class SQLCompiler(object):
vals = self.connection.search_s(
self.query.model.base_dn,
self.query.model.search_scope,
vals = self.connection.search_s(
self.query.model.base_dn,
self.query.model.search_scope,
- filterstr=
self._ldap_filter(
),
+ filterstr=
query_as_ldap(self.query
),
attrlist=attrlist,
)
except ldap.NO_SUCH_OBJECT:
attrlist=attrlist,
)
except ldap.NO_SUCH_OBJECT:
@@
-167,7
+168,7
@@
class SQLDeleteCompiler(compiler.SQLDeleteCompiler, SQLCompiler):
vals = self.connection.search_s(
self.query.model.base_dn,
self.query.model.search_scope,
vals = self.connection.search_s(
self.query.model.base_dn,
self.query.model.search_scope,
- filterstr=
self._ldap_filter(
),
+ filterstr=
query_as_ldap(self.query
),
attrlist=[],
)
except ldap.NO_SUCH_OBJECT:
attrlist=[],
)
except ldap.NO_SUCH_OBJECT: