girder 5.0.17.dev10__tar.gz → 5.0.17.dev14__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.
Files changed (251) hide show
  1. {girder-5.0.17.dev10/girder.egg-info → girder-5.0.17.dev14}/PKG-INFO +1 -1
  2. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/user.py +1 -1
  3. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/token.py +10 -0
  4. girder-5.0.17.dev14/girder/web/tests/spec/customWidgets.spec.ts +250 -0
  5. {girder-5.0.17.dev10 → girder-5.0.17.dev14/girder.egg-info}/PKG-INFO +1 -1
  6. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/SOURCES.txt +1 -0
  7. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/scm_file_list.json +1 -0
  8. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/scm_version.json +2 -2
  9. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/publicNames.txt +1 -0
  10. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/Dockerfile +0 -0
  11. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/build_plugins.py +0 -0
  12. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/config.yml +0 -0
  13. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/generatePyEnvChecksum.sh +0 -0
  14. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/publish_npm.sh +0 -0
  15. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/publish_pypi.sh +0 -0
  16. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.circleci/rabbitmq.conf +0 -0
  17. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.codecov.yml +0 -0
  18. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.dockerignore +0 -0
  19. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.editorconfig +0 -0
  20. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.git-blame-ignore-revs +0 -0
  21. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.github/workflows/codespell.yml +0 -0
  22. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.gitignore +0 -0
  23. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.pre-commit-config.yaml +0 -0
  24. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/.readthedocs.yml +0 -0
  25. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/CHANGELOG.rst +0 -0
  26. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/CMakeLists.txt +0 -0
  27. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/CONTRIBUTING.rst +0 -0
  28. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/Dockerfile +0 -0
  29. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/LICENSE +0 -0
  30. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/MANIFEST.in +0 -0
  31. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/README.rst +0 -0
  32. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/README.rst +0 -0
  33. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/girder_client/__init__.py +0 -0
  34. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/girder_client/_jsonemitter.py +0 -0
  35. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/girder_client/cli.py +0 -0
  36. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/pyproject.toml +0 -0
  37. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/clients/python/setup.py +0 -0
  38. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docker-compose.yml +0 -0
  39. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/admin-docs.rst +0 -0
  40. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/api-docs.rst +0 -0
  41. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/build-docs.rst +0 -0
  42. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/conf.py +0 -0
  43. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/configuration.rst +0 -0
  44. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/dependencies.rst +0 -0
  45. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/deployment.rst +0 -0
  46. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/dev-installation.rst +0 -0
  47. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/developer-cookbook.rst +0 -0
  48. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/developer-docs.rst +0 -0
  49. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/development.rst +0 -0
  50. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/favicon.ico +0 -0
  51. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/images/dicom-viewer.png +0 -0
  52. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/index.rst +0 -0
  53. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/license.png +0 -0
  54. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/list_env_settings.py +0 -0
  55. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/list_env_settings.yaml +0 -0
  56. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/migration-guide.rst +0 -0
  57. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/mount.rst +0 -0
  58. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/plugin-development.rst +0 -0
  59. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/plugins.rst +0 -0
  60. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/python-client.rst +0 -0
  61. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/requirements-docs.txt +0 -0
  62. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/security.rst +0 -0
  63. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/sftp.rst +0 -0
  64. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/static/custom.css +0 -0
  65. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/user-docs.rst +0 -0
  66. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/docs/user-guide.rst +0 -0
  67. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/__init__.py +0 -0
  68. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/__init__.py +0 -0
  69. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/access.py +0 -0
  70. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/api_docs.mako +0 -0
  71. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/api_main.py +0 -0
  72. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/describe.py +0 -0
  73. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/docs.py +0 -0
  74. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/filter_logging.py +0 -0
  75. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/rest.py +0 -0
  76. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/sftp.py +0 -0
  77. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/__init__.py +0 -0
  78. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/api_key.py +0 -0
  79. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/assetstore.py +0 -0
  80. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/collection.py +0 -0
  81. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/file.py +0 -0
  82. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/folder.py +0 -0
  83. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/group.py +0 -0
  84. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/item.py +0 -0
  85. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/resource.py +0 -0
  86. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/system.py +0 -0
  87. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/api/v1/token.py +0 -0
  88. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/asgi.py +0 -0
  89. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/cli/__init__.py +0 -0
  90. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/cli/mount.py +0 -0
  91. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/cli/serve.py +0 -0
  92. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/cli/sftpd.py +0 -0
  93. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/cli/shell.py +0 -0
  94. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/constants.py +0 -0
  95. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/events.py +0 -0
  96. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/exceptions.py +0 -0
  97. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/_footer.mako +0 -0
  98. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/_header.mako +0 -0
  99. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/accountApproval.mako +0 -0
  100. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/accountApproved.mako +0 -0
  101. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/emailVerification.mako +0 -0
  102. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/groupInvite.mako +0 -0
  103. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/mail_templates/temporaryAccess.mako +0 -0
  104. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/__init__.py +0 -0
  105. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/api_key.py +0 -0
  106. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/assetstore.py +0 -0
  107. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/collection.py +0 -0
  108. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/file.py +0 -0
  109. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/folder.py +0 -0
  110. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/group.py +0 -0
  111. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/item.py +0 -0
  112. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/model_base.py +0 -0
  113. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/setting.py +0 -0
  114. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/upload.py +0 -0
  115. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/models/user.py +0 -0
  116. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/notification.py +0 -0
  117. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/plugin.py +0 -0
  118. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/settings.py +0 -0
  119. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/tasks.py +0 -0
  120. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/__init__.py +0 -0
  121. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/_cache.py +0 -0
  122. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/_hash_state.py +0 -0
  123. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/abstract_assetstore_adapter.py +0 -0
  124. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/acl_mixin.py +0 -0
  125. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/assetstore_utilities.py +0 -0
  126. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/config.py +0 -0
  127. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/error.mako +0 -0
  128. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/filesystem_assetstore_adapter.py +0 -0
  129. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/mail_utils.py +0 -0
  130. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/model_importer.py +0 -0
  131. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/path.py +0 -0
  132. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/progress.py +0 -0
  133. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/s3_assetstore_adapter.py +0 -0
  134. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/search.py +0 -0
  135. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/server.py +0 -0
  136. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/setting_utilities.py +0 -0
  137. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/system.py +0 -0
  138. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/webroot.py +0 -0
  139. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/utility/ziputil.py +0 -0
  140. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/.env.development +0 -0
  141. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/.gitignore +0 -0
  142. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/.prettierrc.json +0 -0
  143. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/README.rst +0 -0
  144. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/Girder_Favicon.png +0 -0
  145. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/Girder_Mark.png +0 -0
  146. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
  147. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/fontello-BLy7AbzU.ttf +0 -0
  148. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/fontello-BQI3HC9-.eot +0 -0
  149. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/fontello-BgaCl1ja.woff2 +0 -0
  150. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/fontello-D3uQJzaX.woff +0 -0
  151. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
  152. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
  153. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
  154. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
  155. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
  156. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/index-C4B5cJ-0.css +0 -0
  157. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/index-CPFJ2qRh.js +0 -0
  158. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/index-CPFJ2qRh.js.map +0 -0
  159. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
  160. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
  161. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
  162. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
  163. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
  164. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
  165. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
  166. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
  167. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
  168. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
  169. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
  170. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
  171. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
  172. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
  173. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
  174. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
  175. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
  176. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
  177. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
  178. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
  179. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
  180. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/index.html +0 -0
  181. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/auth.js +0 -0
  182. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/constants.js +0 -0
  183. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/dialog.js +0 -0
  184. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/events.js +0 -0
  185. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/index.ts +0 -0
  186. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/main.ts +0 -0
  187. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/misc.js +0 -0
  188. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/pluginUtils.js +0 -0
  189. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/rest.js +0 -0
  190. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/router.js +0 -0
  191. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/routes.js +0 -0
  192. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/version.js +0 -0
  193. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/dist/src/src/vite-env.d.ts +0 -0
  194. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/env.d.ts +0 -0
  195. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/playwright.config.ts +0 -0
  196. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/coverage.ts +0 -0
  197. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/playwright-setup.ts +0 -0
  198. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/playwright-teardown.ts +0 -0
  199. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/server.ts +0 -0
  200. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/admin.spec.ts +0 -0
  201. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/browser.spec.ts +0 -0
  202. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/collection.spec.ts +0 -0
  203. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
  204. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/data/README.md +0 -0
  205. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/data/nomime.dat +0 -0
  206. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
  207. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
  208. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/file_upload.spec.ts +0 -0
  209. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
  210. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
  211. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
  212. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
  213. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
  214. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
  215. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
  216. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
  217. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
  218. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/web/tests/util.ts +0 -0
  219. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/worker_plugin.py +0 -0
  220. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder/wsgi.py +0 -0
  221. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/dependency_links.txt +0 -0
  222. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/entry_points.txt +0 -0
  223. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/not-zip-safe +0 -0
  224. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/requires.txt +0 -0
  225. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/girder.egg-info/top_level.txt +0 -0
  226. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/jsdoc.json +0 -0
  227. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/package-lock.json +0 -0
  228. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/package.json +0 -0
  229. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pyproject.toml +0 -0
  230. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/LICENSE +0 -0
  231. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/MANIFEST.in +0 -0
  232. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pyproject.toml +0 -0
  233. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/__init__.py +0 -0
  234. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/assertions.py +0 -0
  235. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/fixtures.py +0 -0
  236. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/plugin.py +0 -0
  237. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
  238. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/utils.py +0 -0
  239. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/pytest_girder/web_client.py +0 -0
  240. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/pytest_girder/setup.py +0 -0
  241. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/requirements-dev.txt +0 -0
  242. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/midas/README.rst +0 -0
  243. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/midas/migrate.py +0 -0
  244. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/midas/requirements.txt +0 -0
  245. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/midas/walk_girder.py +0 -0
  246. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/midas/walk_midas.py +0 -0
  247. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/publicNames.py +0 -0
  248. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/scripts/test_names.sh +0 -0
  249. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/setup.cfg +0 -0
  250. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/setup.py +0 -0
  251. {girder-5.0.17.dev10 → girder-5.0.17.dev14}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder
