girder 5.0.17.dev2__tar.gz → 5.0.17.dev6__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.
- {girder-5.0.17.dev2/girder.egg-info → girder-5.0.17.dev6}/PKG-INFO +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/folder.py +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/item.py +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/folder.py +38 -3
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/item.py +7 -2
- girder-5.0.17.dev2/girder/web/dist/assets/index-DcvFpYY2.js → girder-5.0.17.dev6/girder/web/dist/assets/index-_2O3RWzB.js +4 -4
- girder-5.0.17.dev2/girder/web/dist/assets/index-DcvFpYY2.js.map → girder-5.0.17.dev6/girder/web/dist/assets/index-_2O3RWzB.js.map +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/index.html +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6/girder.egg-info}/PKG-INFO +1 -1
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/SOURCES.txt +2 -2
- girder-5.0.17.dev6/girder.egg-info/scm_version.json +8 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/publicNames.txt +3 -0
- girder-5.0.17.dev2/girder.egg-info/scm_version.json +0 -8
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/Dockerfile +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/build_plugins.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/config.yml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/generatePyEnvChecksum.sh +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/publish_npm.sh +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/publish_pypi.sh +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.circleci/rabbitmq.conf +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.codecov.yml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.dockerignore +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.editorconfig +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.git-blame-ignore-revs +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.github/workflows/codespell.yml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.gitignore +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.pre-commit-config.yaml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/.readthedocs.yml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/CHANGELOG.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/CMakeLists.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/CONTRIBUTING.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/Dockerfile +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/LICENSE +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/MANIFEST.in +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/README.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/README.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/girder_client/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/girder_client/_jsonemitter.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/girder_client/cli.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/pyproject.toml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/clients/python/setup.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docker-compose.yml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/admin-docs.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/api-docs.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/build-docs.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/conf.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/configuration.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/dependencies.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/deployment.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/dev-installation.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/developer-cookbook.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/developer-docs.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/development.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/favicon.ico +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/images/dicom-viewer.png +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/index.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/license.png +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/list_env_settings.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/list_env_settings.yaml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/migration-guide.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/mount.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/plugin-development.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/plugins.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/python-client.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/requirements-docs.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/security.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/sftp.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/static/custom.css +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/user-docs.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/docs/user-guide.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/access.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/api_docs.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/api_main.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/describe.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/docs.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/filter_logging.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/rest.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/sftp.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/api_key.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/assetstore.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/collection.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/file.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/group.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/resource.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/system.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/token.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/api/v1/user.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/asgi.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/cli/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/cli/mount.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/cli/serve.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/cli/sftpd.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/cli/shell.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/constants.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/events.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/exceptions.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/_footer.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/_header.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/accountApproval.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/accountApproved.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/emailVerification.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/groupInvite.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/mail_templates/temporaryAccess.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/api_key.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/assetstore.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/collection.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/file.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/group.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/model_base.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/setting.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/token.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/upload.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/models/user.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/notification.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/plugin.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/settings.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/tasks.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/_cache.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/_hash_state.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/abstract_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/acl_mixin.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/assetstore_utilities.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/config.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/error.mako +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/filesystem_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/mail_utils.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/model_importer.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/path.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/progress.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/s3_assetstore_adapter.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/search.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/server.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/setting_utilities.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/system.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/webroot.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/utility/ziputil.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/.env.development +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/.gitignore +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/.prettierrc.json +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/README.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/Girder_Favicon.png +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/Girder_Mark.png +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/fontello-BLy7AbzU.ttf +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/fontello-BQI3HC9-.eot +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/fontello-BgaCl1ja.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/fontello-D3uQJzaX.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/index-C4B5cJ-0.css +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/auth.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/constants.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/dialog.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/events.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/index.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/main.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/misc.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/pluginUtils.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/rest.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/router.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/routes.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/version.js +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/dist/src/src/vite-env.d.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/env.d.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/playwright.config.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/coverage.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/playwright-setup.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/playwright-teardown.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/server.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/admin.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/browser.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/data/README.md +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/data/nomime.dat +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/file_upload.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/web/tests/util.ts +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/worker_plugin.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder/wsgi.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/dependency_links.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/entry_points.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/not-zip-safe +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/requires.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/scm_file_list.json +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/girder.egg-info/top_level.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/jsdoc.json +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/package-lock.json +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/package.json +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pyproject.toml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/LICENSE +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/MANIFEST.in +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pyproject.toml +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/__init__.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/assertions.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/fixtures.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/plugin.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/utils.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/pytest_girder/web_client.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/pytest_girder/setup.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/requirements-dev.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/midas/README.rst +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/midas/migrate.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/midas/requirements.txt +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/midas/walk_girder.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/midas/walk_midas.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/publicNames.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/scripts/test_names.sh +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/setup.cfg +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/setup.py +0 -0
- {girder-5.0.17.dev2 → girder-5.0.17.dev6}/tox.ini +0 -0
|
@@ -431,4 +431,4 @@ class Folder(Resource):
|
|
|
431
431
|
.errorResponse('Read access was denied for the folder.', 403)
|
|
432
432
|
)
|
|
433
433
|
def rootpath(self, folder, params):
|
|
434
|
-
return self._model.parentsToRoot(folder, user=self.getCurrentUser())
|
|
434
|
+
return self._model.parentsToRoot(folder, user=self.getCurrentUser(), hideInaccessible=True)
|
|
@@ -314,7 +314,7 @@ class Item(Resource):
|
|
|
314
314
|
.errorResponse('Read access was denied for the item.', 403)
|
|
315
315
|
)
|
|
316
316
|
def rootpath(self, item):
|
|
317
|
-
return self._model.parentsToRoot(item, self.getCurrentUser())
|
|
317
|
+
return self._model.parentsToRoot(item, self.getCurrentUser(), hideInaccessible=True)
|
|
318
318
|
|
|
319
319
|
@access.user(scope=TokenScope.DATA_WRITE)
|
|
320
320
|
@filtermodel(model=ItemModel)
|
|
@@ -564,7 +564,15 @@ class Folder(AccessControlledModel):
|
|
|
564
564
|
|
|
565
565
|
return filteredDoc
|
|
566
566
|
|
|
567
|
-
def parentsToRoot(
|
|
567
|
+
def parentsToRoot(
|
|
568
|
+
self,
|
|
569
|
+
folder,
|
|
570
|
+
curPath=None,
|
|
571
|
+
user=None,
|
|
572
|
+
force=False,
|
|
573
|
+
level=AccessType.READ,
|
|
574
|
+
hideInaccessible=False,
|
|
575
|
+
):
|
|
568
576
|
"""
|
|
569
577
|
Get the path to traverse to a root of the hierarchy.
|
|
570
578
|
|
|
@@ -572,6 +580,7 @@ class Folder(AccessControlledModel):
|
|
|
572
580
|
:type folder: dict
|
|
573
581
|
:returns: an ordered list of dictionaries from root to the current folder
|
|
574
582
|
"""
|
|
583
|
+
force = force or hideInaccessible
|
|
575
584
|
curPath = curPath or []
|
|
576
585
|
curParentId = folder['parentId']
|
|
577
586
|
curParentType = folder['parentCollection']
|
|
@@ -585,10 +594,30 @@ class Folder(AccessControlledModel):
|
|
|
585
594
|
else:
|
|
586
595
|
parentFiltered = ModelImporter.model(curParentType).filter(curParentObject, user)
|
|
587
596
|
|
|
588
|
-
|
|
597
|
+
curPaths = [{
|
|
589
598
|
'type': curParentType,
|
|
590
599
|
'object': parentFiltered
|
|
591
600
|
}] + curPath
|
|
601
|
+
if hideInaccessible:
|
|
602
|
+
consolidatedPaths = []
|
|
603
|
+
# Walk the hierarchy from root to leaf, and return only the objects
|
|
604
|
+
# that the user has access to, providing they don't leak any parent
|
|
605
|
+
# information to the client.
|
|
606
|
+
for path in curPaths:
|
|
607
|
+
pathModel = ModelImporter.model(path['type'])
|
|
608
|
+
if not pathModel.hasAccess(path['object'], user, level):
|
|
609
|
+
# If the user does not have access to a folder/collection/user,
|
|
610
|
+
# discard all the accumulated hierarchy so as to not leak any
|
|
611
|
+
# relational information.
|
|
612
|
+
consolidatedPaths = []
|
|
613
|
+
continue
|
|
614
|
+
consolidatedPaths.append({
|
|
615
|
+
'type': path['type'],
|
|
616
|
+
'object': pathModel.filter(path['object'], user)
|
|
617
|
+
})
|
|
618
|
+
|
|
619
|
+
return consolidatedPaths
|
|
620
|
+
return curPaths
|
|
592
621
|
else:
|
|
593
622
|
curParentObject = self.load(curParentId, user=user, level=level, force=force)
|
|
594
623
|
curPath = [{
|
|
@@ -596,7 +625,13 @@ class Folder(AccessControlledModel):
|
|
|
596
625
|
'object': curParentObject if force else self.filter(curParentObject, user)
|
|
597
626
|
}] + curPath
|
|
598
627
|
|
|
599
|
-
return self.parentsToRoot(
|
|
628
|
+
return self.parentsToRoot(
|
|
629
|
+
curParentObject,
|
|
630
|
+
curPath,
|
|
631
|
+
user=user,
|
|
632
|
+
force=force,
|
|
633
|
+
hideInaccessible=hideInaccessible
|
|
634
|
+
)
|
|
600
635
|
|
|
601
636
|
def countItems(self, folder):
|
|
602
637
|
"""
|
|
@@ -380,7 +380,7 @@ class Item(acl_mixin.AccessControlMixin, Model):
|
|
|
380
380
|
|
|
381
381
|
return self.save(item)
|
|
382
382
|
|
|
383
|
-
def parentsToRoot(self, item, user=None, force=False):
|
|
383
|
+
def parentsToRoot(self, item, user=None, force=False, hideInaccessible=False):
|
|
384
384
|
"""
|
|
385
385
|
Get the path to traverse to a root of the hierarchy.
|
|
386
386
|
|
|
@@ -399,7 +399,12 @@ class Item(acl_mixin.AccessControlMixin, Model):
|
|
|
399
399
|
curFolder = folderModel.load(
|
|
400
400
|
item['folderId'], user=user, level=AccessType.READ, force=force)
|
|
401
401
|
folderIdsToRoot = folderModel.parentsToRoot(
|
|
402
|
-
curFolder,
|
|
402
|
+
curFolder,
|
|
403
|
+
user=user,
|
|
404
|
+
level=AccessType.READ,
|
|
405
|
+
force=force,
|
|
406
|
+
hideInaccessible=hideInaccessible,
|
|
407
|
+
)
|
|
403
408
|
|
|
404
409
|
if force:
|
|
405
410
|
folderIdsToRoot.append({'type': 'folder', 'object': curFolder})
|