histomicsui 1.7.2.dev2__tar.gz → 2.0.0a2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/.circleci/config.yml +86 -4
- histomicsui-2.0.0a2/.circleci/get_version.py +19 -0
- histomicsui-2.0.0a2/.circleci/publish_pypi.sh +16 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/.git-blame-ignore-revs +4 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/.gitignore +1 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/.pre-commit-config.yaml +2 -1
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/MANIFEST.in +3 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/PKG-INFO +12 -3
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/README.rst +6 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/config_options.rst +0 -14
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/__init__.py +36 -111
- histomicsui-2.0.0a2/histomicsui/girder_worker_plugin.py +14 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/handlers.py +10 -163
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/hui_resource.py +4 -1
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/system.py +26 -1
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/tcga.py +2 -2
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui.egg-info/PKG-INFO +12 -3
- histomicsui-2.0.0a2/histomicsui.egg-info/SOURCES.txt +81 -0
- histomicsui-2.0.0a2/histomicsui.egg-info/entry_points.txt +5 -0
- histomicsui-2.0.0a2/histomicsui.egg-info/requires.txt +9 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/requirements-dev.txt +2 -2
- histomicsui-2.0.0a2/requirements-girder5.txt +3 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/ruff.toml +3 -0
- histomicsui-2.0.0a2/sample_data/Easy1.png +0 -0
- histomicsui-2.0.0a2/sample_data/sample_svs_image.TCGA-DU-6399-01A-01-TS1.e8eb65de-d63e-42db-af6f-14fefbbdf7bd.svs +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/setup.py +10 -3
- histomicsui-2.0.0a2/tests/conftest.py +31 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_handlers.py +3 -25
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_hui_rest.py +23 -19
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tox.ini +27 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/app.js +0 -93
- histomicsui-1.7.2.dev2/histomicsui/web_client/collections/StyleCollection.js +0 -17
- histomicsui-1.7.2.dev2/histomicsui/web_client/collections/UserCollection.js +0 -12
- histomicsui-1.7.2.dev2/histomicsui/web_client/collections/index.js +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/confirmDialog.js +0 -53
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/editElement.js +0 -137
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/editRegionOfInterest.js +0 -199
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/editStyleGroups.js +0 -325
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/index.js +0 -17
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/metadataPlot.js +0 -61
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/openAnnotatedImage.js +0 -176
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/openImage.js +0 -76
- histomicsui-1.7.2.dev2/histomicsui/web_client/dialogs/saveAnnotation.js +0 -545
- histomicsui-1.7.2.dev2/histomicsui/web_client/events.js +0 -3
- histomicsui-1.7.2.dev2/histomicsui/web_client/index.js +0 -20
- histomicsui-1.7.2.dev2/histomicsui/web_client/main.js +0 -28
- histomicsui-1.7.2.dev2/histomicsui/web_client/models/StyleModel.js +0 -38
- histomicsui-1.7.2.dev2/histomicsui/web_client/models/index.js +0 -5
- histomicsui-1.7.2.dev2/histomicsui/web_client/package.json +0 -118
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/AnnotationSelector.js +0 -658
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/DrawWidget.js +0 -1058
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/FrameSelectorWidget.js +0 -86
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/MetadataPlot.js +0 -688
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/MetadataWidget.js +0 -118
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/OverviewWidget.js +0 -197
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/RegionSelector.js +0 -36
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/ZoomWidget.js +0 -289
- histomicsui-1.7.2.dev2/histomicsui/web_client/panels/index.js +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/router.js +0 -50
- histomicsui-1.7.2.dev2/histomicsui/web_client/routes.js +0 -13
- histomicsui-1.7.2.dev2/histomicsui/web_client/static/favicon.png +0 -0
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/body/configView.styl +0 -18
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/body/image.styl +0 -79
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/dialogs/editStyleGroups.styl +0 -15
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/dialogs/metadataPlot.styl +0 -16
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/dialogs/openAnnotatedImage.styl +0 -15
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/dialogs/saveAnnotation.styl +0 -45
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/layout/header.styl +0 -57
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/layout/headerAnalyses.styl +0 -98
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/layout/headerImage.styl +0 -8
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/layout/layout.styl +0 -120
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/annotationSelector.styl +0 -99
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/drawWidget.styl +0 -154
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/frameSelectorWidget.styl +0 -151
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/metadataPlot.styl +0 -35
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/metadataWidget.styl +0 -48
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/overviewWidget.styl +0 -5
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/regionSelector.styl +0 -4
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/panels/zoomWidget.styl +0 -52
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/popover/annotationContextMenu.styl +0 -6
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/popover/annotationPopover.styl +0 -79
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/views/itemList.styl +0 -11
- histomicsui-1.7.2.dev2/histomicsui/web_client/stylesheets/views/searchResultsView.styl +0 -5
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/body/configView.pug +0 -106
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/body/image.pug +0 -21
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/annotatedImageList.pug +0 -15
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/confirmDialog.pug +0 -14
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/editElement.pug +0 -45
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/editRegionOfInterest.pug +0 -40
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/editStyleGroups.pug +0 -64
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/metadataPlot.pug +0 -51
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/openAnnotatedImage.pug +0 -20
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/openImage.pug +0 -10
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/dialogs/saveAnnotation.pug +0 -109
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/layout/header.pug +0 -23
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/layout/headerAnalyses.pug +0 -95
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/layout/headerImage.pug +0 -40
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/layout/headerUser.pug +0 -24
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/layout/layout.pug +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/annotationSelector.pug +0 -80
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/drawWidget.pug +0 -110
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/drawWidgetElement.pug +0 -63
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/frameSelectorWidget.pug +0 -8
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/metadataPlot.pug +0 -13
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/metadataWidgetPanel.pug +0 -16
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/overviewWidget.pug +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/panel.pug +0 -18
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/regionSelector.pug +0 -9
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/panels/zoomWidget.pug +0 -32
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/popover/annotationContextMenu.pug +0 -16
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/popover/annotationPopover.pug +0 -49
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/popover/annotationPopoverMetadata.pug +0 -13
- histomicsui-1.7.2.dev2/histomicsui/web_client/templates/popover/pixelmapContextMenu.pug +0 -6
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/HierarchyWidget.js +0 -13
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/JobDetailsWidget.js +0 -18
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/View.js +0 -48
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/body/ConfigView.js +0 -190
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/body/ImageView.js +0 -1799
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/body/index.js +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/index.js +0 -11
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/itemList.js +0 -106
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/itemPage.js +0 -57
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/HeaderAnalysesView.js +0 -56
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/HeaderImageView.js +0 -83
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/HeaderUserView.js +0 -15
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/HeaderView.js +0 -56
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/LoginView.js +0 -15
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/layout/index.js +0 -9
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/popover/AnnotationContextMenu.js +0 -124
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/popover/AnnotationPopover.js +0 -355
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/popover/PixelmapContextMenu.js +0 -45
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/popover/index.js +0 -7
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/searchResultsView.js +0 -48
- histomicsui-1.7.2.dev2/histomicsui/web_client/views/utils.js +0 -82
- histomicsui-1.7.2.dev2/histomicsui/web_client/vue/components/ColorPickerInput.vue +0 -117
- histomicsui-1.7.2.dev2/histomicsui/web_client/vue/components/EditHeatmapOrGridData.vue +0 -358
- histomicsui-1.7.2.dev2/histomicsui/web_client/vue/components/EditHeatmapOrGridDataContainer.vue +0 -36
- histomicsui-1.7.2.dev2/histomicsui/web_client/webpack.helper.js +0 -45
- histomicsui-1.7.2.dev2/histomicsui.egg-info/SOURCES.txt +0 -183
- histomicsui-1.7.2.dev2/histomicsui.egg-info/entry_points.txt +0 -2
- histomicsui-1.7.2.dev2/histomicsui.egg-info/requires.txt +0 -6
- histomicsui-1.7.2.dev2/tests/test_web_client.py +0 -152
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/.editorconfig +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/LICENSE +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/NOTICE +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/codecov.yml +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/controls.rst +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/images/difference.gif +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/images/intersect.gif +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/images/union.gif +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/images/xor.gif +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/docs/slicer_cli_plugins.rst +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/constants.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/__init__.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/aperio.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/case.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/cohort.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/image.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/meta.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/pathology.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/models/slide.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/__init__.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/aperio.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/rest/image_browse_resource.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui/webroot.mako +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui.egg-info/dependency_links.txt +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui.egg-info/not-zip-safe +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/histomicsui.egg-info/top_level.txt +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/pyproject.toml +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/setup.cfg +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/__init__.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/datastore.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/girder_utilities.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/.histomicsui_config.yaml +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/sample.anot +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/sample.meta +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/sample_girder_id.anot +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/test_analysis_detection.xml +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_files/test_analysis_features.xml +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_image_browse_endpoints.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_load.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/test_tcga.py +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/.eslintrc +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/analysisSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/annotationSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/girderUISpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/huiSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/huiTest.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/itemSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/metadataPanelSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/metadataPlotSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/overviewPanelSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/panelLayoutSpec.js +0 -0
- {histomicsui-1.7.2.dev2 → histomicsui-2.0.0a2}/tests/web_client_specs/pixelmapCategorySpec.js +0 -0
|
@@ -9,15 +9,59 @@ executors:
|
|
|
9
9
|
command: bash -c "mkdir /dev/shm/mongo && mongod --nojournal --dbpath=/dev/shm/mongo --noauth --bind_ip_all"
|
|
10
10
|
- image: rabbitmq
|
|
11
11
|
commands:
|
|
12
|
+
use_nvm:
|
|
13
|
+
description: "Use nvm"
|
|
14
|
+
parameters:
|
|
15
|
+
node:
|
|
16
|
+
type: string
|
|
17
|
+
default: v20
|
|
18
|
+
steps:
|
|
19
|
+
- run:
|
|
20
|
+
name: Use nvm
|
|
21
|
+
# see https://discuss.circleci.com/t/nvm-does-not-change-node-version-on-machine/28973/14
|
|
22
|
+
command: |
|
|
23
|
+
echo 'export NVM_DIR="/root/.nvm"' >> $BASH_ENV
|
|
24
|
+
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV
|
|
25
|
+
- restore_cache:
|
|
26
|
+
name: Restore nvm cache
|
|
27
|
+
key: v1-nvm-cache-<< parameters.node >>
|
|
28
|
+
- run:
|
|
29
|
+
name: Switch node versions
|
|
30
|
+
command: |
|
|
31
|
+
nvm install << parameters.node >>
|
|
32
|
+
nvm alias default << parameters.node >>
|
|
33
|
+
NODE_DIR=$(dirname $(which node))
|
|
34
|
+
echo "export PATH=$NODE_DIR:\$PATH" >> $BASH_ENV
|
|
35
|
+
- run:
|
|
36
|
+
name: Check node versions
|
|
37
|
+
command: |
|
|
38
|
+
node --version
|
|
39
|
+
npm --version
|
|
40
|
+
build_client:
|
|
41
|
+
description: "Build HistomicsUI client"
|
|
42
|
+
steps:
|
|
43
|
+
- run:
|
|
44
|
+
name: Build client
|
|
45
|
+
command: |
|
|
46
|
+
pushd histomicsui/web_client
|
|
47
|
+
npm ci
|
|
48
|
+
npm run build
|
|
49
|
+
popd
|
|
50
|
+
install_playwright:
|
|
51
|
+
description: "Install playwright"
|
|
52
|
+
steps:
|
|
53
|
+
- run:
|
|
54
|
+
name: Install playwright with dependencies
|
|
55
|
+
command: |
|
|
56
|
+
pushd histomicsui/web_client
|
|
57
|
+
npx playwright install --with-deps
|
|
58
|
+
popd
|
|
12
59
|
tox:
|
|
13
60
|
description: "Run tox"
|
|
14
61
|
parameters:
|
|
15
62
|
env:
|
|
16
63
|
type: string
|
|
17
64
|
steps:
|
|
18
|
-
- run:
|
|
19
|
-
name: Preinstall phantomjs to work around an npm permission issue
|
|
20
|
-
command: npm install -g phantomjs-prebuilt --unsafe-perm
|
|
21
65
|
- run:
|
|
22
66
|
name: Run tests via tox
|
|
23
67
|
# Piping through cat does less buffering of the output but can
|
|
@@ -41,6 +85,8 @@ jobs:
|
|
|
41
85
|
executor: toxandnode
|
|
42
86
|
steps:
|
|
43
87
|
- checkout
|
|
88
|
+
- use_nvm
|
|
89
|
+
- build_client
|
|
44
90
|
- tox:
|
|
45
91
|
env: py38
|
|
46
92
|
- coverage
|
|
@@ -48,6 +94,8 @@ jobs:
|
|
|
48
94
|
executor: toxandnode
|
|
49
95
|
steps:
|
|
50
96
|
- checkout
|
|
97
|
+
- use_nvm
|
|
98
|
+
- build_client
|
|
51
99
|
- tox:
|
|
52
100
|
env: py39
|
|
53
101
|
- coverage
|
|
@@ -55,6 +103,8 @@ jobs:
|
|
|
55
103
|
executor: toxandnode
|
|
56
104
|
steps:
|
|
57
105
|
- checkout
|
|
106
|
+
- use_nvm
|
|
107
|
+
- build_client
|
|
58
108
|
- tox:
|
|
59
109
|
env: py310
|
|
60
110
|
- coverage
|
|
@@ -62,6 +112,8 @@ jobs:
|
|
|
62
112
|
executor: toxandnode
|
|
63
113
|
steps:
|
|
64
114
|
- checkout
|
|
115
|
+
- use_nvm
|
|
116
|
+
- build_client
|
|
65
117
|
- tox:
|
|
66
118
|
env: py311
|
|
67
119
|
- coverage
|
|
@@ -69,6 +121,8 @@ jobs:
|
|
|
69
121
|
executor: toxandnode
|
|
70
122
|
steps:
|
|
71
123
|
- checkout
|
|
124
|
+
- use_nvm
|
|
125
|
+
- build_client
|
|
72
126
|
- tox:
|
|
73
127
|
env: py312
|
|
74
128
|
- coverage
|
|
@@ -76,13 +130,30 @@ jobs:
|
|
|
76
130
|
executor: toxandnode
|
|
77
131
|
steps:
|
|
78
132
|
- checkout
|
|
133
|
+
- use_nvm
|
|
134
|
+
- build_client
|
|
79
135
|
- tox:
|
|
80
136
|
env: py313
|
|
81
137
|
- coverage
|
|
138
|
+
web_client:
|
|
139
|
+
executor: toxandnode
|
|
140
|
+
environment:
|
|
141
|
+
CI: "true"
|
|
142
|
+
HEADLESS: "true"
|
|
143
|
+
GIRDER_CLIENT_TESTING_MONGO_URI: mongodb://localhost:27017
|
|
144
|
+
steps:
|
|
145
|
+
- checkout
|
|
146
|
+
- use_nvm
|
|
147
|
+
- build_client
|
|
148
|
+
- install_playwright
|
|
149
|
+
- tox:
|
|
150
|
+
env: webtest
|
|
82
151
|
noanalysis:
|
|
83
152
|
executor: toxandnode
|
|
84
153
|
steps:
|
|
85
154
|
- checkout
|
|
155
|
+
- use_nvm
|
|
156
|
+
- build_client
|
|
86
157
|
- tox:
|
|
87
158
|
env: noanalysis
|
|
88
159
|
- coverage
|
|
@@ -97,6 +168,8 @@ jobs:
|
|
|
97
168
|
- image: girder/tox-and-node
|
|
98
169
|
steps:
|
|
99
170
|
- checkout
|
|
171
|
+
- use_nvm
|
|
172
|
+
- build_client
|
|
100
173
|
- deploy:
|
|
101
174
|
name: Run tests via tox
|
|
102
175
|
# Piping through cat does less buffering of the output but can
|
|
@@ -163,6 +236,13 @@ workflows:
|
|
|
163
236
|
branches:
|
|
164
237
|
ignore:
|
|
165
238
|
- gh-pages
|
|
239
|
+
- web_client:
|
|
240
|
+
filters:
|
|
241
|
+
tags:
|
|
242
|
+
only: /^v.*/
|
|
243
|
+
branches:
|
|
244
|
+
ignore:
|
|
245
|
+
- gh-pages
|
|
166
246
|
- release:
|
|
167
247
|
requires:
|
|
168
248
|
- py38
|
|
@@ -176,4 +256,6 @@ workflows:
|
|
|
176
256
|
tags:
|
|
177
257
|
only: /^v.*/
|
|
178
258
|
branches:
|
|
179
|
-
only:
|
|
259
|
+
only:
|
|
260
|
+
- master
|
|
261
|
+
- girder-5
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
import setuptools_scm
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main():
|
|
7
|
+
version = setuptools_scm.get_version()
|
|
8
|
+
expected_version_regex = r'(\d+\.\d+\.\d+)a(\d+).+$'
|
|
9
|
+
match = re.match(expected_version_regex, version)
|
|
10
|
+
if not match:
|
|
11
|
+
error_message = f'Version {version} does not match the expected format'
|
|
12
|
+
raise ValueError(error_message)
|
|
13
|
+
base_version = match.group(1)
|
|
14
|
+
alpha_version = match.group(2)
|
|
15
|
+
print(f'{base_version}a{alpha_version}')
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
if __name__ == '__main__':
|
|
19
|
+
main()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION=`python -m setuptools_scm | sed "s/.* //"`
|
|
6
|
+
if [ "${CIRCLE_BRANCH-:}" = "master" ]; then
|
|
7
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION=`echo $SETUPTOOLS_SCM_PRETEND_VERSION | sed "s/\+.*$//"`
|
|
8
|
+
elif [ "${CIRCLE_BRANCH-:}" = "girder-5" ]; then
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
+
pip install setuptools-scm
|
|
11
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION=$(python "$SCRIPT_DIR/get_version.py")
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
python -m build
|
|
15
|
+
twine check dist/*
|
|
16
|
+
twine upload --skip-existing dist/*
|
|
@@ -13,3 +13,7 @@ f1c2190ab04ab867c655b4217f807e9f567772c8
|
|
|
13
13
|
9475b89640a6de84788b79ba68d5ed9aeb1a9ff4
|
|
14
14
|
# PR 359: Apply ruff formatting and linting
|
|
15
15
|
97b21f031e4769043b2c3a464ea4cf8e9a60c219
|
|
16
|
+
# PR 443: Format Girder 5
|
|
17
|
+
d184bf1c2d5c12e643f8e5536c7707744c72e7ba
|
|
18
|
+
0e0e6009391bcbf9bde7be6ebbb121cf84ae1f32
|
|
19
|
+
cbc3c3952acef976b7b0be732e9ebb7686e98c8e
|
|
@@ -48,7 +48,8 @@ repos:
|
|
|
48
48
|
- id: codespell
|
|
49
49
|
args:
|
|
50
50
|
- --ignore-words-list
|
|
51
|
-
- "hist,indext,pixelx,thex,subtile"
|
|
51
|
+
- "hist,indext,pixelx,thex,subtile,afterAll"
|
|
52
|
+
- --exclude-file=histomicsui/web_client/package-lock.json
|
|
52
53
|
- repo: https://github.com/syntaqx/git-hooks
|
|
53
54
|
rev: v0.0.18
|
|
54
55
|
hooks:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: histomicsui
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0a2
|
|
4
4
|
Summary: Organize, visualize, and analyze histology images.
|
|
5
5
|
Home-page: https://github.com/DigitalSlideArchive/histomicsui
|
|
6
6
|
Author: Kitware, Inc.
|
|
@@ -21,8 +21,11 @@ Requires-Python: >=3.8
|
|
|
21
21
|
Description-Content-Type: text/x-rst
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
License-File: NOTICE
|
|
24
|
-
Requires-Dist: girder
|
|
25
|
-
Requires-Dist: girder-
|
|
24
|
+
Requires-Dist: girder>=5.0.0a2
|
|
25
|
+
Requires-Dist: girder-large-image==1.32.2a115
|
|
26
|
+
Requires-Dist: girder-large-image-annotation==1.32.2a115
|
|
27
|
+
Requires-Dist: large-image-tasks==1.32.2a115
|
|
28
|
+
Requires-Dist: large-image-converter==1.32.2a115
|
|
26
29
|
Requires-Dist: cachetools
|
|
27
30
|
Requires-Dist: orjson
|
|
28
31
|
Provides-Extra: analysis
|
|
@@ -110,6 +113,12 @@ Now install the histomicsui package, have Girder build its UI, and start the Gir
|
|
|
110
113
|
girder build
|
|
111
114
|
girder serve
|
|
112
115
|
|
|
116
|
+
Note that ``girder serve`` should only be used in development. In production, use a WSGI server such as gunicorn, e.g.::
|
|
117
|
+
|
|
118
|
+
.. code-block:: bash
|
|
119
|
+
|
|
120
|
+
gunicorn girder.wsgi:app --bind=localhost:8080 --workers=4 --preload
|
|
121
|
+
|
|
113
122
|
To use Girder Worker:
|
|
114
123
|
|
|
115
124
|
.. code-block:: bash
|
|
@@ -68,6 +68,12 @@ Now install the histomicsui package, have Girder build its UI, and start the Gir
|
|
|
68
68
|
girder build
|
|
69
69
|
girder serve
|
|
70
70
|
|
|
71
|
+
Note that ``girder serve`` should only be used in development. In production, use a WSGI server such as gunicorn, e.g.::
|
|
72
|
+
|
|
73
|
+
.. code-block:: bash
|
|
74
|
+
|
|
75
|
+
gunicorn girder.wsgi:app --bind=localhost:8080 --workers=4 --preload
|
|
76
|
+
|
|
71
77
|
To use Girder Worker:
|
|
72
78
|
|
|
73
79
|
.. code-block:: bash
|
|
@@ -50,7 +50,6 @@ _________________
|
|
|
50
50
|
fillColor: rgba(255, 0, 0, 0.25)
|
|
51
51
|
lineColor: rgb(255, 0, 0)
|
|
52
52
|
lineWidth: 2
|
|
53
|
-
hotkey: r
|
|
54
53
|
-
|
|
55
54
|
id: Green
|
|
56
55
|
fillColor: rgba(0, 128, 0, 0.25)
|
|
@@ -62,19 +61,6 @@ _________________
|
|
|
62
61
|
lineColor: rgb(0, 0, 255)
|
|
63
62
|
lineWidth: 2
|
|
64
63
|
|
|
65
|
-
If a hotkey is specified for a group, it will only be active if the group was loaded from the config file. That is, moving to another folder where the config file does not apply will disable the hotkey. If you want hotkeys to have modifiers (e.g., require that alt, ctrl, or meta be pressed or explicitly NOT pressed), you can add a hotkey section:
|
|
66
|
-
|
|
67
|
-
::
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
hotkeys:
|
|
71
|
-
-
|
|
72
|
-
key: r
|
|
73
|
-
ctrl: true
|
|
74
|
-
alt: false
|
|
75
|
-
action: group
|
|
76
|
-
param: Red
|
|
77
|
-
|
|
78
64
|
UI Settings
|
|
79
65
|
___________
|
|
80
66
|
|
|
@@ -19,10 +19,10 @@ import logging
|
|
|
19
19
|
import os
|
|
20
20
|
import re
|
|
21
21
|
from functools import wraps
|
|
22
|
+
from pathlib import Path
|
|
22
23
|
|
|
23
|
-
import cherrypy
|
|
24
24
|
from bson import json_util
|
|
25
|
-
from girder import events,
|
|
25
|
+
from girder import events, plugin
|
|
26
26
|
from girder.api import access
|
|
27
27
|
from girder.api.rest import getCurrentToken
|
|
28
28
|
from girder.constants import AssetstoreType
|
|
@@ -32,13 +32,11 @@ from girder.models.file import File
|
|
|
32
32
|
from girder.models.folder import Folder
|
|
33
33
|
from girder.models.item import Item
|
|
34
34
|
from girder.models.setting import Setting
|
|
35
|
-
from girder.
|
|
36
|
-
from girder.settings import SettingDefault, SettingKey
|
|
35
|
+
from girder.settings import SettingDefault
|
|
37
36
|
from girder.utility import config
|
|
38
37
|
from girder.utility import path as path_util
|
|
39
38
|
from girder.utility import setting_utilities
|
|
40
39
|
from girder.utility.model_importer import ModelImporter
|
|
41
|
-
from girder.utility.webroot import Webroot
|
|
42
40
|
from pkg_resources import DistributionNotFound, get_distribution
|
|
43
41
|
|
|
44
42
|
from . import handlers, rest
|
|
@@ -56,16 +54,7 @@ except DistributionNotFound:
|
|
|
56
54
|
# package is not installed
|
|
57
55
|
pass
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
# system very noisy. Stop that.
|
|
61
|
-
while logging.root.hasHandlers():
|
|
62
|
-
logging.root.removeHandler(logging.root.handlers[0])
|
|
63
|
-
logging.root.addHandler(logging.NullHandler())
|
|
64
|
-
|
|
65
|
-
_template = os.path.join(
|
|
66
|
-
os.path.dirname(__file__),
|
|
67
|
-
'webroot.mako',
|
|
68
|
-
)
|
|
57
|
+
logger = logging.getLogger(__name__)
|
|
69
58
|
|
|
70
59
|
|
|
71
60
|
def patchCookieParsing():
|
|
@@ -99,42 +88,6 @@ def patchCookieParsing():
|
|
|
99
88
|
pass
|
|
100
89
|
|
|
101
90
|
|
|
102
|
-
def betterInvalidateJSandCSSCaches(root):
|
|
103
|
-
from girder import constants
|
|
104
|
-
|
|
105
|
-
origRenderHTML = root._renderHTML
|
|
106
|
-
|
|
107
|
-
def _renderHTML(self):
|
|
108
|
-
topBuiltDir = os.path.join(constants.STATIC_ROOT_DIR, 'built')
|
|
109
|
-
result = origRenderHTML()
|
|
110
|
-
lastUpdate = 0
|
|
111
|
-
for filename in {
|
|
112
|
-
'girder_lib.min.js', 'girder_app.min.js', 'girder_lib.min.css',
|
|
113
|
-
'Girder_Favicon.png'}:
|
|
114
|
-
filepath = os.path.join(topBuiltDir, filename)
|
|
115
|
-
if os.path.exists(filepath):
|
|
116
|
-
lastUpdate = max(lastUpdate, os.path.getmtime(filepath))
|
|
117
|
-
builtDir = os.path.join(constants.STATIC_ROOT_DIR, 'built', 'plugins')
|
|
118
|
-
for pluginName in self.vars['plugins']:
|
|
119
|
-
for filepath in [
|
|
120
|
-
os.path.join(builtDir, pluginName, 'plugin.min.css'),
|
|
121
|
-
os.path.join(builtDir, pluginName, 'plugin.min.js'),
|
|
122
|
-
]:
|
|
123
|
-
if os.path.exists(filepath):
|
|
124
|
-
lastUpdate = max(lastUpdate, os.path.getmtime(filepath))
|
|
125
|
-
luParam = '?_=%d' % int(lastUpdate * 1000)
|
|
126
|
-
while True:
|
|
127
|
-
match = re.search(
|
|
128
|
-
r'<(link rel="(icon|stylesheet)" [^>]*href="[^>?"]*\.(css|png)|'
|
|
129
|
-
r'script src="[^>?"]*.js)">', result)
|
|
130
|
-
if not match:
|
|
131
|
-
break
|
|
132
|
-
result = result[:match.span()[1] - 2] + luParam + result[match.span()[1] - 2:]
|
|
133
|
-
return result
|
|
134
|
-
|
|
135
|
-
root._renderHTML = _renderHTML.__get__(root)
|
|
136
|
-
|
|
137
|
-
|
|
138
91
|
@setting_utilities.validator({
|
|
139
92
|
PluginSettings.HUI_DEFAULT_DRAW_STYLES,
|
|
140
93
|
PluginSettings.HUI_PANEL_LAYOUT,
|
|
@@ -276,37 +229,6 @@ def _saveJob(event):
|
|
|
276
229
|
pass
|
|
277
230
|
|
|
278
231
|
|
|
279
|
-
class WebrootHistomicsUI(Webroot):
|
|
280
|
-
def _renderHTML(self):
|
|
281
|
-
self.updateHtmlVars({
|
|
282
|
-
'title': Setting().get(PluginSettings.HUI_BRAND_NAME),
|
|
283
|
-
'huiBrandName': Setting().get(PluginSettings.HUI_BRAND_NAME),
|
|
284
|
-
'huiBrandColor': Setting().get(PluginSettings.HUI_BRAND_COLOR),
|
|
285
|
-
'huiBannerColor': Setting().get(PluginSettings.HUI_BANNER_COLOR),
|
|
286
|
-
'huiHelpURL': Setting().get(PluginSettings.HUI_HELP_URL),
|
|
287
|
-
'huiHelpTooltip': Setting().get(PluginSettings.HUI_HELP_TOOLTIP),
|
|
288
|
-
'huiHelpText': Setting().get(PluginSettings.HUI_HELP_TEXT),
|
|
289
|
-
})
|
|
290
|
-
return super()._renderHTML()
|
|
291
|
-
|
|
292
|
-
def GET(self, **params):
|
|
293
|
-
print(params)
|
|
294
|
-
if params.get('token'):
|
|
295
|
-
try:
|
|
296
|
-
token = Token().load(params['token'], force=True, objectId=False)
|
|
297
|
-
if token:
|
|
298
|
-
cookie = cherrypy.response.cookie
|
|
299
|
-
cookie['girderToken'] = str(token['_id'])
|
|
300
|
-
cookie['girderToken']['path'] = '/'
|
|
301
|
-
days = float(Setting().get(SettingKey.COOKIE_LIFETIME))
|
|
302
|
-
cookie['girderToken']['expires'] = int(days * 3600 * 24)
|
|
303
|
-
cookie['girderToken']['sameSite'] = 'None'
|
|
304
|
-
cookie['girderToken']['secure'] = True
|
|
305
|
-
except Exception:
|
|
306
|
-
pass
|
|
307
|
-
return self._renderHTML()
|
|
308
|
-
|
|
309
|
-
|
|
310
232
|
def restrict_downloads(info):
|
|
311
233
|
"""
|
|
312
234
|
If restrict_downloads is configured, modify endpoints to do that.
|
|
@@ -397,7 +319,6 @@ def cleanupFSAssetstores():
|
|
|
397
319
|
|
|
398
320
|
class GirderPlugin(plugin.GirderPlugin):
|
|
399
321
|
DISPLAY_NAME = 'HistomicsUI'
|
|
400
|
-
CLIENT_SOURCE_PATH = 'web_client'
|
|
401
322
|
|
|
402
323
|
def load(self, info): # noqa
|
|
403
324
|
plugin.getPlugin('jobs').load(info)
|
|
@@ -422,8 +343,8 @@ class GirderPlugin(plugin.GirderPlugin):
|
|
|
422
343
|
ModelImporter.registerModel('slide', Slide, 'histomicsui')
|
|
423
344
|
|
|
424
345
|
rest.addEndpoints(info['apiRoot'])
|
|
425
|
-
info['serverRoot'].updateHtmlVars({
|
|
426
|
-
|
|
346
|
+
# info['serverRoot'].updateHtmlVars({
|
|
347
|
+
# 'brandName': Setting().get(SettingKey.BRAND_NAME)})
|
|
427
348
|
# Better virtual folder support
|
|
428
349
|
if not getattr(Folder, '_childItemsBeforeHUI', None):
|
|
429
350
|
Folder._childItemsBeforeHUI = Folder.childItems
|
|
@@ -443,24 +364,39 @@ class GirderPlugin(plugin.GirderPlugin):
|
|
|
443
364
|
|
|
444
365
|
path_util.lookUpToken = lookUpToken
|
|
445
366
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
367
|
+
plugin.registerPluginStaticContent(
|
|
368
|
+
'histomicsui',
|
|
369
|
+
css=['/style.css'],
|
|
370
|
+
js=[
|
|
371
|
+
'/girder-plugin-histomics-ui.umd.cjs',
|
|
372
|
+
'/extra/plotly.js',
|
|
373
|
+
],
|
|
374
|
+
staticDir=Path(__file__).parent / 'web_client' / 'dist',
|
|
375
|
+
tree=info['serverRoot'],
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
webroot = os.getenv('HUI_WEBROOT_PATH', False)
|
|
379
|
+
if webroot:
|
|
380
|
+
Setting().set(PluginSettings.HUI_WEBROOT_PATH, webroot)
|
|
381
|
+
info['serverRoot'].mount(None, f'/{Setting().get(PluginSettings.HUI_WEBROOT_PATH)}', {
|
|
382
|
+
'/': {
|
|
383
|
+
'tools.staticdir.on': True,
|
|
384
|
+
'tools.staticdir.dir': Path(__file__).parent / 'web_client' / 'dist-app',
|
|
385
|
+
'tools.staticdir.index': 'index.html',
|
|
386
|
+
},
|
|
387
|
+
})
|
|
452
388
|
|
|
453
389
|
# The interface is always available under hui and also available
|
|
454
390
|
# under the specified path.
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
setattr(info['serverRoot'], webrootPath, huiRoot)
|
|
459
|
-
if alternateWebrootPath:
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
info['serverRoot'].girder = girderRoot
|
|
391
|
+
# TODO is something using the "hui" path?
|
|
392
|
+
# info['serverRoot'].hui = huiRoot
|
|
393
|
+
# TODO these settings are not honored at this point
|
|
394
|
+
# setattr(info['serverRoot'], webrootPath, huiRoot)
|
|
395
|
+
# if alternateWebrootPath:
|
|
396
|
+
# for alt_webroot_path in alternateWebrootPath.split(','):
|
|
397
|
+
# if alt_webroot_path:
|
|
398
|
+
# setattr(info['serverRoot'], alt_webroot_path, huiRoot)
|
|
399
|
+
# info['serverRoot'].girder = girderRoot
|
|
464
400
|
|
|
465
401
|
# Auto-ingest annotations into database when a file with an identifier
|
|
466
402
|
# ending in 'AnnotationFile' is uploaded (usually .anot files).
|
|
@@ -473,16 +409,5 @@ class GirderPlugin(plugin.GirderPlugin):
|
|
|
473
409
|
|
|
474
410
|
handlers.json_nans_as_nulls()
|
|
475
411
|
|
|
476
|
-
def updateWebroot(event):
|
|
477
|
-
"""
|
|
478
|
-
If the webroot path setting is changed, bind the new path to the
|
|
479
|
-
hui webroot resource. Note that a change to the alternate webroot
|
|
480
|
-
requires a restart.
|
|
481
|
-
"""
|
|
482
|
-
if event.info.get('key') == PluginSettings.HUI_WEBROOT_PATH:
|
|
483
|
-
setattr(info['serverRoot'], event.info['value'], huiRoot)
|
|
484
|
-
|
|
485
|
-
events.bind('model.setting.save.after', 'histomicsui', updateWebroot)
|
|
486
|
-
|
|
487
412
|
restrict_downloads(info)
|
|
488
413
|
cleanupFSAssetstores()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from girder_worker import GirderWorkerPluginABC
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class HistomicsUIWorkerPlugin(GirderWorkerPluginABC):
|
|
7
|
+
def __init__(self, app, *args, **kwargs):
|
|
8
|
+
if os.getenv('CELERY_TASK_ALWAYS_EAGER', False):
|
|
9
|
+
app.conf.task_always_eager = True
|
|
10
|
+
app.conf.task_eager_propagates = True
|
|
11
|
+
self.app = app
|
|
12
|
+
|
|
13
|
+
def task_imports(self):
|
|
14
|
+
return ['histomicsui.handlers']
|