get rid of custom meta class
authorjlaine <jlaine@e071eeec-0327-468d-9b6a-08194a12b294>
Mon, 11 Apr 2011 14:05:15 +0000 (14:05 +0000)
committerjlaine <jlaine@e071eeec-0327-468d-9b6a-08194a12b294>
Mon, 11 Apr 2011 14:05:15 +0000 (14:05 +0000)
git-svn-id: https://svn.bolloretelecom.eu/opensource/django-ldapdb/trunk@1043 e071eeec-0327-468d-9b6a-08194a12b294

ldapdb/models/base.py
ldapdb/models/query.py [deleted file]

index 0fc77ea8eded502b5a7a980ee933907337f3da93..1d54480b086fa756d1e77d8b01470ee89abfb8f2 100644 (file)
@@ -40,31 +40,11 @@ from django.db import connections, router
 from django.db.models import signals
 
 import ldapdb
-from ldapdb.models.query import QuerySet
-
-class ModelBase(django.db.models.base.ModelBase):
-    """
-    Metaclass for all LDAP models.
-    """
-    def __new__(cls, name, bases, attrs):
-        super_new = super(ModelBase, cls).__new__
-        new_class = super_new(cls, name, bases, attrs)
-
-        # patch manager to use our own QuerySet class
-        if not new_class._meta.abstract:
-            def get_query_set():
-                return QuerySet(new_class)
-            new_class.objects.get_query_set = get_query_set
-            new_class._default_manager.get_query_set = get_query_set
-
-        return new_class
 
 class Model(django.db.models.base.Model):
     """
     Base class for all LDAP models.
     """
-    __metaclass__ = ModelBase
-
     dn = django.db.models.fields.CharField(max_length=200)
 
     # meta-data
diff --git a/ldapdb/models/query.py b/ldapdb/models/query.py
deleted file mode 100644 (file)
index 795dee5..0000000
+++ /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)
-