bypass unicity checks, to un-break admin interface
[matthijs/upstream/django-ldapdb.git] / ldapdb / models / base.py
index e98133b58cc7f596f61c365cadfb8b12a27df6a5..bc6ca92e8c34e1a57a0ae046e3183669927d7ca9 100644 (file)
@@ -68,6 +68,7 @@ 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):
@@ -85,8 +86,8 @@ class Model(django.db.models.base.Model):
         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 +115,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 +133,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)
@@ -160,6 +161,11 @@ class Model(django.db.models.base.Model):
         self.saved_pk = self.pk
         signals.post_save.send(sender=self.__class__, instance=self, created=(not record_exists))
 
+    def validate_unique(self, exclude=None):
+        # FIXME: we are bypassing the unicity checks, as they break
+        # the admin interface
+        pass
+
     @classmethod
     def scoped(base_class, base_dn):
         """