girder 5.0.21.dev2__tar.gz → 5.0.21.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.21.dev2/girder.egg-info → girder-5.0.21.dev6}/PKG-INFO +1 -1
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/item.py +16 -1
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/resource.py +14 -3
- {girder-5.0.21.dev2 → girder-5.0.21.dev6/girder.egg-info}/PKG-INFO +1 -1
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/scm_file_list.json +1 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/scm_version.json +2 -2
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/Dockerfile +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/build_plugins.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/config.yml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/generatePyEnvChecksum.sh +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/publish_npm.sh +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/publish_pypi.sh +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/rabbitmq.conf +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.codecov.yml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.dockerignore +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.editorconfig +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.git-blame-ignore-revs +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.github/workflows/codespell.yml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.gitignore +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.pre-commit-config.yaml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.readthedocs.yml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CHANGELOG.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CMakeLists.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CONTRIBUTING.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/Dockerfile +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/LICENSE +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/MANIFEST.in +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/README.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/README.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/_jsonemitter.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/cli.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/pyproject.toml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/setup.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docker-compose.yml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/admin-docs.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/api-docs.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/build-docs.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/conf.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/configuration.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/dependencies.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/deployment.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/dev-installation.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/developer-cookbook.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/developer-docs.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/development.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/favicon.ico +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/images/dicom-viewer.png +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/index.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/license.png +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/list_env_settings.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/list_env_settings.yaml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/migration-guide.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/mount.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/plugin-development.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/plugins.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/python-client.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/requirements-docs.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/security.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/sftp.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/static/custom.css +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/user-docs.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/user-guide.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/access.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/api_docs.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/api_main.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/describe.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/docs.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/filter_logging.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/rest.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/sftp.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/api_key.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/assetstore.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/collection.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/file.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/folder.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/group.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/system.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/token.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/user.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/asgi.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/mount.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/serve.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/sftpd.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/shell.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/constants.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/events.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/exceptions.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/_footer.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/_header.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/accountApproval.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/accountApproved.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/emailVerification.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/groupInvite.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/temporaryAccess.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/api_key.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/assetstore.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/collection.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/file.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/folder.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/group.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/item.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/model_base.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/setting.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/token.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/upload.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/user.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/notification.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/plugin.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/settings.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/tasks.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/_cache.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/_hash_state.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/abstract_assetstore_adapter.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/acl_mixin.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/assetstore_utilities.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/config.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/error.mako +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/filesystem_assetstore_adapter.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/mail_utils.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/model_importer.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/path.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/progress.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/s3_assetstore_adapter.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/search.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/server.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/setting_utilities.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/system.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/webroot.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/ziputil.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.env.development +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.gitignore +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.prettierrc.json +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/README.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/Girder_Favicon.png +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/Girder_Mark.png +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-CMxI46LA.eot +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-Ddaw8Z2O.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-KuItqCW9.ttf +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-_lT35XxX.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-C3KtNRrl.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-C3KtNRrl.js.map +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-DFhDyJFH.css +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/index.html +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/auth.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/constants.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/dialog.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/events.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/index.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/main.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/misc.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/pluginUtils.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/rest.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/router.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/routes.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/version.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/vite-env.d.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/swagger-ui/swagger-ui-bundle.js +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/swagger-ui/swagger-ui.css +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/env.d.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/playwright.config.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/coverage.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/playwright-setup.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/playwright-teardown.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/server.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/admin.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/browser.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/collection.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/customWidgets.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/README.md +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/fake.jpg +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/nomime.dat +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/slicer_cli_web_multiple_test.xml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/testFile.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/testFile2 +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/emptyLayout.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/file_upload.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/folder.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/group.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/item.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/model.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_autojoin.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_jobs.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_config_view.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_container_view.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_item_selector.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_panel_group.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_parser.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_task.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_widget_model.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_widget_view.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/routing.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/setApi.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/setting_show_download.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/sortWidget.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/swagger.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/user.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/utilities.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/version.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/widgets.spec.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/util.ts +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/worker_plugin.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/wsgi.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/SOURCES.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/dependency_links.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/entry_points.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/not-zip-safe +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/requires.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/top_level.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/jsdoc.json +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/package-lock.json +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/package.json +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pyproject.toml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/LICENSE +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/MANIFEST.in +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pyproject.toml +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/__init__.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/assertions.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/fixtures.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/plugin.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/utils.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/web_client.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/setup.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/requirements-dev.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/README.rst +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/migrate.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/requirements.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/walk_girder.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/walk_midas.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/publicNames.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/publicNames.txt +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/test_names.sh +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/setup.cfg +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/setup.py +0 -0
- {girder-5.0.21.dev2 → girder-5.0.21.dev6}/tox.ini +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import cherrypy
|
|
2
|
+
|
|
1
3
|
from girder.api import access
|
|
2
4
|
from girder.constants import AccessType, SortDir, TokenScope
|
|
3
5
|
from girder.exceptions import RestException
|
|
@@ -262,6 +264,8 @@ class Item(Resource):
|
|
|
262
264
|
@access.public(scope=TokenScope.DATA_READ, cookie=True)
|
|
263
265
|
@autoDescribeRoute(
|
|
264
266
|
Description('Download the contents of an item.')
|
|
267
|
+
.notes('This endpoint also accepts the HTTP "Range" header for partial '
|
|
268
|
+
'downloads of single file items.')
|
|
265
269
|
.modelParam('id', model=ItemModel, level=AccessType.READ)
|
|
266
270
|
.param('offset', 'Byte offset into the file.', dataType='int',
|
|
267
271
|
required=False, default=0)
|
|
@@ -289,8 +293,19 @@ class Item(Resource):
|
|
|
289
293
|
if len(files) == 1 and format != 'zip':
|
|
290
294
|
if contentDisposition not in {None, 'inline', 'attachment'}:
|
|
291
295
|
raise RestException('Unallowed contentDisposition type "%s".' % contentDisposition)
|
|
296
|
+
file = files[0]
|
|
297
|
+
endByte = None
|
|
298
|
+
rangeRequest = cherrypy.request.headers.get('Range')
|
|
299
|
+
if rangeRequest and file.get('size') is None:
|
|
300
|
+
# Ensure the file size is updated
|
|
301
|
+
File().updateSize(file)
|
|
302
|
+
rangeHeader = cherrypy.lib.httputil.get_ranges(rangeRequest, file.get('size', 0))
|
|
303
|
+
# The HTTP Range header takes precedence over the offset param
|
|
304
|
+
if rangeHeader and len(rangeHeader):
|
|
305
|
+
# Currently we only support a single range.
|
|
306
|
+
offset, endByte = rangeHeader[0]
|
|
292
307
|
return File().download(
|
|
293
|
-
|
|
308
|
+
file, offset, endByte=endByte, contentDisposition=contentDisposition,
|
|
294
309
|
extraParameters=extraParameters)
|
|
295
310
|
else:
|
|
296
311
|
return self._downloadMultifileItem(item, user)
|
|
@@ -15,6 +15,13 @@ from ..rest import setContentDisposition, setResponseHeader
|
|
|
15
15
|
# Plugins can modify this set to allow other types to be searched
|
|
16
16
|
allowedSearchTypes = {'collection', 'file', 'folder', 'group', 'item', 'user'}
|
|
17
17
|
allowedDeleteTypes = {'collection', 'file', 'folder', 'group', 'item', 'user'}
|
|
18
|
+
# The access level and token scope needed to delete each type, matching the
|
|
19
|
+
# type-specific delete endpoints. Types not listed require admin access and
|
|
20
|
+
# the DATA_OWN scope.
|
|
21
|
+
_deleteTypeAccess = {
|
|
22
|
+
'file': (AccessType.WRITE, TokenScope.DATA_WRITE),
|
|
23
|
+
'item': (AccessType.WRITE, TokenScope.DATA_WRITE),
|
|
24
|
+
}
|
|
18
25
|
|
|
19
26
|
|
|
20
27
|
class Resource(BaseResource):
|
|
@@ -183,7 +190,7 @@ class Resource(BaseResource):
|
|
|
183
190
|
yield zip.footer()
|
|
184
191
|
return stream
|
|
185
192
|
|
|
186
|
-
@access.user(scope=TokenScope.
|
|
193
|
+
@access.user(scope=TokenScope.DATA_WRITE)
|
|
187
194
|
@autoDescribeRoute(
|
|
188
195
|
Description('Delete a set of items, folders, or other resources.')
|
|
189
196
|
.jsonParam('resources', 'A JSON-encoded set of resources to delete. Each '
|
|
@@ -195,11 +202,14 @@ class Resource(BaseResource):
|
|
|
195
202
|
.errorResponse('Invalid resources format.')
|
|
196
203
|
.errorResponse('No resources specified.')
|
|
197
204
|
.errorResponse('Resource not found.')
|
|
198
|
-
.errorResponse('
|
|
205
|
+
.errorResponse('Write or admin access was denied for a resource.', 403)
|
|
199
206
|
)
|
|
200
207
|
def delete(self, resources, progress):
|
|
201
208
|
user = self.getCurrentUser()
|
|
202
209
|
self._validateResourceSet(resources, allowedDeleteTypes)
|
|
210
|
+
for kind in resources:
|
|
211
|
+
self.ensureTokenScopes(_deleteTypeAccess.get(
|
|
212
|
+
kind, (AccessType.ADMIN, TokenScope.DATA_OWN))[1])
|
|
203
213
|
total = sum([len(resources[key]) for key in resources])
|
|
204
214
|
with ProgressContext(
|
|
205
215
|
progress, user=user, title='Deleting resources',
|
|
@@ -208,8 +218,9 @@ class Resource(BaseResource):
|
|
|
208
218
|
current = 0
|
|
209
219
|
for kind in resources:
|
|
210
220
|
model = self._getResourceModel(kind, 'remove')
|
|
221
|
+
level = _deleteTypeAccess.get(kind, (AccessType.ADMIN, TokenScope.DATA_OWN))[0]
|
|
211
222
|
for id in resources[kind]:
|
|
212
|
-
doc = model.load(id=id, user=user, level=
|
|
223
|
+
doc = model.load(id=id, user=user, level=level, exc=True)
|
|
213
224
|
|
|
214
225
|
# Don't do a subtree count if we weren't asked for progress
|
|
215
226
|
if progress:
|
|
@@ -1065,6 +1065,7 @@
|
|
|
1065
1065
|
"test/test_path_utilities.py",
|
|
1066
1066
|
"test/test_plugin_registry.py",
|
|
1067
1067
|
"test/test_position_endpoint.py",
|
|
1068
|
+
"test/test_resource.py",
|
|
1068
1069
|
"test/test_rest_exception_handling.py",
|
|
1069
1070
|
"test/test_rest_utils.py",
|
|
1070
1071
|
"test/test_settings.py",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2
RENAMED
|
File without changes
|
{girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|