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
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
- 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
- (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 self.negated:
bits.append('(!%s)' % clause)
else:
yield row
class QuerySet(BaseQuerySet):
- def __init__(self, model=None, query=None):
+ def __init__(self, model=None, query=None, using=None):
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)