From 017e473b4d566776324bb5cd4ec928e60271ec89 Mon Sep 17 00:00:00 2001 From: MassiveAtoms Date: Thu, 16 Jul 2020 17:28:59 -0300 Subject: [PATCH] changed db routing to better facilitate plugin support --- .../CalibreWebCompanion/settings.py | 20 ++--- .../CalibreWebCompanion/urls.py | 11 +-- CalibreWebCompanion/db_routers/routers.py | 88 +++++++++---------- requirements.txt | 6 +- 4 files changed, 63 insertions(+), 62 deletions(-) diff --git a/CalibreWebCompanion/CalibreWebCompanion/settings.py b/CalibreWebCompanion/CalibreWebCompanion/settings.py index bdbf8b4..a5e6558 100644 --- a/CalibreWebCompanion/CalibreWebCompanion/settings.py +++ b/CalibreWebCompanion/CalibreWebCompanion/settings.py @@ -23,13 +23,6 @@ with open( BASE_DIR + "/settings.json", "r") as userfile: 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, ...) @@ -99,11 +92,13 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', "library", - 'debug_toolbar', # DEBUG purposes + # "silk", + # 'debug_toolbar', # DEBUG purposes ] 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.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', @@ -138,8 +133,9 @@ TEMPLATES = [ WSGI_APPLICATION = 'CalibreWebCompanion.wsgi.application' - -# Database +## ## +######################################################################## +## DATBASE ## # https://docs.djangoproject.com/en/3.0/ref/settings/#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 # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators diff --git a/CalibreWebCompanion/CalibreWebCompanion/urls.py b/CalibreWebCompanion/CalibreWebCompanion/urls.py index f736019..22e2ba5 100644 --- a/CalibreWebCompanion/CalibreWebCompanion/urls.py +++ b/CalibreWebCompanion/CalibreWebCompanion/urls.py @@ -30,8 +30,9 @@ urlpatterns = [ ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) -if settings.DEBUG: # DEBUG purposes - import debug_toolbar - urlpatterns = [ - path('__debug__/', include(debug_toolbar.urls)), - ] + urlpatterns +# if settings.DEBUG: # DEBUG purposes + # urlpatterns+= [path('silk/', include('silk.urls', namespace='silk'))] + # import debug_toolbar + # urlpatterns = [ + # path('__debug__/', include(debug_toolbar.urls)), + # ] + urlpatterns diff --git a/CalibreWebCompanion/db_routers/routers.py b/CalibreWebCompanion/db_routers/routers.py index 672dcc9..5048712 100644 --- a/CalibreWebCompanion/db_routers/routers.py +++ b/CalibreWebCompanion/db_routers/routers.py @@ -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 \ No newline at end of file + # if model._meta.app_label in self.route_app_labels: + # return 'default' + # return None diff --git a/requirements.txt b/requirements.txt index db7fab5..c8c0098 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,5 @@ -django==3.0.8 \ No newline at end of file +django>=3.0.8 +# development +django-debug-toolbar>=2.2 +django-silk>=4.0 +locust>=1.1 \ No newline at end of file