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.