This module supplements the tom_alerts
module with Plotly Dash support for more responsive broker views.
Install the module into your TOM environment:
pip install tom-alerts-dash
Add tom_alerts_dash
and django_plotly_dash.apps.DjangoPlotlyDashConfig
to the INSTALLED_APPS
in your TOM's settings.py
:
INSTALLED_APPS = [
'django.contrib.admin',
...
'tom_dataproducts',
'tom_alerts_dash',
'django_plotly_dash.apps.DjangoPlotlyDashConfig'
]
Add STATIC_ROOT = os.path.join(BASE_DIR, '_static')
and the following STATICFILES_FINDERS
configuration to your settings.py
, ideally in the Static files (CSS, JavaScript, Images)
section:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '_static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'data')
MEDIA_URL = '/data/'
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django_plotly_dash.finders.DashAssetFinder',
'django_plotly_dash.finders.DashComponentFinder',
'django_plotly_dash.finders.DashAppDirectoryFinder',
]
Add django_plotly_dash.middleware.BaseMiddleware
to MIDDLEWARE
in your settings.py
:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
...
'django_plotly_dash.middleware.BaseMiddleware',
'tom_common.middleware.Raise403Middleware',
...
]
Add the following Django Plotly Dash configuration to your settings.py
:
# django-plotly-dash configuration
X_FRAME_OPTIONS = 'SAMEORIGIN'
PLOTLY_COMPONENTS = [
# Common components
'dash_core_components',
'dash_html_components',
'dash_renderer',
# django-plotly-dash components
'dpd_components',
# static support if serving local assets
# 'dpd_static_support',
# Other components, as needed
'dash_bootstrap_components',
'dash_table'
]
Add the following two new paths to your base urls.py
:
url_patterns = [
path('alerts/', include('tom_alerts_dash.urls', namespace='tom_alerts_dash')),
path('', include('tom_common.urls')),
path('django_plotly_dash/', include('django_plotly_dash.urls')),
]
Please note that the path with the namespace tom_alerts_dash
MUST be placed above the tom_common.urls
in order to properly override the default tom_alerts
paths.
Finally, run the following to run the django-plotly-dash
migrations:
./manage.py migrate
The tom_scimma
repo also includes tom_alerts_dash
support. To install it into a TOM with tom_alerts_dash
configured, the following steps are required.
Install tom_alerts_dash
with the tom_scimma
dependency, in either of the following fashions:
pip install tom_alerts_dash tom_scimma
or:
pip install tom_alerts_dash[scimma]
Add the TOM_ALERT_DASH_CLASSES
setting to your settings.py
, along with the brokers that you want to include in your TOM:
TOM_ALERT_DASH_CLASSES = [
'tom_alerts_dash.brokers.mars.MARSDashBroker',
'tom_alerts_dash.brokers.alerce.ALeRCEDashBroker',
'tom_alerts_dash.brokers.scimma.SCIMMADashBroker'
]
Add the SCIMMA settings specified in the tom_scimma
README:
TOM_ALERT_CLASSES = [
...
'tom_scimma.scimma.SCIMMABroker'
]
BROKERS = {
...
'SCIMMA': {
'url': 'http://skip.dev.hop.scimma.org',
'api_key': os.getenv('SKIP_API_KEY', ''),
'hopskotch_url': 'dev.hop.scimma.org',
'hopskotch_username': os.getenv('HOPSKOTCH_USERNAME', ''),
'hopskotch_password': os.getenv('HOPSKOTCH_PASSWORD', ''),
'default_hopskotch_topic': ''
}
}
For information on writing your own Dash broker module, please see the TOM Toolkit documentation on Dash broker modules.