girder 5.0.19.dev6__tar.gz → 5.0.19.dev8__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.19.dev6/girder.egg-info → girder-5.0.19.dev8}/PKG-INFO +1 -1
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/mail_utils.py +33 -5
- {girder-5.0.19.dev6 → girder-5.0.19.dev8/girder.egg-info}/PKG-INFO +1 -1
- girder-5.0.19.dev8/girder.egg-info/scm_version.json +8 -0
- girder-5.0.19.dev6/girder.egg-info/scm_version.json +0 -8
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/Dockerfile +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/build_plugins.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/config.yml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/generatePyEnvChecksum.sh +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/publish_npm.sh +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/publish_pypi.sh +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.circleci/rabbitmq.conf +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.codecov.yml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.dockerignore +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.editorconfig +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.git-blame-ignore-revs +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.github/workflows/codespell.yml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.gitignore +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.pre-commit-config.yaml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/.readthedocs.yml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/CHANGELOG.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/CMakeLists.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/CONTRIBUTING.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/Dockerfile +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/LICENSE +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/MANIFEST.in +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/README.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/README.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/girder_client/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/girder_client/_jsonemitter.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/girder_client/cli.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/pyproject.toml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/clients/python/setup.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docker-compose.yml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/admin-docs.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/api-docs.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/build-docs.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/conf.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/configuration.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/dependencies.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/deployment.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/dev-installation.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/developer-cookbook.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/developer-docs.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/development.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/favicon.ico +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/images/dicom-viewer.png +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/index.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/license.png +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/list_env_settings.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/list_env_settings.yaml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/migration-guide.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/mount.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/plugin-development.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/plugins.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/python-client.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/requirements-docs.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/security.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/sftp.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/static/custom.css +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/user-docs.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/docs/user-guide.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/access.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/api_docs.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/api_main.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/describe.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/docs.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/filter_logging.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/rest.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/sftp.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/api_key.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/assetstore.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/collection.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/file.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/folder.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/group.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/item.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/resource.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/system.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/token.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/api/v1/user.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/asgi.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/cli/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/cli/mount.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/cli/serve.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/cli/sftpd.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/cli/shell.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/constants.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/events.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/exceptions.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/_footer.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/_header.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/accountApproval.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/accountApproved.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/emailVerification.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/groupInvite.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/mail_templates/temporaryAccess.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/api_key.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/assetstore.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/collection.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/file.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/folder.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/group.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/item.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/model_base.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/setting.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/token.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/upload.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/models/user.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/notification.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/plugin.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/settings.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/tasks.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/_cache.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/_hash_state.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/abstract_assetstore_adapter.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/acl_mixin.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/assetstore_utilities.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/config.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/error.mako +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/filesystem_assetstore_adapter.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/model_importer.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/path.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/progress.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/s3_assetstore_adapter.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/search.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/server.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/setting_utilities.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/system.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/webroot.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/utility/ziputil.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/.env.development +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/.gitignore +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/.prettierrc.json +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/README.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/Girder_Favicon.png +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/Girder_Mark.png +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/fontello-BJbUCrYc.eot +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/fontello-CE5GVTQ4.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/fontello-LRhipy3N.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/fontello-xrcC4tQR.ttf +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/index-CzOvG7VM.css +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/index-DvhR4xZK.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/index-DvhR4xZK.js.map +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/index.html +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/auth.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/constants.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/dialog.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/events.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/index.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/main.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/misc.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/pluginUtils.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/rest.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/router.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/routes.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/version.js +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/src/src/vite-env.d.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/env.d.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/playwright.config.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/coverage.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/playwright-setup.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/playwright-teardown.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/server.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/admin.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/browser.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/collection.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/customWidgets.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/data/README.md +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/data/nomime.dat +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/file_upload.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/setting_show_download.spec.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/util.ts +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/worker_plugin.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/wsgi.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/SOURCES.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/dependency_links.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/entry_points.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/not-zip-safe +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/requires.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/scm_file_list.json +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder.egg-info/top_level.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/jsdoc.json +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/package-lock.json +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/package.json +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pyproject.toml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/LICENSE +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/MANIFEST.in +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pyproject.toml +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/__init__.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/assertions.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/fixtures.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/plugin.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/utils.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/pytest_girder/web_client.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/pytest_girder/setup.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/requirements-dev.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/midas/README.rst +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/midas/migrate.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/midas/requirements.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/midas/walk_girder.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/midas/walk_midas.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/publicNames.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/publicNames.txt +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/scripts/test_names.sh +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/setup.cfg +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/setup.py +0 -0
- {girder-5.0.19.dev6 → girder-5.0.19.dev8}/tox.ini +0 -0
|
@@ -2,6 +2,7 @@ import logging
|
|
|
2
2
|
import os
|
|
3
3
|
import re
|
|
4
4
|
import smtplib
|
|
5
|
+
import urllib.parse
|
|
5
6
|
from email.mime.text import MIMEText
|
|
6
7
|
|
|
7
8
|
from mako.lookup import TemplateLookup
|
|
@@ -12,6 +13,12 @@ from girder.settings import SettingKey
|
|
|
12
13
|
|
|
13
14
|
logger = logging.getLogger(__name__)
|
|
14
15
|
|
|
16
|
+
# Socket timeout (seconds) for SMTP connections. Without an explicit value smtplib
|
|
17
|
+
# inherits the global socket default, which is normally ``None``, potentially blocking
|
|
18
|
+
# server thread forever if connection is silently dropped in transit.
|
|
19
|
+
# Explicit timeout results in error that we can handle instead
|
|
20
|
+
_SMTP_TIMEOUT = 30
|
|
21
|
+
|
|
15
22
|
|
|
16
23
|
def validateEmailAddress(address):
|
|
17
24
|
"""
|
|
@@ -120,20 +127,40 @@ def _createMessage(subject, text, to, bcc):
|
|
|
120
127
|
return msg, recipients
|
|
121
128
|
|
|
122
129
|
|
|
130
|
+
def _localHostname():
|
|
131
|
+
"""
|
|
132
|
+
Return the name to announce in the SMTP EHLO, or None to let smtplib choose.
|
|
133
|
+
|
|
134
|
+
Derived from the ``core.email_host`` setting, which already names this instance as
|
|
135
|
+
the outside world sees it. Without one, smtplib falls back to ``socket.getfqdn()``,
|
|
136
|
+
which inside a container typically cannot resolve a real name and yields a bracketed
|
|
137
|
+
address literal leaking the container's private address in every message.
|
|
138
|
+
"""
|
|
139
|
+
from girder.models.setting import Setting
|
|
140
|
+
|
|
141
|
+
host = Setting().get(SettingKey.EMAIL_HOST)
|
|
142
|
+
if not host:
|
|
143
|
+
return None
|
|
144
|
+
return urllib.parse.urlparse(host).hostname or None
|
|
145
|
+
|
|
146
|
+
|
|
123
147
|
class _SMTPConnection:
|
|
124
|
-
def __init__(self, host, port=None, encryption=None,
|
|
125
|
-
|
|
148
|
+
def __init__(self, host, port=None, encryption=None, username=None, password=None,
|
|
149
|
+
timeout=_SMTP_TIMEOUT, localHostname=None):
|
|
126
150
|
self.host = host
|
|
127
151
|
self.port = port
|
|
128
152
|
self.encryption = encryption
|
|
129
153
|
self.username = username
|
|
130
154
|
self.password = password
|
|
155
|
+
self.timeout = timeout
|
|
156
|
+
self.localHostname = localHostname
|
|
131
157
|
|
|
132
158
|
def __enter__(self):
|
|
159
|
+
kwargs = {'local_hostname': self.localHostname, 'timeout': self.timeout}
|
|
133
160
|
if self.encryption == 'ssl':
|
|
134
|
-
self.connection = smtplib.SMTP_SSL(self.host, self.port)
|
|
161
|
+
self.connection = smtplib.SMTP_SSL(self.host, self.port, **kwargs)
|
|
135
162
|
else:
|
|
136
|
-
self.connection = smtplib.SMTP(self.host, self.port)
|
|
163
|
+
self.connection = smtplib.SMTP(self.host, self.port, **kwargs)
|
|
137
164
|
if self.encryption == 'starttls':
|
|
138
165
|
self.connection.starttls()
|
|
139
166
|
if self.username and self.password:
|
|
@@ -161,7 +188,8 @@ def _submitEmail(msg, recipients):
|
|
|
161
188
|
port=setting.get(SettingKey.SMTP_PORT),
|
|
162
189
|
encryption=setting.get(SettingKey.SMTP_ENCRYPTION),
|
|
163
190
|
username=setting.get(SettingKey.SMTP_USERNAME),
|
|
164
|
-
password=setting.get(SettingKey.SMTP_PASSWORD)
|
|
191
|
+
password=setting.get(SettingKey.SMTP_PASSWORD),
|
|
192
|
+
localHostname=_localHostname()
|
|
165
193
|
)
|
|
166
194
|
|
|
167
195
|
logger.info('Sending email to %s through %s', ', '.join(recipients), smtp.host)
|
|
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
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/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
|
|
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.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/data/slicer_cli_web_test.xml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_authorized_upload.spec.ts
RENAMED
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_hashsum_download.spec.ts
RENAMED
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_item_licenses.spec.ts
RENAMED
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder-5.0.19.dev6 → girder-5.0.19.dev8}/girder/web/tests/spec/setting_show_download.spec.ts
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
|
|
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
|