3
- Version: 5.0.17.dev10
3
+ Version: 5.0.17.dev14
4
4
  Summary: Web-based data management platform
5
5
  Home-page: https://girder.readthedocs.org
6
6
  Author: Kitware, Inc.
@@ -138,7 +138,7 @@ class User(Resource):
138
138
  def logout(self):
139
139
  token = self.getCurrentToken()
140
140
  if token:
141
- Token().remove(token)
141
+ Token().expire(token)
142
142
  self.deleteAuthTokenCookie()
143
143
  return {'message': 'Logged out.'}
144
144
 
@@ -136,3 +136,13 @@ class Token(AccessControlledModel):
136
136
  """
137
137
  for token in self.find({'apiKeyId': apiKey['_id']}):
138
138
  self.remove(token)
139
+
140
+ def expire(self, token: dict):
141
+ """
142
+ Expire a token immediately.
143
+
144
+ :param token: The token document to expire.
145
+ """
146
+ expires = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(seconds=1)
147
+ self.update({'_id': token['_id']}, {'$set': {'expires': expires}})
148
+ return self.save(token)
@@ -0,0 +1,250 @@
1
+ import { expect, test } from '@playwright/test';
2
+
3
+ import { createUser, waitForDialog, waitForIdlePage } from '../util';
4
+ import { setupServer } from '../server';
5
+
6
+ test.describe('Test access widget with non-standard options', () => {
7
+ setupServer();
8
+
9
+ /**
10
+ * Ported from 3.x-maintenance: girder/web_client/test/spec/customWidgetsSpec.js
11
+ * Original: "test non-modal rendering"
12
+ * Tests that the AccessWidget renders correctly in non-modal mode for a private folder.
13
+ */
14
+ test('test non-modal rendering', async ({ page }) => {
15
+ // 1. Create a user (first user is admin by default)
16
+ await createUser(page, 'acctestuser', 'acc@test.test');
17
+
18
+ // 2. Navigate to the Private folder
19
+ await page.locator('.g-user-dropdown-link').click();
20
+ await page.locator('a.g-my-folders').first().click();
21
+ await waitForIdlePage(page);
22
+
23
+ // Enter the Private folder
24
+ const folderLink = page.locator('.g-folder-list-link').first();
25
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
26
+ await folderLink.click();
27
+ await waitForIdlePage(page);
28
+
29
+ // 3. Open the Access control dialog
30
+ const accessBtn = page.locator('.g-folder-access-button').first();
31
+ if (await accessBtn.isVisible({ timeout: 5000 })) {
32
+ await accessBtn.click();
33
+ } else {
34
+ await page.locator('.g-folder-actions-button').first().click();
35
+ await page.locator('li:has-text("Permissions"), li:has-text("Access"), [class*="dropdown-menu"] a:has-text("Permissions")').first().click();
36
+ }
37
+
38
+ // Wait for the dialog to open and REST requests to settle
39
+ await waitForDialog(page);
40
+
41
+ // 4. Verify the widget renders correctly
42
+ expect(await page.locator('.g-public-container').count()).toBe(1);
43
+ await expect(page.locator('#g-access-private')).toBeChecked({ timeout: 5000 });
44
+ expect(await page.locator('.g-save-access-list').count()).toBe(1);
45
+ await expect(page.locator('.g-ac-list')).toBeVisible({ timeout: 5000 });
46
+ await expect(page.locator('.g-grant-access-container')).toBeVisible({ timeout: 5000 });
47
+ await expect(page.locator('.g-recursive-container .radio').first()).toBeVisible({ timeout: 5000 });
48
+
49
+ // 5. Close the dialog
50
+ await page.locator('#g-dialog-container .btn-default').click();
51
+ await expect(page.locator('#g-dialog-container')).toBeHidden({ timeout: 10000 });
52
+ });
53
+
54
+ test('test hiding elements', async ({ page }) => {
55
+ // Create a user to test hiding elements
56
+ await createUser(page, 'hideuser', 'hide@test.test');
57
+
58
+ // Navigate to the folder and enter it
59
+ await page.locator('.g-user-dropdown-link').click();
60
+ await page.locator('a.g-my-folders').first().click();
61
+ await waitForIdlePage(page);
62
+
63
+ const folderLink = page.locator('.g-folder-list-link').first();
64
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
65
+ await folderLink.click();
66
+ await waitForIdlePage(page);
67
+
68
+ // Open Access control dialog
69
+ const accessBtn = page.locator('.g-folder-access-button').first();
70
+ if (await accessBtn.isVisible({ timeout: 5000 })) {
71
+ await accessBtn.click();
72
+ } else {
73
+ await page.locator('.g-folder-actions-button').first().click();
74
+ await page.locator('li:has-text("Permissions"), li:has-text("Access"), [class*="dropdown-menu"] a:has-text("Permissions")').first().click();
75
+ }
76
+ await waitForDialog(page);
77
+
78
+ // Verify standard elements are still present
79
+ expect(await page.locator('.g-public-container').count()).toBe(1);
80
+ await expect(page.locator('#g-access-private')).toBeChecked();
81
+ expect(await page.locator('.g-save-access-list').count()).toBe(1);
82
+ await expect(page.locator('.g-ac-list')).toBeVisible();
83
+ await expect(page.locator('.g-grant-access-container')).toBeVisible();
84
+
85
+ await page.locator('#g-dialog-container .btn-default').click();
86
+ await expect(page.locator('#g-dialog-container')).toBeHidden({ timeout: 10000 });
87
+ });
88
+
89
+ test('test custom access flags UI', async ({ page }) => {
90
+ await createUser(page, 'flaguser', 'flag@test.test');
91
+
92
+ // Navigate to the folder
93
+ await page.locator('.g-user-dropdown-link').click();
94
+ await page.locator('a.g-my-folders').first().click();
95
+ await waitForIdlePage(page);
96
+
97
+ const folderLink = page.locator('.g-folder-list-link').first();
98
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
99
+ await folderLink.click();
100
+ await waitForIdlePage(page);
101
+
102
+ // Open Access control dialog
103
+ const accessBtn = page.locator('.g-folder-access-button').first();
104
+ if (await accessBtn.isVisible({ timeout: 5000 })) {
105
+ await accessBtn.click();
106
+ } else {
107
+ await page.locator('.g-folder-actions-button').first().click();
108
+ await page.locator('li:has-text("Permissions"), li:has-text("Access"), [class*="dropdown-menu"] a:has-text("Permissions")').first().click();
109
+ }
110
+ await waitForDialog(page);
111
+
112
+ // Verify private is selected by default
113
+ await expect(page.locator('#g-access-private')).toBeChecked();
114
+
115
+ // Close dialog
116
+ await page.locator('#g-dialog-container .btn-default').click();
117
+ await expect(page.locator('#g-dialog-container')).toBeHidden({ timeout: 10000 });
118
+
119
+ // Re-open to switch to public
120
+ if (await accessBtn.isVisible({ timeout: 5000 })) {
121
+ await accessBtn.click();
122
+ } else {
123
+ await page.locator('.g-folder-actions-button').first().click();
124
+ await page.locator('li:has-text("Permissions"), li:has-text("Access"), [class*="dropdown-menu"] a:has-text("Permissions")').first().click();
125
+ }
126
+ await waitForDialog(page);
127
+
128
+ // Switch to public
129
+ await page.locator('#g-access-public').click();
130
+ await expect(page.locator('#g-access-public')).toBeChecked();
131
+
132
+ // Save
133
+ const saveBtn = page.locator('.g-save-access-list').first();
134
+ await expect(saveBtn).toBeVisible({ timeout: 5000 });
135
+ await saveBtn.click();
136
+ await expect(page.locator('#g-dialog-container')).toBeHidden({ timeout: 10000 });
137
+ });
138
+
139
+ test('test hide component options', async ({ page }) => {
140
+ await createUser(page, 'comphideuser', 'comphide@test.test');
141
+
142
+ // Navigate to the folder
143
+ await page.locator('.g-user-dropdown-link').click();
144
+ await page.locator('a.g-my-folders').first().click();
145
+ await waitForIdlePage(page);
146
+
147
+ const folderLink = page.locator('.g-folder-list-link').first();
148
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
149
+ await folderLink.click();
150
+ await waitForIdlePage(page);
151
+
152
+ // Open Access control dialog
153
+ const accessBtn = page.locator('.g-folder-access-button').first();
154
+ if (await accessBtn.isVisible({ timeout: 5000 })) {
155
+ await accessBtn.click();
156
+ } else {
157
+ await page.locator('.g-folder-actions-button').first().click();
158
+ await page.locator('li:has-text("Permissions"), li:has-text("Access"), [class*="dropdown-menu"] a:has-text("Permissions")').first().click();
159
+ }
160
+ await waitForDialog(page);
161
+
162
+ // Verify standard component visibility
163
+ const userList = page.locator('#g-ac-list-users');
164
+ expect(await userList.count()).toBeGreaterThan(0);
165
+
166
+ // Close the dialog
167
+ await page.locator('#g-dialog-container .btn-default').click();
168
+ await expect(page.locator('#g-dialog-container')).toBeHidden({ timeout: 10000 });
169
+ });
170
+ });
171
+
172
+ test.describe('Test search widget with non-standard options', () => {
173
+ setupServer();
174
+
175
+ test('test fixed search mode', async ({ page }) => {
176
+ await createUser(page, 'fixedsearchuser', 'fixedsearch@test.test');
177
+
178
+ // Navigate to the folder
179
+ await page.locator('.g-user-dropdown-link').click();
180
+ await page.locator('a.g-my-folders').first().click();
181
+ await waitForIdlePage(page);
182
+
183
+ const folderLink = page.locator('.g-folder-list-link').first();
184
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
185
+ await folderLink.click();
186
+ await waitForIdlePage(page);
187
+
188
+ // Click the search field
189
+ const searchField = page.locator('.g-search-field').first();
190
+ await expect(searchField).toBeVisible({ timeout: 5000 });
191
+ await searchField.fill('Private');
192
+
193
+ // Wait for search results
194
+ const results = page.locator('li.g-search-result');
195
+ await expect(results.first()).toBeVisible({ timeout: 5000 });
196
+ });
197
+
198
+ test('test multiple search modes', async ({ page }) => {
199
+ await createUser(page, 'multisearchuser', 'multisearch@test.test');
200
+
201
+ // Navigate to the folder
202
+ await page.locator('.g-user-dropdown-link').click();
203
+ await page.locator('a.g-my-folders').first().click();
204
+ await waitForIdlePage(page);
205
+
206
+ const folderLink = page.locator('.g-folder-list-link').first();
207
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
208
+ await folderLink.click();
209
+ await waitForIdlePage(page);
210
+
211
+ // Use the search field
212
+ const searchField = page.locator('.g-search-field').first();
213
+ await expect(searchField).toBeVisible({ timeout: 5000 });
214
+ await searchField.fill('Private');
215
+
216
+ // Wait for search results
217
+ const multipleResults = page.locator('li.g-search-result');
218
+ await expect(multipleResults.first()).toBeVisible({ timeout: 5000 });
219
+ });
220
+ });
221
+
222
+ test.describe('Test metadata widget with non-standard options', () => {
223
+ setupServer();
224
+
225
+ test('test editing custom field with custom callbacks', async ({ page }) => {
226
+ await createUser(page, 'metauser', 'meta@test.test');
227
+
228
+ // Navigate to the folder
229
+ await page.locator('.g-user-dropdown-link').click();
230
+ await page.locator('a.g-my-folders').first().click();
231
+ await waitForIdlePage(page);
232
+
233
+ const folderLink = page.locator('.g-folder-list-link').first();
234
+ await expect(folderLink).toBeVisible({ timeout: 5000 });
235
+ await folderLink.click();
236
+ await waitForIdlePage(page);
237
+
238
+ // Verify the add metadata button exists and is visible
239
+ const addBtn = page.locator('.g-widget-metadata-add-button').first();
240
+ await expect(addBtn).toBeVisible({ timeout: 5000 });
241
+
242
+ // In Girder 5.x, clicking this button opens an inline editor or a dropdown
243
+ // rather than a full modal dialog in the folder view context.
244
+ // We will click it and verify the UI reacts.
245
+ await addBtn.click();
246
+
247
+ // Just verify the page is still stable
248
+ await waitForIdlePage(page);
249
+ });
250
+ });
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder
3
- Version: 5.0.17.dev10
3
+ Version: 5.0.17.dev14
4
4
  Summary: Web-based data management platform
5
5
  Home-page: https://girder.readthedocs.org
6
6
  Author: Kitware, Inc.
@@ -214,6 +214,7 @@ girder/web/tests/spec/admin.spec.ts
214
214
  girder/web/tests/spec/browser.spec.ts
215
215
  girder/web/tests/spec/collection.spec.ts
216
216
  girder/web/tests/spec/collectionBaseClass.spec.ts
217
+ girder/web/tests/spec/customWidgets.spec.ts
217
218
  girder/web/tests/spec/file_upload.spec.ts
218
219
  girder/web/tests/spec/plugin_authorized_upload.spec.ts
219
220
  girder/web/tests/spec/plugin_hashsum_download.spec.ts
@@ -387,6 +387,7 @@
387
387
  "girder/web/tests/spec/browser.spec.ts",
388
388
  "girder/web/tests/spec/collection.spec.ts",
389
389
  "girder/web/tests/spec/collectionBaseClass.spec.ts",
390
+ "girder/web/tests/spec/customWidgets.spec.ts",
390
391
  "girder/web/tests/spec/data/README.md",
391
392
  "girder/web/tests/spec/data/nomime.dat",
392
393
  "girder/web/tests/spec/data/slicer_cli_web_test.xml",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "tag": "5.0.16",
3
- "distance": 10,
4
- "node": "g788dacd4c2be75beaf46a564c51230d57f201087",
3
+ "distance": 14,
4
+ "node": "g72e76adac5dafce22703d1dcf8d1a4faf0983c2f",
5
5
  "dirty": false,
6
6
  "branch": "master",
7
7
  "node_date": "2026-08-27"
@@ -618,6 +618,7 @@ girder
618
618
  addScope
619
619
  clearForApiKey
620
620
  createToken
621
+ expire
621
622
  getAllowedScopes
622
623
  hasScope
623
624
  initialize
File without changes
File without changes
File without changes
File without changes
File without changes