class DjangoRouter: """ A router to control all database operations on models in the auth and contenttypes applications. """ route_app_labels = {'auth', 'contenttypes', "sessions", "sites", "admin", "flatpages"} def db_for_read(self, model, **hints): """ Attempts to read auth and contenttypes models go to default. """ if model._meta.app_label in self.route_app_labels: return 'default' return None def db_for_write(self, model, **hints): """ Attempts to write auth and contenttypes models go to django. """ if model._meta.app_label in self.route_app_labels: return 'default' return None def allow_relation(self, obj1, obj2, **hints): """ Allow relations if a model in the auth or contenttypes apps is involved. """ if ( obj1._meta.app_label in self.route_app_labels or obj2._meta.app_label in self.route_app_labels ): return True return None def allow_migrate(self, db, app_label, model_name=None, **hints): """ Make sure the auth and contenttypes apps only appear in the 'django' database. """ if app_label in self.route_app_labels: return db == 'default' return None class CalibreRouter: """ A router to control all database operations on models in the auth and contenttypes applications. """ def db_for_read(self, model, **hints): """ Attempts to read anything else goes to calibre """ return 'calibre' # def db_for_write(self, model, **hints): # might be prudent not to allow writes # """ # Attempts to write auth and contenttypes models go to 'calibre'. # """ # return 'calibre' def allow_relation(self, obj1, obj2, **hints): """ Allow relations. """ return True # def allow_migrate(self, db, app_label, model_name=None, **hints): # might be prudent not to allow migrations # """ # Yes # """ # return True