changed db routing to better facilitate plugin support
This commit is contained in:
@ -5,22 +5,45 @@ 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 anything else goes to calibre
|
||||
"""
|
||||
return 'default'
|
||||
|
||||
def db_for_write(self, model, **hints):
|
||||
"""
|
||||
Attempts to write auth and contenttypes models go to 'calibre'.
|
||||
"""
|
||||
return 'default'
|
||||
|
||||
def allow_relation(self, obj1, obj2, **hints):
|
||||
"""
|
||||
Allow relations.
|
||||
"""
|
||||
return True
|
||||
|
||||
def allow_migrate(self, db, app_label, model_name=None, **hints):
|
||||
"""
|
||||
Yes
|
||||
"""
|
||||
return True
|
||||
|
||||
|
||||
|
||||
class CalibreRouter:
|
||||
"""
|
||||
A router to control all database operations on models in the
|
||||
auth and contenttypes applications.
|
||||
"""
|
||||
route_app_labels = {"library"}
|
||||
|
||||
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 'calibre'
|
||||
return None
|
||||
|
||||
def allow_relation(self, obj1, obj2, **hints):
|
||||
@ -35,42 +58,19 @@ class DjangoRouter:
|
||||
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
|
||||
# def allow_migrate(self, db, app_label, model_name=None, **hints):
|
||||
# """
|
||||
# Attempts to write auth and contenttypes models go to 'calibre'.
|
||||
# Make sure the auth and contenttypes apps only appear in the
|
||||
# 'django' database.
|
||||
# """
|
||||
# return 'calibre'
|
||||
# if app_label in self.route_app_labels:
|
||||
# return db == 'default'
|
||||
# return None
|
||||
|
||||
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
|
||||
# def db_for_write(self, model, **hints):
|
||||
# """
|
||||
# Yes
|
||||
# Attempts to write auth and contenttypes models go to django.
|
||||
# """
|
||||
# return True
|
||||
# if model._meta.app_label in self.route_app_labels:
|
||||
# return 'default'
|
||||
# return None
|
||||
|
Reference in New Issue
Block a user