girder-large-image-annotation 1.35.7.dev4__tar.gz → 1.35.7.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.
Files changed (91) hide show
  1. {girder_large_image_annotation-1.35.7.dev4/girder_large_image_annotation.egg-info → girder_large_image_annotation-1.35.7.dev8}/PKG-INFO +3 -3
  2. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/models/annotation.py +9 -7
  3. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8/girder_large_image_annotation.egg-info}/PKG-INFO +3 -3
  4. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/requires.txt +2 -2
  5. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/test_annotations_rest.py +28 -0
  6. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/LICENSE +0 -0
  7. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/README.rst +0 -0
  8. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/docs/annotations.rst +0 -0
  9. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/docs/plottable.rst +0 -0
  10. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/__init__.py +0 -0
  11. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/constants.py +0 -0
  12. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/handlers.py +0 -0
  13. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/models/__init__.py +0 -0
  14. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/models/annotationelement.py +0 -0
  15. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/rest/__init__.py +0 -0
  16. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/rest/annotation.py +0 -0
  17. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/utils/__init__.py +0 -0
  18. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/convert.js +0 -0
  19. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/convertFeatures.js +0 -0
  20. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/circle.js +0 -0
  21. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/ellipse.js +0 -0
  22. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/index.js +0 -0
  23. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/point.js +0 -0
  24. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/polyline.js +0 -0
  25. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/defaults/rectangle.js +0 -0
  26. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/common.js +0 -0
  27. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/convert.js +0 -0
  28. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/array.js +0 -0
  29. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/index.js +0 -0
  30. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/point.js +0 -0
  31. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/index.js +0 -0
  32. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/circle.js +0 -0
  33. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/ellipse.js +0 -0
  34. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/index.js +0 -0
  35. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/line.js +0 -0
  36. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/point.js +0 -0
  37. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/polygon.js +0 -0
  38. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geojs/types/rectangle.js +0 -0
  39. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/circle.js +0 -0
  40. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/ellipse.js +0 -0
  41. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/index.js +0 -0
  42. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/point.js +0 -0
  43. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/polyline.js +0 -0
  44. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/geometry/rectangle.js +0 -0
  45. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/index.js +0 -0
  46. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/rotate.js +0 -0
  47. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/annotations/style.js +0 -0
  48. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/collections/AnnotationCollection.js +0 -0
  49. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/collections/ElementCollection.js +0 -0
  50. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/collections/index.js +0 -0
  51. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/index.js +0 -0
  52. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/main.js +0 -0
  53. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/models/AnnotationModel.js +0 -0
  54. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/models/ElementModel.js +0 -0
  55. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/models/index.js +0 -0
  56. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/package.json +0 -0
  57. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/routes.js +0 -0
  58. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/stylesheets/annotationListWidget.styl +0 -0
  59. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/stylesheets/itemList.styl +0 -0
  60. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/templates/annotationListWidget.pug +0 -0
  61. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/templates/imageViewerAnnotationList.pug +0 -0
  62. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/templates/largeImageAnnotationConfig.pug +0 -0
  63. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/annotationListWidget.js +0 -0
  64. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/configView.js +0 -0
  65. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/hierarchyWidget.js +0 -0
  66. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/imageViewerSelectWidget.js +0 -0
  67. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/imageViewerWidget/base.js +0 -0
  68. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/imageViewerWidget/geojs.js +0 -0
  69. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/imageViewerWidget/index.js +0 -0
  70. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/index.js +0 -0
  71. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation/web_client/views/itemList.js +0 -0
  72. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/SOURCES.txt +0 -0
  73. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/dependency_links.txt +0 -0
  74. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/entry_points.txt +0 -0
  75. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/not-zip-safe +0 -0
  76. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/scm_file_list.json +0 -0
  77. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/girder_large_image_annotation.egg-info/top_level.txt +0 -0
  78. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/pyproject.toml +0 -0
  79. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/setup.cfg +0 -0
  80. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/setup.py +0 -0
  81. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/__init__.py +0 -0
  82. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/conftest.py +0 -0
  83. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/girder_utilities.py +0 -0
  84. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/test_annotations.py +0 -0
  85. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/test_web_client.py +0 -0
  86. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/.eslintrc +0 -0
  87. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/annotationListSpec.js +0 -0
  88. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/annotationSpec.js +0 -0
  89. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/geojsAnnotationSpec.js +0 -0
  90. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/geojsSpec.js +0 -0
  91. {girder_large_image_annotation-1.35.7.dev4 → girder_large_image_annotation-1.35.7.dev8}/test_annotation/web_client_specs/sample_annotation.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-large-image-annotation
3
- Version: 1.35.7.dev4
3
+ Version: 1.35.7.dev8
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Requires-Python: >=3.10
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema>=2.5.1
22
- Requires-Dist: girder-large-image>=1.35.7.dev4
22
+ Requires-Dist: girder-large-image>=1.35.7.dev8
23
23
  Requires-Dist: orjson
24
24
  Provides-Extra: compute
25
25
  Requires-Dist: openpyxl; extra == "compute"
@@ -27,7 +27,7 @@ Requires-Dist: pandas>=2.2; extra == "compute"
27
27
  Requires-Dist: python-calamine; extra == "compute"
28
28
  Requires-Dist: umap-learn; extra == "compute"
29
29
  Provides-Extra: tasks
30
- Requires-Dist: girder-large-image[tasks]>=1.35.7.dev4; extra == "tasks"
30
+ Requires-Dist: girder-large-image[tasks]>=1.35.7.dev8; extra == "tasks"
31
31
  Dynamic: author
32
32
  Dynamic: author-email
33
33
  Dynamic: classifier
@@ -733,7 +733,9 @@ class Annotation(AccessControlledModel):
733
733
  destItemId = destItem['_id']
734
734
  folder = Folder().load(destItem['folderId'], force=True)
735
735
  count = 0
736
- user = None
736
+ # The creator of the copied item is the user who copied it
737
+ user = User().load(destItem['creatorId'], force=True) if destItem.get(
738
+ 'creatorId') else None
737
739
  for annotation in annotations:
738
740
  logger.info('Copying annotation %d of %d from %s to %s',
739
741
  count + 1, total, srcItemId, destItemId)
@@ -745,13 +747,13 @@ class Annotation(AccessControlledModel):
745
747
  continue
746
748
  annotation['itemId'] = destItemId
747
749
  del annotation['_id']
748
- # Remove existing permissions, then give it the same permissions
749
- # as the item's folder.
750
- annotation.pop('access', None)
751
- self.copyAccessPolicies(destItem, annotation, save=False)
750
+ # Replace existing permissions with the same permissions as the
751
+ # destination folder, as if the annotation was created there.
752
+ # Always have an ACL, even if the folder somehow lacks one.
753
+ annotation['access'] = {'users': [], 'groups': []}
754
+ self.copyAccessPolicies(folder, annotation, save=False)
752
755
  self.setPublic(annotation, folder.get('public') or False, save=False)
753
- if user is None:
754
- user = User().load(folder['creatorId'], force=True)
756
+ # Give the user who copied the item admin access
755
757
  if user is not None:
756
758
  self.setUserAccess(annotation, user, AccessType.ADMIN, force=True, save=False)
757
759
  self.save(annotation)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-large-image-annotation
3
- Version: 1.35.7.dev4
3
+ Version: 1.35.7.dev8
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -19,7 +19,7 @@ Requires-Python: >=3.10
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  Requires-Dist: jsonschema>=2.5.1
22
- Requires-Dist: girder-large-image>=1.35.7.dev4
22
+ Requires-Dist: girder-large-image>=1.35.7.dev8
23
23
  Requires-Dist: orjson
24
24
  Provides-Extra: compute
25
25
  Requires-Dist: openpyxl; extra == "compute"
@@ -27,7 +27,7 @@ Requires-Dist: pandas>=2.2; extra == "compute"
27
27
  Requires-Dist: python-calamine; extra == "compute"
28
28
  Requires-Dist: umap-learn; extra == "compute"
29
29
  Provides-Extra: tasks
30
- Requires-Dist: girder-large-image[tasks]>=1.35.7.dev4; extra == "tasks"
30
+ Requires-Dist: girder-large-image[tasks]>=1.35.7.dev8; extra == "tasks"
31
31
  Dynamic: author
32
32
  Dynamic: author-email
33
33
  Dynamic: classifier
@@ -1,5 +1,5 @@
1
1
  jsonschema>=2.5.1
2
- girder-large-image>=1.35.7.dev4
2
+ girder-large-image>=1.35.7.dev8
3
3
  orjson
4
4
 
5
5
  [compute]
@@ -9,4 +9,4 @@ python-calamine
9
9
  umap-learn
10
10
 
11
11
  [tasks]
12
- girder-large-image[tasks]>=1.35.7.dev4
12
+ girder-large-image[tasks]>=1.35.7.dev8
@@ -22,6 +22,7 @@ try:
22
22
  from girder.models.folder import Folder
23
23
  from girder.models.item import Item
24
24
  from girder.models.setting import Setting
25
+ from girder.models.user import User
25
26
  except ImportError:
26
27
  # Make it easier to test without girder
27
28
  pass
@@ -631,6 +632,33 @@ class TestLargeImageAnnotationRest:
631
632
  assert utilities.respStatus(resp) == 200
632
633
  assert len(resp.json) == 1
633
634
 
635
+ def testAnnotationAccessAfterCopyItem(self, server, user, admin):
636
+ other = User().createUser(
637
+ 'other', 'password', 'Other', 'User', 'other@girder.test')
638
+ # A private folder created by the admin that the user can write to
639
+ # and another user can read
640
+ destFolder = Folder().createFolder(
641
+ utilities.namedFolder(admin, 'Private'), 'Shared', creator=admin)
642
+ Folder().setUserAccess(destFolder, user, AccessType.WRITE, save=True)
643
+ Folder().setUserAccess(destFolder, other, AccessType.READ, save=True)
644
+ item = Item().createItem('sample', user, utilities.namedFolder(user, 'Private'))
645
+ Annotation().createAnnotation(item, user, sampleAnnotation)
646
+ resp = server.request(
647
+ '/item/%s/copy' % item['_id'], method='POST', user=user,
648
+ params={'folderId': str(destFolder['_id'])})
649
+ assert utilities.respStatus(resp) == 200
650
+ newItemId = resp.json['_id']
651
+ # The user who copied the item has admin access to the copied
652
+ # annotation and the other user has the destination folder's access
653
+ for checkUser, level in ((user, AccessType.ADMIN), (other, AccessType.READ)):
654
+ resp = server.request(
655
+ '/annotation', user=checkUser, params={'itemId': newItemId})
656
+ assert utilities.respStatus(resp) == 200
657
+ assert len(resp.json) == 1
658
+ resp = server.request('/annotation/%s' % resp.json[0]['_id'], user=checkUser)
659
+ assert utilities.respStatus(resp) == 200
660
+ assert resp.json['_accessLevel'] == level
661
+
634
662
 
635
663
  @pytest.mark.plugin('large_image_annotation')
636
664
  class TestLargeImageAnnotationElementGroups: