X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fdjango-ldapdb.git;a=blobdiff_plain;f=ldapdb%2Fmodels%2Fquery.py;fp=ldapdb%2Fmodels%2Fquery.py;h=0000000000000000000000000000000000000000;hp=795dee5f5327abc3ee00893d54b1c9d187b00400;hb=9f6b1812de19fef1d735a7be64f0855fb079f233;hpb=82a5a4df7e7899646501206fb99925c79394d1c6 diff --git a/ldapdb/models/query.py b/ldapdb/models/query.py deleted file mode 100644 index 795dee5..0000000 --- a/ldapdb/models/query.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -# -# django-ldapdb -# Copyright (c) 2009-2010, Bolloré telecom -# All rights reserved. -# -# See AUTHORS file for a full list of contributors. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of Bolloré telecom nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -from django.db.models.query import QuerySet as BaseQuerySet -from django.db.models.sql import Query -from django.db.models.sql.where import WhereNode as BaseWhereNode, Constraint as BaseConstraint, AND, OR - -from ldapdb.models.fields import CharField - -class Constraint(BaseConstraint): - """ - An object that can be passed to WhereNode.add() and knows how to - pre-process itself prior to including in the WhereNode. - - NOTES: - - we redefine this class, because when self.field is None calls - Field().get_db_prep_lookup(), which short-circuits our LDAP-specific code. - """ - def process(self, lookup_type, value, connection): - """ - Returns a tuple of data suitable for inclusion in a WhereNode - instance. - """ - # Because of circular imports, we need to import this here. - from django.db.models.base import ObjectDoesNotExist - - try: - if self.field: - params = self.field.get_db_prep_lookup(lookup_type, value, - connection=connection, prepared=True) - db_type = self.field.db_type() - else: - params = CharField().get_db_prep_lookup(lookup_type, value, - connection=connection, prepared=True) - db_type = None - except ObjectDoesNotExist: - raise EmptyShortCircuit - - return (self.alias, self.col, db_type), params - -class WhereNode(BaseWhereNode): - def add(self, data, connector): - if not isinstance(data, (list, tuple)): - super(WhereNode, self).add(data, connector) - return - - # we replace the native Constraint by our own - obj, lookup_type, value = data - if hasattr(obj, "process"): - obj = Constraint(obj.alias, obj.col, obj.field) - super(WhereNode, self).add((obj, lookup_type, value), connector) - -class QuerySet(BaseQuerySet): - def __init__(self, model=None, query=None, using=None): - if not query: - query = Query(model, WhereNode) - super(QuerySet, self).__init__(model=model, query=query, using=using) -