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 QuerySet constructor for django 1.2
[matthijs/upstream/django-ldapdb.git]
/
ldapdb
/
models
/
query.py
diff --git
a/ldapdb/models/query.py
b/ldapdb/models/query.py
index 67d193607b7bc77c09ac74c4a802388a185df6f1..020d4eeb7d4a9bf3d03c6242ad296ade8789e0a2 100644
(file)
--- a/
ldapdb/models/query.py
+++ b/
ldapdb/models/query.py
@@
-30,6
+30,14
@@
import ldapdb
from ldapdb.models.fields import CharField
from ldapdb.models.fields import CharField
+def get_lookup_operator(lookup_type):
+ if lookup_type == 'gte':
+ return '>='
+ elif lookup_type == 'lte':
+ return '<='
+ else:
+ return '='
+
class Constraint(BaseConstraint):
"""
An object that can be passed to WhereNode.add() and knows how to
class Constraint(BaseConstraint):
"""
An object that can be passed to WhereNode.add() and knows how to
@@
-73,18
+81,26
@@
class WhereNode(BaseWhereNode):
if isinstance(item, WhereNode):
bits.append(item.as_sql())
continue
if isinstance(item, WhereNode):
bits.append(item.as_sql())
continue
- constraint, x, y, values = item
+
+ constraint, lookup_type, y, values = item
+ comp = get_lookup_operator(lookup_type)
if hasattr(constraint, "col"):
# django 1.2
if hasattr(constraint, "col"):
# django 1.2
- clause = "(%s=%s)" % (constraint.col, values)
+ column = constraint.col
+ if lookup_type == 'in':
+ equal_bits = [ "(%s%s%s)" % (column, comp, value) for value in values ]
+ clause = '(|%s)' % ''.join(equal_bits)
+ else:
+ clause = "(%s%s%s)" % (constraint.col, comp, values)
else:
# django 1.1
else:
# django 1.1
- (table, column, type) = constraint
- equal_bits = [ "(%s
=%s)" % (column
, value) for value in values ]
+ (table, column,
db_
type) = constraint
+ equal_bits = [ "(%s
%s%s)" % (column, comp
, value) for value in values ]
if len(equal_bits) == 1:
clause = equal_bits[0]
else:
clause = '(|%s)' % ''.join(equal_bits)
if len(equal_bits) == 1:
clause = equal_bits[0]
else:
clause = '(|%s)' % ''.join(equal_bits)
+
if self.negated:
bits.append('(!%s)' % clause)
else:
if self.negated:
bits.append('(!%s)' % clause)
else:
@@
-142,8
+158,15
@@
class Query(BaseQuery):
yield row
class QuerySet(BaseQuerySet):
yield row
class QuerySet(BaseQuerySet):
- def __init__(self, model=None, query=None):
+ def __init__(self, model=None, query=None
, using=None
):
if not query:
if not query:
- query = Query(model, None, WhereNode)
+ import inspect
+ spec = inspect.getargspec(Query.__init__)
+ if len(spec[0]) == 3:
+ # django 1.2
+ query = Query(model, WhereNode)
+ else:
+ # django 1.1
+ query = Query(model, None, WhereNode)
super(QuerySet, self).__init__(model, query)
super(QuerySet, self).__init__(model, query)