Skip to content

Create a new setup page#6671

Closed
CarolineDenis wants to merge 224 commits intomainfrom
issue-2931-1
Closed

Create a new setup page#6671
CarolineDenis wants to merge 224 commits intomainfrom
issue-2931-1

Conversation

@CarolineDenis
Copy link
Contributor

@CarolineDenis CarolineDenis commented Jun 16, 2025

Fixes #2931
Fixes #4832
Fixes #6210

Adds an initial set up page for configuring your database much like the Spwizard for Specify 6.

image

TODO:

Details
  • Title colors are white-on-white.
  • Make certain fields required (at least for user)
  • Error on backend doesn't stop you from progressing onto the next step.
  • Defaults for fields (So certain tree ranks can be true by default)
  • Progress indicator?
  • Backend should tell frontend which step to go to next. Needed to conditionally skip geography tree setup pages.
  • Setup can be finished before schema is finished being created. Need to have some sort of waiting page, or speed improvement? Thinking I can change the setup so you fill out the forms first, then at the very end the database is created.
  • Use new default files Feat (setup tool): Create default files for the new setup tool #7444
  • Create trees
  • Add documentation links
  • Only use localized strings
  • Add better error handling. User should be notified and sent back to the forms if anything goes wrong.
  • Check if worker is set up before continuing.
  • specifyuser_spprincipal table needs to exist before the setup process works on a new sp7 database. It also looks like the admin user isn't actually a proper admin. (fixed)

Future TODO:

Details
  • Password confirmation input doesn't work if you input the password into it first, then fill out the normal password field.
  • Notification polling seems to be causing errors on the backend when lingering on the setup page. Will investigate.
  • Need schema for API
  • Save form to localStorage. Also change the Save & Continue text maybe.
  • Normalize all keys (recursively) on backend api requests
  • Institution should have a value for all treedef fields once all trees are created. There should be api.finalize_institution or something similar.
  • There should be a functioning progress bar during the setup.
  • Speed up schema config localization setup. This is the biggest bottleneck in the setup process and it can be sped up significantly.
  • Fix two geography tree forms showing up on the overview sidebar.
  • Add documentation links and descriptions to all resources
  • Move over default tree creation functions to tree folder

Checklist

  • Self-review the PR after opening it to make sure the changes look good and
    self-explanatory (or properly documented)
  • Add relevant issue to release milestone
  • Add pr to documentation list
  • Add automated tests
  • Add a reverse migration if a migration is present in the PR

Testing instructions

Setup Forms

  • All setup forms must display correctly in both light mode and dark mode (based on system settings).
  • Users can only progress to the next form once all required fields are completed.
  • User selections must be reflected in the Overview sidebar in real time.
  • The setup flow must be submittable at the end.
  • Users must be able to log into the database after setup completes.

Default Data & Configuration

  • Default schema configuration captions and descriptions must be populated (not blank).
  • Default picklists must be created correctly.
    • Note: The Agent Type picklist does not exist in the schema config, this is expected.
  • Default preparation types must be created correctly.
  • All tree viewer pages must load without errors.
  • The admin user’s agent must be created correctly and must always include a last name.
  • An empty Global Preferences file must be created in App Resources.

