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.
Files changed (282) hide show
  1. {girder-5.0.21.dev2/girder.egg-info → girder-5.0.21.dev6}/PKG-INFO +1 -1
  2. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/item.py +16 -1
  3. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/resource.py +14 -3
  4. {girder-5.0.21.dev2 → girder-5.0.21.dev6/girder.egg-info}/PKG-INFO +1 -1
  5. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/scm_file_list.json +1 -0
  6. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/scm_version.json +2 -2
  7. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/Dockerfile +0 -0
  8. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/build_plugins.py +0 -0
  9. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/config.yml +0 -0
  10. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/generatePyEnvChecksum.sh +0 -0
  11. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/publish_npm.sh +0 -0
  12. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/publish_pypi.sh +0 -0
  13. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.circleci/rabbitmq.conf +0 -0
  14. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.codecov.yml +0 -0
  15. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.dockerignore +0 -0
  16. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.editorconfig +0 -0
  17. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.git-blame-ignore-revs +0 -0
  18. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.github/workflows/codespell.yml +0 -0
  19. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.gitignore +0 -0
  20. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.pre-commit-config.yaml +0 -0
  21. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/.readthedocs.yml +0 -0
  22. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CHANGELOG.rst +0 -0
  23. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CMakeLists.txt +0 -0
  24. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/CONTRIBUTING.rst +0 -0
  25. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/Dockerfile +0 -0
  26. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/LICENSE +0 -0
  27. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/MANIFEST.in +0 -0
  28. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/README.rst +0 -0
  29. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/README.rst +0 -0
  30. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/__init__.py +0 -0
  31. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/_jsonemitter.py +0 -0
  32. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/girder_client/cli.py +0 -0
  33. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/pyproject.toml +0 -0
  34. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/clients/python/setup.py +0 -0
  35. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docker-compose.yml +0 -0
  36. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/admin-docs.rst +0 -0
  37. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/api-docs.rst +0 -0
  38. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/build-docs.rst +0 -0
  39. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/conf.py +0 -0
  40. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/configuration.rst +0 -0
  41. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/dependencies.rst +0 -0
  42. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/deployment.rst +0 -0
  43. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/dev-installation.rst +0 -0
  44. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/developer-cookbook.rst +0 -0
  45. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/developer-docs.rst +0 -0
  46. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/development.rst +0 -0
  47. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/favicon.ico +0 -0
  48. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/images/dicom-viewer.png +0 -0
  49. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/index.rst +0 -0
  50. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/license.png +0 -0
  51. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/list_env_settings.py +0 -0
  52. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/list_env_settings.yaml +0 -0
  53. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/migration-guide.rst +0 -0
  54. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/mount.rst +0 -0
  55. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/plugin-development.rst +0 -0
  56. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/plugins.rst +0 -0
  57. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/python-client.rst +0 -0
  58. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/requirements-docs.txt +0 -0
  59. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/security.rst +0 -0
  60. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/sftp.rst +0 -0
  61. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/static/custom.css +0 -0
  62. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/user-docs.rst +0 -0
  63. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/docs/user-guide.rst +0 -0
  64. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/__init__.py +0 -0
  65. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/__init__.py +0 -0
  66. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/access.py +0 -0
  67. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/api_docs.mako +0 -0
  68. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/api_main.py +0 -0
  69. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/describe.py +0 -0
  70. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/docs.py +0 -0
  71. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/filter_logging.py +0 -0
  72. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/rest.py +0 -0
  73. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/sftp.py +0 -0
  74. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/__init__.py +0 -0
  75. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/api_key.py +0 -0
  76. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/assetstore.py +0 -0
  77. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/collection.py +0 -0
  78. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/file.py +0 -0
  79. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/folder.py +0 -0
  80. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/group.py +0 -0
  81. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/system.py +0 -0
  82. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/token.py +0 -0
  83. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/api/v1/user.py +0 -0
  84. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/asgi.py +0 -0
  85. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/__init__.py +0 -0
  86. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/mount.py +0 -0
  87. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/serve.py +0 -0
  88. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/sftpd.py +0 -0
  89. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/cli/shell.py +0 -0
  90. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/constants.py +0 -0
  91. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/events.py +0 -0
  92. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/exceptions.py +0 -0
  93. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/_footer.mako +0 -0
  94. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/_header.mako +0 -0
  95. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/accountApproval.mako +0 -0
  96. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/accountApproved.mako +0 -0
  97. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/emailVerification.mako +0 -0
  98. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/groupInvite.mako +0 -0
  99. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/mail_templates/temporaryAccess.mako +0 -0
  100. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/__init__.py +0 -0
  101. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/api_key.py +0 -0
  102. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/assetstore.py +0 -0
  103. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/collection.py +0 -0
  104. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/file.py +0 -0
  105. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/folder.py +0 -0
  106. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/group.py +0 -0
  107. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/item.py +0 -0
  108. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/model_base.py +0 -0
  109. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/setting.py +0 -0
  110. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/token.py +0 -0
  111. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/upload.py +0 -0
  112. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/models/user.py +0 -0
  113. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/notification.py +0 -0
  114. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/plugin.py +0 -0
  115. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/settings.py +0 -0
  116. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/tasks.py +0 -0
  117. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/__init__.py +0 -0
  118. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/_cache.py +0 -0
  119. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/_hash_state.py +0 -0
  120. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/abstract_assetstore_adapter.py +0 -0
  121. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/acl_mixin.py +0 -0
  122. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/assetstore_utilities.py +0 -0
  123. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/config.py +0 -0
  124. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/error.mako +0 -0
  125. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/filesystem_assetstore_adapter.py +0 -0
  126. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/mail_utils.py +0 -0
  127. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/model_importer.py +0 -0
  128. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/path.py +0 -0
  129. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/progress.py +0 -0
  130. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/s3_assetstore_adapter.py +0 -0
  131. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/search.py +0 -0
  132. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/server.py +0 -0
  133. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/setting_utilities.py +0 -0
  134. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/system.py +0 -0
  135. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/webroot.py +0 -0
  136. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/utility/ziputil.py +0 -0
  137. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.env.development +0 -0
  138. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.gitignore +0 -0
  139. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/.prettierrc.json +0 -0
  140. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/README.rst +0 -0
  141. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/Girder_Favicon.png +0 -0
  142. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/Girder_Mark.png +0 -0
  143. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-BGLM866c.svg +0 -0
  144. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-CMxI46LA.eot +0 -0
  145. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-Ddaw8Z2O.woff2 +0 -0
  146. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-KuItqCW9.ttf +0 -0
  147. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/fontello-_lT35XxX.woff +0 -0
  148. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BKjkU69z.woff +0 -0
  149. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-BUJKDMgK.eot +0 -0
  150. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-CSehLiBc.svg +0 -0
  151. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DrwTMapi.ttf +0 -0
  152. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/glyphicons-halflings-regular-DzqM6ju8.woff2 +0 -0
  153. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-C3KtNRrl.js +0 -0
  154. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-C3KtNRrl.js.map +0 -0
  155. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/index-DFhDyJFH.css +0 -0
  156. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/jsoneditor-icons-CIlYC0TY.svg +0 -0
  157. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-B6tDWRxp.woff2 +0 -0
  158. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300-DZbNTRe6.woff +0 -0
  159. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300italic-DLsXqxhU.woff2 +0 -0
  160. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-300italic-Dfz31Up5.woff +0 -0
  161. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-D5zbb_EN.woff +0 -0
  162. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400-DLgeRt71.woff2 +0 -0
  163. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400italic-DpGQ6Ktj.woff2 +0 -0
  164. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-400italic-UJbezL8h.woff +0 -0
  165. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-CCvT4JHQ.woff2 +0 -0
  166. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600-DHWfDY-G.woff +0 -0
  167. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600italic-X8kCjSq_.woff +0 -0
  168. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-600italic-slqXzGub.woff2 +0 -0
  169. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-CsbQbrjx.woff2 +0 -0
  170. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700-DNl7WOH5.woff +0 -0
  171. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700italic-BtE7VvhE.woff2 +0 -0
  172. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-700italic-hc2P_kZo.woff +0 -0
  173. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-CbJOM4_m.woff2 +0 -0
  174. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800-XaYTAPrv.woff +0 -0
  175. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800italic-DqvYew-K.woff +0 -0
  176. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/assets/open-sans-latin-800italic-JIGkTxpX.woff2 +0 -0
  177. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/index.html +0 -0
  178. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/auth.js +0 -0
  179. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/constants.js +0 -0
  180. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/dialog.js +0 -0
  181. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/events.js +0 -0
  182. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/index.ts +0 -0
  183. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/main.ts +0 -0
  184. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/misc.js +0 -0
  185. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/pluginUtils.js +0 -0
  186. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/rest.js +0 -0
  187. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/router.js +0 -0
  188. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/routes.js +0 -0
  189. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/version.js +0 -0
  190. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/src/src/vite-env.d.ts +0 -0
  191. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/swagger-ui/swagger-ui-bundle.js +0 -0
  192. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/dist/swagger-ui/swagger-ui.css +0 -0
  193. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/env.d.ts +0 -0
  194. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/playwright.config.ts +0 -0
  195. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/coverage.ts +0 -0
  196. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/playwright-setup.ts +0 -0
  197. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/playwright-teardown.ts +0 -0
  198. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/server.ts +0 -0
  199. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/admin.spec.ts +0 -0
  200. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/browser.spec.ts +0 -0
  201. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/collection.spec.ts +0 -0
  202. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/collectionBaseClass.spec.ts +0 -0
  203. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/customWidgets.spec.ts +0 -0
  204. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/README.md +0 -0
  205. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/fake.jpg +0 -0
  206. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/nomime.dat +0 -0
  207. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/slicer_cli_web_multiple_test.xml +0 -0
  208. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/slicer_cli_web_test.xml +0 -0
  209. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/ten_byte_file.txt +0 -0
  210. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/testFile.txt +0 -0
  211. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data/testFile2 +0 -0
  212. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/data.spec.ts +0 -0
  213. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/emptyLayout.spec.ts +0 -0
  214. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/file_upload.spec.ts +0 -0
  215. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/folder.spec.ts +0 -0
  216. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/group.spec.ts +0 -0
  217. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/item.spec.ts +0 -0
  218. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/model.spec.ts +0 -0
  219. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_authorized_upload.spec.ts +0 -0
  220. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_autojoin.spec.ts +0 -0
  221. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_hashsum_download.spec.ts +0 -0
  222. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_homepage.spec.ts +0 -0
  223. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_item_licenses.spec.ts +0 -0
  224. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_jobs.spec.ts +0 -0
  225. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_readme.spec.ts +0 -0
  226. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web.spec.ts +0 -0
  227. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_config_view.spec.ts +0 -0
  228. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_container_view.spec.ts +0 -0
  229. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_item_selector.spec.ts +0 -0
  230. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_panel_group.spec.ts +0 -0
  231. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_parser.spec.ts +0 -0
  232. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_task.spec.ts +0 -0
  233. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_widget_model.spec.ts +0 -0
  234. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_slicer_cli_web_widget_view.spec.ts +0 -0
  235. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_terms.spec.ts +0 -0
  236. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_thumbnails.spec.ts +0 -0
  237. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/plugin_user_quota.spec.ts +0 -0
  238. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/routing.spec.ts +0 -0
  239. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/setApi.spec.ts +0 -0
  240. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/setting_show_download.spec.ts +0 -0
  241. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/sortWidget.spec.ts +0 -0
  242. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/swagger.spec.ts +0 -0
  243. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/user.spec.ts +0 -0
  244. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/utilities.spec.ts +0 -0
  245. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/version.spec.ts +0 -0
  246. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/spec/widgets.spec.ts +0 -0
  247. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/web/tests/util.ts +0 -0
  248. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/worker_plugin.py +0 -0
  249. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder/wsgi.py +0 -0
  250. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/SOURCES.txt +0 -0
  251. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/dependency_links.txt +0 -0
  252. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/entry_points.txt +0 -0
  253. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/not-zip-safe +0 -0
  254. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/requires.txt +0 -0
  255. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/girder.egg-info/top_level.txt +0 -0
  256. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/jsdoc.json +0 -0
  257. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/package-lock.json +0 -0
  258. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/package.json +0 -0
  259. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pyproject.toml +0 -0
  260. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/LICENSE +0 -0
  261. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/MANIFEST.in +0 -0
  262. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pyproject.toml +0 -0
  263. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/__init__.py +0 -0
  264. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/assertions.py +0 -0
  265. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/fixtures.py +0 -0
  266. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/plugin.py +0 -0
  267. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/plugin_registry.py +0 -0
  268. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/utils.py +0 -0
  269. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/pytest_girder/web_client.py +0 -0
  270. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/pytest_girder/setup.py +0 -0
  271. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/requirements-dev.txt +0 -0
  272. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/README.rst +0 -0
  273. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/migrate.py +0 -0
  274. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/requirements.txt +0 -0
  275. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/walk_girder.py +0 -0
  276. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/midas/walk_midas.py +0 -0
  277. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/publicNames.py +0 -0
  278. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/publicNames.txt +0 -0
  279. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/scripts/test_names.sh +0 -0
  280. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/setup.cfg +0 -0
  281. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/setup.py +0 -0
  282. {girder-5.0.21.dev2 → girder-5.0.21.dev6}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder
3
- Version: 5.0.21.dev2
3
+ Version: 5.0.21.dev6
4
4
  Summary: Web-based data management platform
5
5
  Home-page: https://girder.readthedocs.org
6
6
  Author: Kitware, Inc.
@@ -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
- files[0], offset, contentDisposition=contentDisposition,
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.DATA_OWN)
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('Admin access was denied for a resource.', 403)
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=AccessType.ADMIN, exc=True)
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder
3
- Version: 5.0.21.dev2
3
+ Version: 5.0.21.dev6
4
4
  Summary: Web-based data management platform
5
5
  Home-page: https://girder.readthedocs.org
6
6
  Author: Kitware, Inc.
@@ -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",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "tag": "5.0.20",
3
- "distance": 2,
4
- "node": "ga6954f59751db96fe599cb58fbabeef6e558a9c1",
3
+ "distance": 6,
4
+ "node": "g4641b1d88450e86aedcc5b31380d0007cb054868",
5
5
  "dirty": false,
6
6
  "branch": "master",
7
7
  "node_date": "2026-10-26"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes