diff --git a/config.yaml.defaults b/config.yaml.defaults
index 8d5b00d3de..edd30757de 100644
--- a/config.yaml.defaults
+++ b/config.yaml.defaults
@@ -1,334 +1,334 @@
-app:
- title: SkyPortal
- logos: # Logos to place in the top-left of the header/login page (zero or more)
- - src: /static/images/skyportal_logo_dark.png
- alt_text: Skyportal logo
- login_message: |
- For more information about the project, see
-
- https://github.com/skyportal/skyportal
-
-
- secret_key: abc01234 # This secret key can be any random string of
- # characters.
- #
- # You should re-generate this for your application
- # using:
- #
- # base64.b64encode(os.urandom(50)).decode('ascii')
- factory: skyportal.app_server.make_app
-
- # this endpoint does not actually do anything -- it is just for testing
- sedm_endpoint: http://pharos.caltech.edu/add_fritz
-
- lt_host: 161.72.57.3
- lt_port: 8080
-
- # See https://stackoverflow.com/a/35604855 for syntax
- # These are Javascript component routes
- routes:
- - path: "/"
- component: HomePage
- exact: True
- - path: "/source/:id"
- component: Source
- - path: "/favorites"
- component: FavoritesPage
- - path: "/groups"
- component: Groups
- - path: "/group/:id"
- component: Group
- - path: "/profile"
- component: Profile
- - path: "/candidates"
- component: CandidateList
- - path: "/sources"
- component: SourceList
- - path: "/user/:id"
- component: UserInfo
- - path: "/upload_photometry/:id"
- component: UploadPhotometry
- - path: "/about"
- component: About
- - path: "/run/:id"
- component: RunSummary
- - path: "/manage_data/:id"
- component: ManageDataForm
- - path: "/filter/:fid"
- component: Filter
- - path: "/runs"
- component: ObservingRunPage
- - path: "/group_sources/:id"
- component: GroupSources
- - path: "/user_management"
- component: UserManagement
- - path: "/upload_spectrum/:id"
- component: UploadSpectrum
- - path: "/observability/:id"
- component: Observability
- - path: "/source/:id/finder"
- component: FindingChart
- - path: "/source/:id/periodogram"
- component: Periodogram
- - path: "/db_stats"
- component: DBStats
-
-
- sidebar:
- # See https://material-ui.com/components/material-icons/
-
- - name: Dashboard
- icon: Home
- url: /
-
- - name: Sources
- icon: Storage
- url: /sources
-
- - name: Candidates
- icon: Search
- url: /candidates
-
- - name: Favorites
- icon: Star
- url: /favorites
-
- - name: Groups
- icon: GroupWork
- url: /groups
-
- - name: Observing Runs
- icon: LocalCafe
- url: /runs
-
- - name: About
- icon: Info
- url: /about
-
- # See https://github.com/STRML/react-grid-layout for more on the grid package
- homepage_grid:
- # This section describes the grid on which Home Page widgets are laid out.
+ app:
+ title: Fritz
+ logos: # Logos to place in the top-left of the header bar (zero or more)
+ - src: /static/images/GROWTH_logo.png
+ alt_text: GROWTH logo
+ - src: /static/images/skyportal_logo_dark.png
+ alt_text: Skyportal logo
+
+ # This secret key can be any random string of
+ # characters.
#
- # The breakpoints describe screen sizes at which a different set of widget
- # layouts should be used. Note that these breakpoints describe minimum width
- # values, unlike the maximum width bounds used by Material UI breakpoints.
- # For example, a breakpoint of "sm: 650" will match windows with width 650px
- # or greater, until the next highest breakpoint is hit (probably a "md").
- # This is different from Material UI, where a breakpoint of 650 would match
- # window widths that are at most 650px.
+ # You should re-generate this for your application
+ # using:
#
- # The cols describe the number of evenly spaced columns that make up the
- # grid at a given breakpoint. For example, on extra-large screens (greater
- # than ${breakpoints.xlg} pixels), the grid will use ${cols.xlg} columns of
- # equal width to describe sizes of widgets based on the layouts provided.
+ # base64.b64encode(os.urandom(50)).decode('ascii')
+ secret_key: abc01234
+ factory: skyportal.app_server_fritz.make_app_fritz
+
+ # this endpoint does not actually do anything -- it is just for testing
+ sedm_endpoint: http://pharos.caltech.edu/add_fritz
+
+ # See https://stackoverflow.com/a/35604855 for syntax
+ # These are Javascript component routes
+ routes:
+ - path: "/"
+ component: HomePage
+ exact: True
+ - path: "/source/:id"
+ component: Source
+ - path: "/favorites"
+ component: FavoritesPage
+ - path: "/groups"
+ component: Groups
+ - path: "/group/:id"
+ component: Group
+ - path: "/profile"
+ component: Profile
+ - path: "/candidates"
+ component: CandidateList
+ - path: "/sources"
+ component: SourceList
+ - path: "/user/:id"
+ component: UserInfo
+ - path: "/upload_photometry/:id"
+ component: UploadPhotometry
+ - path: "/about"
+ component: About
+ - path: "/manage_data/:id"
+ component: ManageDataForm
+ - path: "/filter/:fid"
+ component: Filter
+ - path: "/runs"
+ component: ObservingRunPage
+ - path: "/run/:id"
+ component: RunSummary
+ - path: "/group_sources/:id"
+ component: GroupSources
+ - path: "/user_management"
+ component: UserManagement
+ - path: "/alerts"
+ component: Alerts
+ - path: "/alerts/ztf/:id"
+ component: ZTFAlert
+ - path: "/upload_spectrum/:id"
+ component: UploadSpectrum
+ - path: "/source/:id/finder"
+ component: FindingChart
+ - path: "/observability/:id"
+ component: Observability
+ - path: "/source/:id/periodogram"
+ component: Periodogram
+ - path: "/db_stats"
+ component: DBStats
+
+ kowalski:
+ protocol: "http"
+ host: "kowalski_api_1"
+ port: 4000
+ token:
+
+ sidebar:
+ # See https://material-ui.com/components/material-icons/
+
+ - name: Dashboard
+ icon: Home
+ url: /
+
+ - name: Sources
+ icon: Storage
+ url: /sources
+
+ - name: Candidates
+ icon: Search
+ url: /candidates
+
+ - name: Favorites
+ icon: Star
+ url: /favorites
+
+ - name: Alerts
+ icon: Explore
+ url: /alerts
+
+ - name: Groups
+ icon: GroupWork
+ url: /groups
+
+ - name: Observing Runs
+ icon: LocalCafe
+ url: /runs
+
+ - name: About
+ icon: Info
+ url: /about
+
+ homepage_grid:
+ # This section describes the grid on which Home Page widgets are laid out.
+ #
+ # The breakpoints describe screen sizes at which a different set of widget
+ # layouts should be used. Note that these breakpoints describe minimum width
+ # values, unlike the maximum width bounds used by Material UI breakpoints.
+ # For example, a breakpoint of "sm: 650" will match windows with width 650px
+ # or greater, until the next highest breakpoint is hit (probably a "md").
+ # This is different from Material UI, where a breakpoint of 650 would match
+ # window widths that are at most 650px.
+ #
+ # The cols describe the number of evenly spaced columns that make up the
+ # grid at a given breakpoint. For example, on extra-large screens (greater
+ # than ${breakpoints.xlg} pixels), the grid will use ${cols.xlg} columns of
+ # equal width to describe sizes of widgets based on the layouts provided.
+ #
+ # Optionally, you may provide a "row_height: {a rem value}" property in
+ # this section to change the height of a row on the grid. By default, this
+ # value is 9.375rem (150px for the default 16px = 1rem configuration).
+
+ breakpoints:
+ xlg: 1400
+ lg: 1150
+ md: 996
+ sm: 650
+ xs: 0
+
+ cols:
+ xlg: 16
+ lg: 12
+ md: 10
+ sm: 6
+ xs: 4
+
+ homepage_widgets:
+ # This section describes the specific widgets shown on the Home Page and how
+ # they are laid out by default on the grid of the page.
+ #
+ # The name of section should be the same as the widget's React component.
+ #
+ # The props property should be a set of properties to be passed on to the
+ # underlying React component for the widget. You may run into cases in which
+ # you must pass a more complex, dyamic property (perhaps fetched from the
+ # application redux store). Since you can not know that in the time of the
+ # configuration writing, such properties should be directly coded into the
+ # HomePage.jsx.template file (see the GroupList widget for an example)
+ #
+ # By default, any widget listed here is shown on the Home Page. However, you
+ # can give a widget the property "show: false" to turn off rendering of the
+ # widget.
+ #
+ # The resizable property determines whether the user is able to resize the
+ # widget after it has been rendered based on default layouts.
+ #
+ # Finally, the layouts property provides an array of default sizes/locations
+ # for each screen width breakpoint for the given widget. Layout arrays are
+ # given in the order [x, y, width, height], in units of grid columns/rows.
+ # For example, a layout array of [1, 2, 3, 4] will render a widget 3 grid
+ # columns in width, 4 grid rows in height, and have its upper-left corner at
+ # the column 1 (zero-indexed) and row 2. Note that each row is by default
+ # 150px in height. The row height can be altered in the homepage_grid
+ # section above (as well as other grid characteristics).
+ WeatherWidget:
+ resizeable: false
+ layouts:
+ xlg: [0, 10, 4, 1]
+ lg: [0, 10, 4, 1]
+ md: [0, 10, 4, 1]
+ sm: [0, 10, 4, 1]
+ xs: [0, 12, 4, 1]
+
+ SourceCounts:
+ props:
+ sinceDaysAgo: 7
+ resizeable: false
+ layouts:
+ xlg: [14, 0, 2, 1]
+ lg: [10, 0, 2, 1]
+ md: [8, 0, 2, 1]
+ sm: [4.5, 0, 1.5, 1]
+ xs: [0, 0, 4, 1]
+
+ RecentSources:
+ resizeable: false
+ layouts:
+ xlg: [0, 0, 5, 3]
+ lg: [0, 0, 4, 3]
+ md: [0, 3, 5, 3]
+ sm: [0, 3, 3, 3]
+ xs: [0, 4, 4, 3]
+
+ NewsFeed:
+ resizeable: false
+ layouts:
+ xlg: [10, 0, 4, 3]
+ lg: [7, 0, 3, 3]
+ md: [0, 0, 8, 3]
+ sm: [0, 0, 4.5, 3]
+ xs: [0, 1, 4, 3]
+
+ TopSources:
+ resizeable: false
+ layouts:
+ xlg: [5, 0, 5, 3]
+ lg: [4, 3, 3, 3]
+ md: [5, 3, 5, 3]
+ sm: [3, 3, 3, 3]
+ xs: [0, 7, 4, 3]
+
+ GroupList:
+ props:
+ title: My Groups
+ resizeable: true
+ layouts:
+ xlg: [14, 1, 2, 2]
+ lg: [10, 1, 2, 2]
+ md: [8, 1, 2, 2]
+ sm: [4.5, 1, 1.5, 2]
+ xs: [0, 10, 4, 2]
+
+ database:
+ database: skyportal
+ host: localhost
+ port: 5432
+ user: skyportal
+ password: password
+
+ server:
+ # From https://console.developers.google.com/
#
- # Optionally, you may provide a "row_height: {a rem value}" property in
- # this section to change the height of a row on the grid. By default, this
- # value is 9.375rem (150px for the default 16px = 1rem configuration).
-
- breakpoints:
- xlg: 1400
- lg: 1150
- md: 996
- sm: 650
- xs: 0
-
- cols:
- xlg: 16
- lg: 12
- md: 10
- sm: 6
- xs: 4
-
- homepage_widgets:
- # This section describes the specific widgets shown on the Home Page and how
- # they are laid out by default on the grid of the page.
+ # - Create Client ID
+ # - Javascript origins: https://localhost:5000
+ # - Authorized redirect URLs: http://localhost:5000/complete/google-oauth2/
#
- # The name of section should be the same as the widget's React component.
- #
- # The props property should be a set of properties to be passed on to the
- # underlying React component for the widget. You may run into cases in which
- # you must pass a more complex, dyamic property (perhaps fetched from the
- # application redux store). Since you can not know that in the time of the
- # configuration writing, such properties should be directly coded into the
- # HomePage.jsx.template file (see the GroupList widget for an example)
- #
- # By default, any widget listed here is shown on the Home Page. However, you
- # can give a widget the property "show: false" to turn off rendering of the
- # widget.
- #
- # The resizable property determines whether the user is able to resize the
- # widget after it has been rendered based on default layouts.
- #
- # Finally, the layouts property provides an array of default sizes/locations
- # for each screen width breakpoint for the given widget. Layout arrays are
- # given in the order [x, y, width, height], in units of grid columns/rows.
- # For example, a layout array of [1, 2, 3, 4] will render a widget 3 grid
- # columns in width, 4 grid rows in height, and have its upper-left corner at
- # the column 1 (zero-indexed) and row 2. Note that each row is by default
- # 150px in height. The row height can be altered in the homepage_grid
- # section above (as well as other grid characteristics).
- WeatherWidget:
- resizeable: true
- layouts:
- xlg: [0, 10, 4, 1]
- lg: [0, 10, 4, 1]
- md: [0, 10, 4, 1]
- sm: [0, 10, 4, 1]
- xs: [0, 12, 4, 1]
-
- SourceCounts:
- props:
- sinceDaysAgo: 7
- resizeable: true
- layouts:
- xlg: [14, 0, 2, 1]
- lg: [10, 0, 2, 1]
- md: [8, 0, 2, 1]
- sm: [4.5, 0, 1.5, 1]
- xs: [0, 0, 4, 1]
-
- RecentSources:
- resizeable: true
- layouts:
- xlg: [0, 0, 5, 3]
- lg: [0, 0, 4, 3]
- md: [0, 3, 5, 3]
- sm: [0, 3, 3, 3]
- xs: [0, 4, 4, 3]
-
- NewsFeed:
- resizeable: true
- layouts:
- xlg: [10, 0, 4, 3]
- lg: [7, 0, 3, 3]
- md: [0, 0, 8, 3]
- sm: [0, 0, 4.5, 3]
- xs: [0, 1, 4, 3]
-
- TopSources:
- resizeable: true
- layouts:
- xlg: [5, 0, 5, 3]
- lg: [4, 3, 3, 3]
- md: [5, 3, 5, 3]
- sm: [3, 3, 3, 3]
- xs: [0, 7, 4, 3]
-
- GroupList:
- props:
- title: My Groups
- resizeable: true
- layouts:
- xlg: [14, 1, 2, 2]
- lg: [10, 1, 2, 2]
- md: [8, 1, 2, 2]
- sm: [4.5, 1, 1.5, 2]
- xs: [0, 10, 4, 2]
-
-database:
- database: skyportal
- host: localhost
- port: 5432
- user: skyportal
- password:
-
-server:
- # From https://console.developers.google.com/
- #
- # - Create Client ID
- # - Javascript origins: https://localhost:5000
- # - Authorized redirect URLs: http://localhost:5000/complete/google-oauth2/
- #
- # You need to have Google+ API enabled; it takes a few minutes to activate.
- host: localhost
- port: 5000 # This is the public-facing port
- ssl: False # Must be either True or False
- processes: 2
-
- auth:
- debug_login: True
- google_oauth2_key:
- google_oauth2_secret:
-
-services:
- dask: False
-
-misc:
- days_to_keep_unsaved_candidates: 7
- public_group_name: "Sitewide Group"
- # Use a named cosmology from `astropy.cosmology.parameters.available` cosmologies
- # or supply the arguments for an `astropy.cosmology.FLRW` cosmological instance.
- # If {"flat": True} then use a subclass of the FLRW, called `FlatLambdaCMD`
- # otherwise use `LambdaCDM`. See `utils.cosmology.py` for the way in which
- # the user-supplied cosmology parameter set constructs the site-wide cosmology.
- cosmology: Planck18_arXiv_v2
- #cosmology: {H0: "65.0", Om0: 0.3, Ode0: 0.7, name: 'skyportal_user_cosmo'}
-
- # The minimum signal-to-noise ratio/ n-sigma for lim mag cacluations to
- # consider a photometry point as a detection
- photometry_detection_threshold_nsigma: 3.0
-
-weather:
- # time in seconds to wait before fetching weather for a given telescope
- refresh_time: 3600.0
- # Get an API key at OpenWeatherMap https://openweathermap.org/price
- # the free tier should be sufficent, as we cache the weather results
- # for each telescope
- openweather_api_key:
-
-external_logging:
- papertrail:
- # get an account at https://papertrailapp.com
- enabled: False
- # change url to the correct subdomain for your account
- # and change the port as well
- url:
+ # You need to have Google+ API enabled; it takes a few minutes to activate.
+
+ host:
+ port:
+
+ ssl: False
+ processes: 1
+
+ auth:
+ debug_login: True
+ google_oauth2_key:
+ google_oauth2_secret:
+
+ services:
+ dask: False
+
+ misc:
+ days_to_keep_unsaved_candidates: 7
+ public_group_name: "Sitewide Group"
+ # Use a named cosmology from `astropy.cosmology.parameters.available` cosmologies
+ # or supply the arguments for an `astropy.cosmology.FLRW` cosmological instance.
+ # If {"flat": True} then use a subclass of the FLRW, called `FlatLambdaCMD`
+ # otherwise use `LambdaCDM`. See `utils.cosmology.py` for the way in which
+ # the user-supplied cosmology parameter set constructs the site-wide cosmology.
+ cosmology: Planck18_arXiv_v2
+ #cosmology: {H0: "65.0", Om0: 0.3, Ode0: 0.7, name: 'skyportal_user_cosmo'}
+
+ external_logging:
+ papertrail:
+ # get an account at https://papertrailapp.com
+ enabled: False
+ # change url to the correct subdomain for your account
+ # and change the port as well
+ url:
+ port:
+ # which log files, if any do you not want to send over to the 3rd party?
+ excluded_log_files: ["log/websocket_server.log"]
+
+ weather:
+ refresh_time: 3600.0
+ openweather_api_key:
+
+ cron:
+ - interval: 60
+ script: jobs/count_unsaved_candidates.py
+ # - interval: 1440
+ # script: jobs/delete_unsaved_candidates.py
+ # limit: ["01:00", "02:00"]
+
+ twilio:
+ # Twilio Sendgrid API configs
+ # This needs to be set to a valid, Sendgrid-registered address in config.yaml
+ from_email:
+ # This needs to be obtained via Sendgrid setup on their site
+ sendgrid_api_key:
+
+ # Twilio SMS API configs
+ # These values must be valid ones from the Twilio API console
+ from_number:
+ sms_account_sid:
+ sms_auth_token:
+
+ invitations:
+ enabled: False # If debug_login=True above, invite tokens won't be used during auth
+ days_until_expiry: 3
+ email_subject: "You have been invited to collaborate on Fritz"
+ email_body_preamble: | # This can include HTML tags
+ Welcome to Fritz!
+
+ Dark star crashes, pouring its light into ashes.
+
+ notifications:
+ enabled: True
+
+ standard_stars:
+ ZTF: data/ztf_standards.csv
+ ESO: data/eso_standards.csv
+
+ smtp:
+ from_email:
+ password:
+ host:
port:
- # which log files, if any do you not want to send over to the 3rd party?
- excluded_log_files: ["log/websocket_server.log"]
-
-cron:
- - interval: 60
- script: jobs/count_unsaved_candidates.py
- # - interval: 1440
- # script: jobs/delete_unsaved_candidates.py
- # limit: ["01:00", "02:00"]
-
-twilio:
- # Twilio Sendgrid API configs
- # This needs to be set to a valid, Sendgrid-registered address in config.yaml
- from_email:
- # This needs to be obtained via Sendgrid setup on their site
- sendgrid_api_key:
-
- # Twilio SMS API configs
- # These values must be valid ones from the Twitter API console
- from_number:
- sms_account_sid:
- sms_auth_token:
-
-smtp:
- from_email: # This is both the email used to authenticate with smtplib and the sender address
- password:
- host: smtp.gmail.com # Default Gmail settings; modify as needed
- port: 587 # Default Gmail settings; modify as needed
-
-# This value needs to be either "sendgrid" or "smtp" (without quotes)
-email_service:
-
-invitations:
- enabled: False # If debug_login=True above, invite tokens won't be used during auth
- days_until_expiry: 3
- email_subject: "You've been invited to collaborate on SkyPortal"
- email_body_preamble: | # This can include HTML tags
- Welcome to SkyPortal!
-
- Some other text here.
-
-notifications:
- enabled: True
-
-standard_stars:
- ZTF: data/ztf_standards.csv
- ESO: data/eso_standards.csv
+ # This value needs to be either "sendgrid" or "smtp" (without quotes)
+ email_service: sendgrid