X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fdjango-ldapdb.git;a=blobdiff_plain;f=ldapdb%2Fmodels%2Fbase.py;h=661c2eda2593ae45bb0f91960d7e9f398d0cf7a6;hp=e98133b58cc7f596f61c365cadfb8b12a27df6a5;hb=8aafb73e2347febe83c7760a72d10976cc0a35f3;hpb=baba34a193fe7d304d86003b19f36ed638c7ec80 diff --git a/ldapdb/models/base.py b/ldapdb/models/base.py index e98133b..661c2ed 100644 --- a/ldapdb/models/base.py +++ b/ldapdb/models/base.py @@ -68,25 +68,28 @@ class Model(django.db.models.base.Model): # 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 - 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 """ - 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 = [] - 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") @@ -114,7 +117,7 @@ class Model(django.db.models.base.Model): 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) @@ -132,7 +135,7 @@ class Model(django.db.models.base.Model): 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)