# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-from copy import deepcopy
-import ldap
-
-from django.db import connections
from django.db.models.query import QuerySet as BaseQuerySet
-from django.db.models.query_utils import Q
from django.db.models.sql import Query
from django.db.models.sql.where import WhereNode as BaseWhereNode, Constraint as BaseConstraint, AND, OR
-from ldapdb.backends.ldap import compiler
from ldapdb.models.fields import CharField
class Constraint(BaseConstraint):
query = Query(model, WhereNode)
super(QuerySet, self).__init__(model=model, query=query, using=using)
- def delete(self):
- "Bulk deletion."
- connection = connections[self.db]
- try:
- vals = connection.search_s(
- self.model.base_dn,
- self.model.search_scope,
- filterstr=compiler.query_as_ldap(self.query),
- attrlist=[],
- )
- except ldap.NO_SUCH_OBJECT:
- return
-
- # FIXME : there is probably a more efficient way to do this
- for dn, attrs in vals:
- connection.delete_s(dn)
-