Do not create tables for LDAP models (thanks Gervase)
[matthijs/upstream/django-ldapdb.git] / ldapdb / router.py
index 4da0c253a2bbe93e73b6d8d125425620ca0cd8d0..ba00631cb8b77af21cbc9c9fd61b556b008f4238 100644 (file)
@@ -37,18 +37,38 @@ def is_ldap_model(model):
     return hasattr(model, 'base_dn')
 
 class Router(object):
-    """A router to control all database operations on models in
-    the myapp application"""
+    """
+    A router to point database operations on LDAP models to the LDAP
+    database.
+
+    NOTE: if you have more than one LDAP database, you will need to
+    write your own router.
+    """
+
+    def __init__(self):
+        "Find the name of the LDAP database"
+        from django.conf import settings
+        self.ldap_alias = None
+        for alias, settings_dict in settings.DATABASES.items():
+            if settings_dict['ENGINE'] == 'ldapdb.backends.ldap':
+                self.ldap_alias = alias
+                break
+
+    def allow_syncdb(self, db, model):
+        "Do not create tables for LDAP models"
+        if is_ldap_model(model):
+            return db == self.ldap_alias
+        return None
 
     def db_for_read(self, model, **hints):
-        "Point all operations on LDAP models to 'ldap'"
+        "Point all operations on LDAP models to the LDAP database"
         if is_ldap_model(model):
-            return 'ldap'
+            return self.ldap_alias
         return None
 
     def db_for_write(self, model, **hints):
-        "Point all operations on LDAP models to 'ldap'"
+        "Point all operations on LDAP models to the LDAP database"
         if is_ldap_model(model):
-            return 'ldap'
+            return self.ldap_alias
         return None