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
add missing imports
[matthijs/upstream/django-ldapdb.git]
/
ldapdb
/
models
/
base.py
diff --git
a/ldapdb/models/base.py
b/ldapdb/models/base.py
index e98133b58cc7f596f61c365cadfb8b12a27df6a5..0fc77ea8eded502b5a7a980ee933907337f3da93 100644
(file)
--- a/
ldapdb/models/base.py
+++ b/
ldapdb/models/base.py
@@
-36,6
+36,7
@@
import ldap
import logging
import django.db.models
import logging
import django.db.models
+from django.db import connections, router
from django.db.models import signals
import ldapdb
from django.db.models import signals
import ldapdb
@@
-68,25
+69,28
@@
class Model(django.db.models.base.Model):
# meta-data
base_dn = None
# meta-data
base_dn = None
+ search_scope = ldap.SCOPE_SUBTREE
object_classes = ['top']
def __init__(self, *args, **kwargs):
super(Model, self).__init__(*args, **kwargs)
self.saved_pk = self.pk
object_classes = ['top']
def __init__(self, *args, **kwargs):
super(Model, self).__init__(*args, **kwargs)
self.saved_pk = self.pk
- def _collect_sub_objects(self,
collector
):
+ def _collect_sub_objects(self,
seen_objs, parent=None, nullable=False
):
"""
This private API seems to be called by the admin interface in django 1.2
"""
"""
This private API seems to be called by the admin interface in django 1.2
"""
- pass
+ pk_val = self._get_pk_val()
+ seen_objs.add(self.__class__, pk_val, self,
+ type(parent), parent, nullable)
def build_rdn(self):
"""
Build the Relative Distinguished Name for this entry.
"""
bits = []
def build_rdn(self):
"""
Build the Relative Distinguished Name for this entry.
"""
bits = []
- for field in self._meta.
local_
fields:
- if field.primary_key:
+ for field in self._meta.fields:
+ if field.
db_column and field.
primary_key:
bits.append("%s=%s" % (field.db_column, getattr(self, field.name)))
if not len(bits):
raise Exception("Could not build Distinguished Name")
bits.append("%s=%s" % (field.db_column, getattr(self, field.name)))
if not len(bits):
raise Exception("Could not build Distinguished Name")
@@
-99,30
+103,37
@@
class Model(django.db.models.base.Model):
return "%s,%s" % (self.build_rdn(), self.base_dn)
raise Exception("Could not build Distinguished Name")
return "%s,%s" % (self.build_rdn(), self.base_dn)
raise Exception("Could not build Distinguished Name")
- def delete(self):
+ def delete(self
, using=None
):
"""
Delete this entry.
"""
"""
Delete this entry.
"""
+ using = using or router.db_for_write(self.__class__, instance=self)
+ connection = connections[using]
logging.debug("Deleting LDAP entry %s" % self.dn)
logging.debug("Deleting LDAP entry %s" % self.dn)
-
ldapdb.
connection.delete_s(self.dn)
+ connection.delete_s(self.dn)
signals.post_delete.send(sender=self.__class__, instance=self)
signals.post_delete.send(sender=self.__class__, instance=self)
-
- def save(self):
+
+ def save(self, using=None):
+ """
+ Saves the current instance.
+ """
+ using = using or router.db_for_write(self.__class__, instance=self)
+ connection = connections[using]
if not self.dn:
# create a new entry
record_exists = False
entry = [('objectClass', self.object_classes)]
new_dn = self.build_dn()
if not self.dn:
# create a new entry
record_exists = False
entry = [('objectClass', self.object_classes)]
new_dn = self.build_dn()
- for field in self._meta.
local_
fields:
+ for field in self._meta.fields:
if not field.db_column:
continue
value = getattr(self, field.name)
if value:
if not field.db_column:
continue
value = getattr(self, field.name)
if value:
- entry.append((field.db_column, field.get_db_prep_save(value, connection=
ldapdb.
connection)))
+ entry.append((field.db_column, field.get_db_prep_save(value, connection=connection)))
logging.debug("Creating new LDAP entry %s" % new_dn)
logging.debug("Creating new LDAP entry %s" % new_dn)
-
ldapdb.
connection.add_s(new_dn, entry)
+ connection.add_s(new_dn, entry)
# update object
self.dn = new_dn
# update object
self.dn = new_dn
@@
-132,14
+143,14
@@
class Model(django.db.models.base.Model):
record_exists = True
modlist = []
orig = self.__class__.objects.get(pk=self.saved_pk)
record_exists = True
modlist = []
orig = self.__class__.objects.get(pk=self.saved_pk)
- for field in self._meta.
local_
fields:
+ for field in self._meta.fields:
if not field.db_column:
continue
old_value = getattr(orig, field.name, None)
new_value = getattr(self, field.name, None)
if old_value != new_value:
if new_value:
if not field.db_column:
continue
old_value = getattr(orig, field.name, None)
new_value = getattr(self, field.name, None)
if old_value != new_value:
if new_value:
- modlist.append((ldap.MOD_REPLACE, field.db_column, field.get_db_prep_save(new_value, connection=
ldapdb.
connection)))
+ modlist.append((ldap.MOD_REPLACE, field.db_column, field.get_db_prep_save(new_value, connection=connection)))
elif old_value:
modlist.append((ldap.MOD_DELETE, field.db_column, None))
elif old_value:
modlist.append((ldap.MOD_DELETE, field.db_column, None))
@@
-148,11
+159,11
@@
class Model(django.db.models.base.Model):
new_dn = self.build_dn()
if new_dn != self.dn:
logging.debug("Renaming LDAP entry %s to %s" % (self.dn, new_dn))
new_dn = self.build_dn()
if new_dn != self.dn:
logging.debug("Renaming LDAP entry %s to %s" % (self.dn, new_dn))
-
ldapdb.
connection.rename_s(self.dn, self.build_rdn())
+ connection.rename_s(self.dn, self.build_rdn())
self.dn = new_dn
logging.debug("Modifying existing LDAP entry %s" % self.dn)
self.dn = new_dn
logging.debug("Modifying existing LDAP entry %s" % self.dn)
-
ldapdb.
connection.modify_s(self.dn, modlist)
+ connection.modify_s(self.dn, modlist)
else:
logging.debug("No changes to be saved to LDAP entry %s" % self.dn)
else:
logging.debug("No changes to be saved to LDAP entry %s" % self.dn)