From b8b3a933ab1abe3a60db7aede337971836a45889 Mon Sep 17 00:00:00 2001 From: Oliver Walters <oliver.henry.walters@gmail.com> Date: Sat, 15 Aug 2020 19:48:42 +1000 Subject: [PATCH 1/3] Add django-debug-toolbar plugin - Must be running in DEBUG mode - Must set debug_toolbar to True in config file --- InvenTree/InvenTree/settings.py | 14 +++++++++++++- InvenTree/InvenTree/urls.py | 8 ++++++++ InvenTree/config_template.yaml | 6 ++++++ requirements.txt | 3 ++- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index e5b14314b5..6d68136fb2 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -172,9 +172,16 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'InvenTree.middleware.AuthRequiredMiddleware', + + 'InvenTree.middleware.AuthRequiredMiddleware' ] +# If the debug toolbar is enabled, add the modules +if DEBUG and CONFIG.get('debug_toolbar', False): + print("Running with DEBUG_TOOLBAR enabled") + INSTALLED_APPS.append('debug_toolbar') + MIDDLEWARE.append('debug_toolbar.middleware.DebugToolbarMiddleware') + if CONFIG.get('log_queries', False): MIDDLEWARE.append('InvenTree.middleware.QueryCountMiddleware') @@ -377,3 +384,8 @@ DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage' DBBACKUP_STORAGE_OPTIONS = { 'location': CONFIG.get('backup_dir', tempfile.gettempdir()), } + +# Internal IP addresses allowed to see the debug toolbar +INTERNAL_IPS = [ + '127.0.0.1', +] \ No newline at end of file diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index c2d0d0f48f..d0076714ae 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -6,6 +6,7 @@ Passes URL lookup downstream to each app as required. from django.conf.urls import url, include +from django.urls import path from django.contrib import admin from django.contrib.auth import views as auth_views from qr_code import urls as qr_code_urls @@ -135,5 +136,12 @@ urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # Media file access urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +# Debug toolbar access (if in DEBUG mode) +if settings.DEBUG and 'debug_toolbar' in settings.INSTALLED_APPS: + import debug_toolbar + urlpatterns = [ + path('__debug/', include(debug_toolbar.urls)), + ] + urlpatterns + # Send any unknown URLs to the parts page urlpatterns += [url(r'^.*$', RedirectView.as_view(url='/index/', permanent=False), name='index')] diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 5447606337..eef3e8727e 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -58,8 +58,14 @@ static_root: '../inventree_static' # - git # - ssh +# Set debug_toolbar to True to enable a debugging toolbar for InvenTree +# Note: This will only be displayed if DEBUG mode is enabled, +# and only if InvenTree is accessed from a local IP (127.0.0.1) +debug_toolbar: False + # Logging options # If debug mode is enabled, set log_queries to True to show aggregate database queries in the debug console +# TODO - Remove me! log_queries: False # Backup options diff --git a/requirements.txt b/requirements.txt index f09cc35167..c668612914 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,4 +21,5 @@ python-coveralls==2.9.1 # Coveralls linking (for Travis) rapidfuzz==0.7.6 # Fuzzy string matching django-stdimage==5.1.1 # Advanced ImageField management django-tex==1.1.7 # LaTeX PDF export -django-weasyprint==1.0.1 # HTML PDF export \ No newline at end of file +django-weasyprint==1.0.1 # HTML PDF export +django-debug-toolbar==2.2 # Debug / profiling toolbar \ No newline at end of file From 2bb669d7de5e9cb4248fc816f3fd12e2e696b5a7 Mon Sep 17 00:00:00 2001 From: Oliver Walters <oliver.henry.walters@gmail.com> Date: Sat, 15 Aug 2020 19:52:04 +1000 Subject: [PATCH 2/3] Remove defunct "log_queries" option --- InvenTree/InvenTree/middleware.py | 2 ++ InvenTree/InvenTree/settings.py | 3 --- InvenTree/config_template.yaml | 5 ----- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index 26cbc95bbf..37b9a27c63 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -91,6 +91,8 @@ class QueryCountMiddleware(object): To enable this middleware, set 'log_queries: True' in the local InvenTree config file. Reference: https://www.dabapps.com/blog/logging-sql-queries-django-13/ + + Note: 2020-08-15 - This is no longer used, instead we now rely on the django-debug-toolbar addon """ def __init__(self, get_response): diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 6d68136fb2..7a3ab02433 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -182,9 +182,6 @@ if DEBUG and CONFIG.get('debug_toolbar', False): INSTALLED_APPS.append('debug_toolbar') MIDDLEWARE.append('debug_toolbar.middleware.DebugToolbarMiddleware') -if CONFIG.get('log_queries', False): - MIDDLEWARE.append('InvenTree.middleware.QueryCountMiddleware') - ROOT_URLCONF = 'InvenTree.urls' TEMPLATES = [ diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index eef3e8727e..1c776a6f7a 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -63,11 +63,6 @@ static_root: '../inventree_static' # and only if InvenTree is accessed from a local IP (127.0.0.1) debug_toolbar: False -# Logging options -# If debug mode is enabled, set log_queries to True to show aggregate database queries in the debug console -# TODO - Remove me! -log_queries: False - # Backup options # Set the backup_dir parameter to store backup files in a specific location # If unspecified, the local user's temp directory will be used From 3c4cfc9a1b61a076a527efc87b0efdb86bb4d922 Mon Sep 17 00:00:00 2001 From: Oliver Walters <oliver.henry.walters@gmail.com> Date: Sat, 15 Aug 2020 19:56:02 +1000 Subject: [PATCH 3/3] Flake fix --- InvenTree/InvenTree/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 7a3ab02433..fb68f65497 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -385,4 +385,4 @@ DBBACKUP_STORAGE_OPTIONS = { # Internal IP addresses allowed to see the debug toolbar INTERNAL_IPS = [ '127.0.0.1', -] \ No newline at end of file +]