from django.db.models.query_utils import Q
from django.db.models.sql import BaseQuery
from django.db.models.sql.where import WhereNode
-from granadilla.db import connection as ldap_connection
+
+import ldapdb
def compile(q):
filterstr = ""
attrlist = [ x.db_column for x in self.model._meta.local_fields if x.db_column ]
try:
- vals = ldap_connection.search_s(
+ vals = ldapdb.connection.search_s(
self.model._meta.dn,
ldap.SCOPE_SUBTREE,
filterstr=filterstr,
except:
raise self.model.DoesNotExist
+ # perform sorting
+ if self.extra_order_by:
+ ordering = self.extra_order_by
+ elif not self.default_ordering:
+ ordering = self.order_by
+ else:
+ ordering = self.order_by or self.model._meta.ordering
+ def getkey(x):
+ keys = []
+ for k in ordering:
+ attr = self.model._meta.get_field(k).db_column
+ keys.append(x[1][attr])
+ return keys
+ vals = sorted(vals, key=lambda x: getkey(x))
+
+ # process results
for dn, attrs in vals:
row = [dn]
for field in iter(self.model._meta.fields):