changed db routing to better facilitate plugin support
This commit is contained in:
parent
b65ef99935
commit
017e473b4d
@ -23,13 +23,6 @@ with open( BASE_DIR + "/settings.json", "r") as userfile:
|
|||||||
INTERNAL_IPS = usersettings["INTERNAL_IPS"]
|
INTERNAL_IPS = usersettings["INTERNAL_IPS"]
|
||||||
|
|
||||||
|
|
||||||
# CALIBRE_DIR = os.path.abspath(
|
|
||||||
# "C:\\Users\\MassiveAtoms\\Documents\\Calibre Library")
|
|
||||||
# SECRET_KEY = 'u(8^+rb%rz5hsx4v^^y(ul7g(4n7a8!db@s*9(m5cs*2_ppy8+'
|
|
||||||
# ALLOWED_HOSTS = ['127.0.0.1', ]
|
|
||||||
# INTERNAL_IPS = ['127.0.0.1', ]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
|
|
||||||
@ -99,11 +92,13 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
"library",
|
"library",
|
||||||
'debug_toolbar', # DEBUG purposes
|
# "silk",
|
||||||
|
# 'debug_toolbar', # DEBUG purposes
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
'debug_toolbar.middleware.DebugToolbarMiddleware', # DEBUG purposes
|
# 'silk.middleware.SilkyMiddleware', # DEBUG/profiling purposes
|
||||||
|
# 'debug_toolbar.middleware.DebugToolbarMiddleware', # DEBUG purposes
|
||||||
'django.middleware.cache.UpdateCacheMiddleware', # cache
|
'django.middleware.cache.UpdateCacheMiddleware', # cache
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
@ -138,8 +133,9 @@ TEMPLATES = [
|
|||||||
|
|
||||||
WSGI_APPLICATION = 'CalibreWebCompanion.wsgi.application'
|
WSGI_APPLICATION = 'CalibreWebCompanion.wsgi.application'
|
||||||
|
|
||||||
|
## ##
|
||||||
# Database
|
########################################################################
|
||||||
|
## DATBASE ##
|
||||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
@ -154,7 +150,7 @@ DATABASES = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DATABASE_ROUTERS = ["db_routers.DjangoRouter", "db_routers.CalibreRouter"]
|
DATABASE_ROUTERS = [ "db_routers.CalibreRouter", "db_routers.DjangoRouter"]
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
|
||||||
|
@ -30,8 +30,9 @@ urlpatterns = [
|
|||||||
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||||
|
|
||||||
|
|
||||||
if settings.DEBUG: # DEBUG purposes
|
# if settings.DEBUG: # DEBUG purposes
|
||||||
import debug_toolbar
|
# urlpatterns+= [path('silk/', include('silk.urls', namespace='silk'))]
|
||||||
urlpatterns = [
|
# import debug_toolbar
|
||||||
path('__debug__/', include(debug_toolbar.urls)),
|
# urlpatterns = [
|
||||||
] + urlpatterns
|
# path('__debug__/', include(debug_toolbar.urls)),
|
||||||
|
# ] + urlpatterns
|
||||||
|
@ -5,22 +5,45 @@ class DjangoRouter:
|
|||||||
A router to control all database operations on models in the
|
A router to control all database operations on models in the
|
||||||
auth and contenttypes applications.
|
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):
|
def db_for_read(self, model, **hints):
|
||||||
"""
|
"""
|
||||||
Attempts to read auth and contenttypes models go to default.
|
Attempts to read auth and contenttypes models go to default.
|
||||||
"""
|
"""
|
||||||
if model._meta.app_label in self.route_app_labels:
|
if model._meta.app_label in self.route_app_labels:
|
||||||
return 'default'
|
return 'calibre'
|
||||||
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
|
return None
|
||||||
|
|
||||||
def allow_relation(self, obj1, obj2, **hints):
|
def allow_relation(self, obj1, obj2, **hints):
|
||||||
@ -35,42 +58,19 @@ class DjangoRouter:
|
|||||||
return True
|
return True
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def allow_migrate(self, db, app_label, model_name=None, **hints):
|
# 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'.
|
# 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):
|
# def db_for_write(self, model, **hints):
|
||||||
"""
|
|
||||||
Allow relations.
|
|
||||||
"""
|
|
||||||
return True
|
|
||||||
|
|
||||||
# def allow_migrate(self, db, app_label, model_name=None, **hints): # might be prudent not to allow migrations
|
|
||||||
# """
|
# """
|
||||||
# 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
|
||||||
|
@ -1 +1,5 @@
|
|||||||
django==3.0.8
|
django>=3.0.8
|
||||||
|
# development
|
||||||
|
django-debug-toolbar>=2.2
|
||||||
|
django-silk>=4.0
|
||||||
|
locust>=1.1
|
Loading…
Reference in New Issue
Block a user