Known Issue (Out of Scope):
The Accounts page and Stats page currently throw errors. These will be addressed separately in
Check default database constraint differences between Sp6 and Sp7 (#7551).

2. Tree Configuration During Setup
Storage Tree

  • Users must be able to modify the storage tree configuration during setup.
  • Changes must be correctly reflected in the application after setup.

Geography Tree

  • Users must be able to modify the geography tree configuration during setup.
  • Both options must work:
    Preloaded tree
    Empty tree

Taxon Tree

  • Users must be able to select a preloaded default tree when one exists.
  • The selected tree must be correctly preloaded and visible when the app opens.

Geology Discipline

  • Relevant tectonic and chronostratigraphic (chrono) trees must be created automatically.

3. Tree Viewer: Preloaded & Empty Trees

  • Users can create an empty tree from the tree viewer.
  • Users can modify rank configuration in the tree viewer.
  • Users can create a preloaded tree from the tree viewer.
  • Empty trees now have an upload button. The Upload Tree icon under root creation must work as expected.
  • Users can delete a rank with no associated nodes.
  • If ranks are deleted and a tree is then loaded, the tree configuration must be respected.
  • Users receive notifications for:
    Tree creation start
    Successful completion
    Errors or cancellation

4. Configuration Tool
Institution Tree Viewer

  • Users can click and drag to view all nodes in the institution tree.
  • Clicking a resource node opens the resource form.
  • Users can:
    • Edit a resource
    • Create new resources
    • Delete collections
  • An empty configuration is created automatically for new disciplines.
  • Users can collapse and expand sections in the left panel.
  • Users can switch between vertical and horizontal views in the institution tree viewer.

@grantfitzsimmons
Copy link
Member

Any specifyuser can be set as an institution admin by inserting the following, replacing the specifyuser_id with the ID of the newly created user:

INSERT INTO spuserpolicy (id, resource, action, collection_id, specifyuser_id) VALUES (1, '%', '%', null, 1);

@CarolineDenis
Copy link
Contributor Author

CarolineDenis commented Jul 9, 2025

NOTES:

@alesan99
Copy link
Contributor

@emenslin

I'm still running into issues when creating the db where after pressing create it sends me to a loading page for a minute and then sends me back to the last setup page but with no error this time

I think I figured out the issue, the loading page should be more reliable now 👍
Creating new tabs or refreshing the page should show the loading page also.

In the setup the catalog number formats should also include a preview of what they look like instead of just the format name.

I added the format to the name like schema config

Ready to test again 👍

Copy link
Collaborator

@emenslin emenslin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Make sure the forms look good in light mode and dark mode (It uses your system settings.)
    • You can only progress to the next form if you filled out all required fields.
    • Make sure your choices are shown in the Overview sidebar.
    • Make sure you can submit at the end.
  • Make sure you can log into the database.
  • Make sure the defaults schema config captions and descriptions appear (not blank).
  • Make sure default picklists were created correctly.
  • Make sure prep types were created correctly.
  • Make sure all tree viewer pages load.
  • Make sure the admin user's agent was created correctly. It should always have a last name.
  • Make sure an empty Global Preferences file was created in App Resources.

Looks good, all my previous comments were fixed or addressed and I didn't run into any new issues!

@alesan99 alesan99 requested a review from a team January 13, 2026 20:38
Copy link
Contributor

@Iwantexpresso Iwantexpresso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Make sure the forms look good in light mode and dark mode (It uses your system settings.)

    • You can only progress to the next form if you filled out all required fields.
    • Make sure your choices are shown in the Overview sidebar.
    • Make sure you can submit at the end.
  • Make sure you can log into the database.

  • NOTE: The dialog about the DB schema is expected behavior in this PR

  • Make sure the defaults schema config captions and descriptions appear (not blank).

  • Make sure default picklists were created correctly.

    • Note: The Agent Type picklist shouldn't exist in the schema config
  • Make sure prep types were created correctly.

  • Make sure all tree viewer pages load.

  • Make sure the admin user's agent was created correctly. It should always have a last name.

  • Make sure an empty Global Preferences file was created in App Resources.

  • Local testing:

  • Stop the specify worker and try to start the setup. You should get a clear error on the frontend.

  • Make sure no migration patches are needed initially (Currently only fix_schema_config is run upon database creation, which re-runs schema related migrations)

* Add a new treeDefault import feature

Fixes #6294

* Remove import

* init create_default_trees_view

* create_default_trees_view api change

* add create_default_trees_view fixes

* Add api to onClick fct

* init create_default_trees_task

* create_default_trees_task fix

* bypass tree validation to speedup default tree upload

* Lint code with ESLint and Prettier

Triggered by d4d2c5d on branch refs/heads/issue-6294

* Lint code with ESLint and Prettier

Triggered by 99d9de5 on branch refs/heads/issue-6294

* Lint code with ESLint and Prettier

Triggered by 1b79f85 on branch refs/heads/issue-6294

* test

* Lint code with ESLint and Prettier

Triggered by 9f9994f on branch refs/heads/issue-6294

* Lint code with ESLint and Prettier

Triggered by 832b665 on branch refs/heads/issue-6294

* Use frontend collection name

* Lint code with ESLint and Prettier

Triggered by 441d301 on branch refs/heads/issue-6294

* Add notification formatting to frontend

* Update API schema and name

* WIP Poll for tree creation progress

* Add label to progress bar

* Fix task error handling
Refactor CSV url getting

* Fix continous progress polling after errors

* Generalize initial taxon tree creation code

* Generalize add_default_taxon function

* WIP Add Geography and GeologicTimePeriod schemas

* Fix geography and geologictimeperiod mapping

* Fix: Always get treedef by name

* WIP retry failed rows

* Improve readability

* WIP accept row_count and mapping_url

* Improve success notification

* Add localization

* Fetch tree mapping from url

* Lint code with ESLint and Prettier

Triggered by 85e43e5 on branch refs/heads/issue-6294

* Remove non-background execution

* Fix provided colleciton name not being used

* Add stop button

* Lint code with ESLint and Prettier

Triggered by 43368ed on branch refs/heads/issue-6294

* Fix task_id in notifications
Add cancel button in default tree notification

* Lint code with ESLint and Prettier

Triggered by 7736f98 on branch refs/heads/issue-6294

* Use tree title as tree name

* Lint code with ESLint and Prettier

Triggered by d2f110d on branch refs/heads/issue-6294

* Add comments for lines_iter

* Use tree mapping for rank count
Accept mapping directly instead of just mappingUrl

* Update tree rank debug logs

* Get rank by column name

* Add default isenforced and isinfullname values

* WIP update tree mapping schema for rank config

* Update rank mapping schema

* Fix tree mapping

* Fix rank in mapping schema

* Add fullnameseparator to schema

* Add "fullnameseparator" to schema

* Add full name direction
Remove print statements

* Fix transaction

* WIP Increase timeout

* Fix automatic titles

* Add root node names per tree
Increase retries

* Remove close button from Default Tree creation dialog
Refactor

* Lint code with ESLint and Prettier

Triggered by 11a4d60 on branch refs/heads/issue-6294

* Simplify notifications
Add back in close button to tree creation dialog.
Add spacing between populated trees and empty trees

* Close add tree dialog on progress dialog close

* fix tests

---------

Co-authored-by: alec_dev <acwhite211@gmail.com>
Co-authored-by: alesan99 <alesanesp99@gmail.com>
Co-authored-by: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com>
@alesan99 alesan99 mentioned this pull request Jan 14, 2026
18 tasks
* Create a configuration page

* Start to adapt backend def for system config

* Fix new discipline def

* Reload page after addition

* Remove parent id

* Fetch data system after creation

* Simplify and comment backend defs

* Handle second call on backedn creation def

* efetch all system data after addition

* Simplify handle save

* Remove comment from type

* Lint code with ESLint and Prettier

Triggered by 6f46015 on branch refs/heads/issue-6213-1

* Add webonly view for discipline and div

* Feat: Add data check to define if geo is global & if tree def is present

* Feat: Add geo tree config dialog

* Fix: add handleSave

* Feat: Add taxon and geo config dialog for disciplines

* Fix: fix typos

* Feat: add collapsible arrows

* Feat: Add an edit option for each resource

* Refactor: Break the system config tool in smaller component

* Refactor: Exctract resource renderer

* type

* Import

* Refactor: Extract add button

* Fix type

* Lint code with ESLint and Prettier

Triggered by 7755ec2 on branch refs/heads/issue-6213-1

* Comment

* Fix: Update all info for hierarchy onDelete and onSave

* Feat: Allow to delete empty resources

* Fix: typo in api

* Fix: Typo

* Lint code with ESLint and Prettier

Triggered by 17d9759 on branch refs/heads/issue-6213-1

* Comment: Suggestion for userscopeid crash

* Lint code with ESLint and Prettier

Triggered by 9061ca6 on branch refs/heads/issue-6213-1

* Fix: Use new API to avoid UserGroupScopeId issues

* Fix: tests

* Fix: Improve spacing

* Refactor: Remove unnecessary dialog

* Feat: New icon for system config menu item

* Fix: improve collections margins

* Refactor: Remove imports

* Lint code with ESLint and Prettier

Triggered by 7794c7c on branch refs/heads/issue-6213-1

* fix: change chevron direction

Matches the collapse direction elsewhere in the app

* Lint code with ESLint and Prettier

Triggered by d48352f on branch refs/heads/issue-6213-1

* [UI]: Add a backgrounf behind the hierarchy

* Feat: Add tool list under ea ch resource

* Fix: Chnage edit tool to a link

* Fix: Add migrations for delete.CASCADE chnages

* [UI]: Add height to container

* [Fix]: Remove import and unused strings

* Lint code with ESLint and Prettier

Triggered by f94e933 on branch refs/heads/issue-6213-1

* fix: add hierarchy

feat: add visual for table view

When a change is made (delete or new), it also updates the visual immediately

feat: add option to switch orientation

fix: use schema captions instead

fix: fix the inverted vertical/horizontal visual

fix: make spacing more compact

fix: put the hierarchy on the left and svg on the right

feat: add color distinctions

fix(accessibility): fix positioning

* fix: sort out spacing and positioning

* fix(tests): remove unused import

* fix(localization): remove unused text

* fix: form when selecting a block

* fix: failing test

* fix(colors): make custom colors important

* Lint code with ESLint and Prettier

Triggered by e7d943c on branch refs/heads/visual-hierarchy

* fix: use correct forms

* Lint code with ESLint and Prettier

Triggered by 7360933 on branch refs/heads/visual-hierarchy

* Lint code with ESLint and Prettier

Triggered by 117c57c on branch refs/heads/issue-6213-1

* [Fix]: Add deletion cascade to preptype and cotype

* [Fix]: Add casdace to COGtyp

* [Fix]: Clear cache when deleting resources

* fix: handle long names for hierarchy nodes

* fix: key uniqueness and refresh process

* Lint code with ESLint and Prettier

Triggered by 7550b74 on branch refs/heads/issue-6213-1

* fix: reduce network requests

* fix: update imports

* Lint code with ESLint and Prettier

Triggered by f5cb5ce on branch refs/heads/issue-6213-1

* fix(ux): make the institutional hierarchy fit the view

* Lint code with ESLint and Prettier

Triggered by 21a847d on branch refs/heads/issue-6213-1

* fix: change colors...

I couldn't resist.

* fix: missing colors

* Lint code with ESLint and Prettier

Triggered by 238af20 on branch refs/heads/issue-6213-1

* Lint code with ESLint and Prettier

Triggered by a1e073b on branch refs/heads/issue-6213-1

* feat: add d3Zoom and improve sizing

* fix: remove unused import and add typing

* Lint code with ESLint and Prettier

Triggered by 8b2a849 on branch refs/heads/issue-6213-1

* fix: update migration number

* WIP fix: add cascade delete to remaining trees

* Revert "WIP fix: add cascade delete to remaining trees"

This reverts commit abcd291.

---------

Co-authored-by: alec_dev <acwhite211@gmail.com>
Co-authored-by: alesan99 <alesanesp99@gmail.com>
Co-authored-by: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com>
@Iwantexpresso Iwantexpresso requested a review from a team January 14, 2026 19:24
kwhuber

This comment was marked as duplicate.

Copy link
Contributor

@kwhuber kwhuber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Make sure the forms look good in light mode and dark mode (It uses your system settings.)
  • You can only progress to the next form if you filled out all required fields.
  • Make sure your choices are shown in the Overview sidebar.
  • Make sure you can submit at the end.
  • Make sure you can log into the database.
  • Make sure the defaults schema config captions and descriptions appear (not blank).
  • Make sure default picklists were created correctly.
    • Note: The Agent Type picklist shouldn't exist in the schema config
  • Make sure prep types were created correctly.
  • Make sure all tree viewer pages load.
  • Make sure the admin user's agent was created correctly. It should always have a last name.
  • Make sure an empty Global Preferences file was created in App Resources.

All looked good on my end!

…ees import + guided setup (#7647)

* Remove root node

* Add rank field configuration to forms
Fix nested objects in forms

* Add a new treeDefault import feature

Fixes #6294

* create_default_trees_task fix

* Add label to progress bar

* Lint code with ESLint and Prettier

Triggered by 7736f98 on branch refs/heads/issue-6294

* fix tests

* Update default files
Update field names

* WIP create trees using user's rank configuration

* Fix storage tree default file

* WIP Add default tree files for remaining trees

* Fix default files

* Fix applying user rank configuration

* fix(trees): increase tectonicunit rankids

* show province/state

* WIP allow pre-loading trees

* Create Geography tree on startup
Refactor default tree importing

* Preload taxon tree according to discipline type

* Create empty default tree for new disciplines

* Remove root from new taxon trees

* Add button to import tree into an empty tree

* fix tests

* Don't create root if it already exists

* Fix: Chnage full name separator to be a space

* Remove pre-load taxon tree option
Add collapsible tree rank sections
Add separator to Geography tree
Add description to pre-load tree option

* Fix: Update localization

* correct parent ranks when creating a new tree

* Update tree defaults

* Lint code with ESLint and Prettier

Triggered by 29e0916 on branch refs/heads/issue-7593

* Rename setup tool tree functions

* Update tree defaults

* Remove taxon tree configuration
Disable preload checkbox if there is no tree to preload
Fix tests

* Lint code with ESLint and Prettier

Triggered by a45eb04 on branch refs/heads/issue-7593

* WIP use table for tree rank config

* WIP add taxon tree selector

* Enable pre-loading when selecting taxon tree

* Fix tests

* Fix tests

* Lint code with ESLint and Prettier

Triggered by ad19264 on branch refs/heads/issue-7593

* Fix labels
Improve styling

* Make table rounded

* Fix table borders

* [Guided Setup] Optimize default tree creation (#7669)

* optimize tree creation

* Fix duplication

* Renumber tree and set full names

* Lint code with ESLint and Prettier

Triggered by cb60fbc on branch refs/heads/issue-7641-1

* Improve tree selector formatting
Clean up backend code for trees in setup tool

* Lint code with ESLint and Prettier

Triggered by a75062b on branch refs/heads/issue-7593

* Fix tree preview in overview

* Fallback to mammal tree if taxon tree has no default ranks

* Fix UnboundLocalError

* try supporting multiple tree config formats with _extract_levels

* Update all tree default to use same schema

---------

Co-authored-by: Caroline D <108160931+CarolineDenis@users.noreply.github.com>
Co-authored-by: alec_dev <acwhite211@gmail.com>
Co-authored-by: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com>
@alesan99 alesan99 requested review from emenslin and kwhuber January 28, 2026 15:48
@alesan99
Copy link
Contributor

@specify/ux-testing #7647 has been merged into this PR to simplify testing 👍

If you left a review on that PR please try to recreate your issues from that to make sure they have been fixed here

Triggered by fd7cb4b on branch refs/heads/issue-2931-1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

8 participants