diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index a20f358019..d790d65631 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -542,6 +542,33 @@ DATABASES = { 'default': db_config } +# login settings +REMOTE_LOGIN = get_boolean_setting('INVENTREE_REMOTE_LOGIN', 'remote_login_enabled', False) +REMOTE_LOGIN_HEADER = get_setting('INVENTREE_REMOTE_LOGIN_HEADER', 'remote_login_header', 'REMOTE_USER') + +# sentry.io integration for error reporting +SENTRY_ENABLED = get_boolean_setting('INVENTREE_SENTRY_ENABLED', 'sentry_enabled', False) +# Default Sentry DSN (can be overriden if user wants custom sentry integration) +INVENTREE_DSN = 'https://3928ccdba1d34895abde28031fd00100@o378676.ingest.sentry.io/6494600' +SENTRY_DSN = get_setting('INVENTREE_SENTRY_DSN', 'sentry_dsn', INVENTREE_DSN) +SENTRY_SAMPLE_RATE = float(get_setting('INVENTREE_SENTRY_SAMPLE_RATE', 'sentry_sample_rate', 0.1)) + +if SENTRY_ENABLED and SENTRY_DSN: # pragma: no cover + sentry_sdk.init( + dsn=SENTRY_DSN, + integrations=[DjangoIntegration(), ], + traces_sample_rate=1.0 if DEBUG else SENTRY_SAMPLE_RATE, + send_default_pii=True + ) + inventree_tags = { + 'testing': TESTING, + 'docker': DOCKER, + 'debug': DEBUG, + 'remote': REMOTE_LOGIN, + } + for key, val in inventree_tags.items(): + sentry_sdk.set_tag(f'inventree_{key}', val) + # Cache configuration cache_host = get_setting('INVENTREE_CACHE_HOST', 'cache.host', None) cache_port = get_setting('INVENTREE_CACHE_PORT', 'cache.port', '6379', typecast=int) @@ -604,6 +631,14 @@ Q_CLUSTER = { 'sync': False, } +# Configure django-q sentry integration +if SENTRY_ENABLED and SENTRY_DSN: + Q_CLUSTER['error_reporter'] = { + 'sentry': { + 'dsn': SENTRY_DSN + } + } + if cache_host: # pragma: no cover # If using external redis cache, make the cache the broker for Django Q # as well @@ -792,10 +827,6 @@ ACCOUNT_FORMS = { SOCIALACCOUNT_ADAPTER = 'InvenTree.forms.CustomSocialAccountAdapter' ACCOUNT_ADAPTER = 'InvenTree.forms.CustomAccountAdapter' -# login settings -REMOTE_LOGIN = get_boolean_setting('INVENTREE_REMOTE_LOGIN', 'remote_login_enabled', False) -REMOTE_LOGIN_HEADER = get_setting('INVENTREE_REMOTE_LOGIN_HEADER', 'remote_login_header', 'REMOTE_USER') - # Markdownify configuration # Ref: https://django-markdownify.readthedocs.io/en/latest/settings.html @@ -834,29 +865,6 @@ MARKDOWNIFY = { } } -# sentry.io integration for error reporting -SENTRY_ENABLED = get_boolean_setting('INVENTREE_SENTRY_ENABLED', 'sentry_enabled', False) -# Default Sentry DSN (can be overriden if user wants custom sentry integration) -INVENTREE_DSN = 'https://3928ccdba1d34895abde28031fd00100@o378676.ingest.sentry.io/6494600' -SENTRY_DSN = get_setting('INVENTREE_SENTRY_DSN', 'sentry_dsn', INVENTREE_DSN) -SENTRY_SAMPLE_RATE = float(get_setting('INVENTREE_SENTRY_SAMPLE_RATE', 'sentry_sample_rate', 0.1)) - -if SENTRY_ENABLED and SENTRY_DSN: # pragma: no cover - sentry_sdk.init( - dsn=SENTRY_DSN, - integrations=[DjangoIntegration(), ], - traces_sample_rate=1.0 if DEBUG else SENTRY_SAMPLE_RATE, - send_default_pii=True - ) - inventree_tags = { - 'testing': TESTING, - 'docker': DOCKER, - 'debug': DEBUG, - 'remote': REMOTE_LOGIN, - } - for key, val in inventree_tags.items(): - sentry_sdk.set_tag(f'inventree_{key}', val) - # Ignore these error typeps for in-database error logging IGNORED_ERRORS = [ Http404, diff --git a/requirements.in b/requirements.in index 531610ad56..2959017fa9 100644 --- a/requirements.in +++ b/requirements.in @@ -19,6 +19,7 @@ django-money<3.0.0 # Django app for currency management # django-mptt==0.11.0 # Modified Preorder Tree Traversal django-redis>=5.0.0 # Redis integration django-q # Background task scheduling +django-q-sentry # sentry.io integration for django-q django-sql-utils # Advanced query annotation / aggregation django-sslserver # Secure HTTP development server django-stdimage<6.0.0 # Advanced ImageField management # FIXED 2022-06-29 6.0.0 breaks serialization for django-q diff --git a/requirements.txt b/requirements.txt index 97934d4ad4..6b7cae5815 100644 --- a/requirements.txt +++ b/requirements.txt @@ -110,6 +110,8 @@ django-picklefield==3.1 # via django-q django-q==1.3.9 # via -r requirements.in +django-q-sentry==0.1.6 + # via -r requirements.in django-recurrence==1.11.1 # via django-ical django-redis==5.2.0 @@ -222,7 +224,9 @@ requests==2.28.1 requests-oauthlib==1.3.1 # via django-allauth sentry-sdk==1.12.1 - # via -r requirements.in + # via + # -r requirements.in + # django-q-sentry sgmllib3k==1.0.0 # via feedparser six==1.16.0