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
fix results ordering when a key is not present
[matthijs/upstream/django-ldapdb.git]
/
ldapdb
/
models
/
query.py
diff --git
a/ldapdb/models/query.py
b/ldapdb/models/query.py
index 6eaecb117fcdb6232a0d7af33b1f796e2a310d48..902d23713566abaed295050faa9b8aa22ac238f2 100644
(file)
--- a/
ldapdb/models/query.py
+++ b/
ldapdb/models/query.py
@@
-37,7
+37,12
@@
class WhereNode(BaseWhereNode):
if isinstance(item, WhereNode):
bits.append(item.as_sql())
continue
if isinstance(item, WhereNode):
bits.append(item.as_sql())
continue
- table, column, type, x, y, values = item
+ if len(item) == 4:
+ # django 1.1
+ (table, column, type), x, y, values = item
+ else:
+ # django 1.0
+ table, column, type, x, y, values = item
if self.negated:
bits.append('(!(%s=%s))' % (column,values[0]))
else:
if self.negated:
bits.append('(!(%s=%s))' % (column,values[0]))
else:
@@
-54,14
+59,14
@@
class WhereNode(BaseWhereNode):
class Query(BaseQuery):
def results_iter(self):
# FIXME: use all object classes
class Query(BaseQuery):
def results_iter(self):
# FIXME: use all object classes
- filterstr = '(objectClass=%s)' % self.model.
_meta.
object_classes[0]
+ filterstr = '(objectClass=%s)' % self.model.object_classes[0]
filterstr += self.where.as_sql()
filterstr = '(&%s)' % filterstr
attrlist = [ x.db_column for x in self.model._meta.local_fields if x.db_column ]
try:
vals = ldapdb.connection.search_s(
filterstr += self.where.as_sql()
filterstr = '(&%s)' % filterstr
attrlist = [ x.db_column for x in self.model._meta.local_fields if x.db_column ]
try:
vals = ldapdb.connection.search_s(
- self.model.
_meta.
dn,
+ self.model.
base_
dn,
ldap.SCOPE_SUBTREE,
filterstr=filterstr,
attrlist=attrlist,
ldap.SCOPE_SUBTREE,
filterstr=filterstr,
attrlist=attrlist,
@@
-80,15
+85,18
@@
class Query(BaseQuery):
keys = []
for k in ordering:
attr = self.model._meta.get_field(k).db_column
keys = []
for k in ordering:
attr = self.model._meta.get_field(k).db_column
- keys.append(x[1]
[attr]
)
+ keys.append(x[1]
.get(attr, None)
)
return keys
vals = sorted(vals, key=lambda x: getkey(x))
# process results
for dn, attrs in vals:
return keys
vals = sorted(vals, key=lambda x: getkey(x))
# process results
for dn, attrs in vals:
- row = [
dn
]
+ row = []
for field in iter(self.model._meta.fields):
for field in iter(self.model._meta.fields):
- row.append(attrs.get(field.db_column, None))
+ if field.attname == 'dn':
+ row.append(dn)
+ else:
+ row.append(attrs.get(field.db_column, None))
yield row
class QuerySet(BaseQuerySet):
yield row
class QuerySet(BaseQuerySet):