imio.smartweb.common 1.2.26__tar.gz → 1.2.27__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 (162) hide show
  1. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/CHANGES.rst +9 -1
  2. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/PKG-INFO +23 -3
  3. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/setup.py +1 -1
  4. imio_smartweb_common-1.2.27/src/imio/smartweb/common/adapters.py +47 -0
  5. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/adapters.zcml +6 -0
  6. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/cropping.py +4 -5
  7. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/configure.zcml +1 -0
  8. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/utils.py +26 -0
  9. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/PKG-INFO +23 -3
  10. imio_smartweb_common-1.2.26/src/imio/smartweb/common/adapters.py +0 -19
  11. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/CONTRIBUTORS.rst +0 -0
  12. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/DEVELOP.rst +0 -0
  13. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/LICENSE.GPL +0 -0
  14. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/LICENSE.rst +0 -0
  15. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/MANIFEST.in +0 -0
  16. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/README.rst +0 -0
  17. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/docs/conf.py +0 -0
  18. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/docs/index.rst +0 -0
  19. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/requirements-coverage.txt +0 -0
  20. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/requirements.txt +0 -0
  21. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/setup.cfg +0 -0
  22. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/__init__.py +0 -0
  23. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/__init__.py +0 -0
  24. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/__init__.py +0 -0
  25. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/behaviors/__init__.py +0 -0
  26. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/behaviors/configure.zcml +0 -0
  27. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/behaviors/iam.py +0 -0
  28. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/behaviors/topics.py +0 -0
  29. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/__init__.py +0 -0
  30. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/collective_taxonomy_controlpanel.py +0 -0
  31. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/configure.zcml +0 -0
  32. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/description.pt +0 -0
  33. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/description.py +0 -0
  34. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/edit_taxonomy_data.pt +0 -0
  35. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/forms.py +0 -0
  36. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/overrides/plone.app.z3cform.templates.widget.pt +0 -0
  37. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/privacy/__init__.py +0 -0
  38. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/privacy/configure.zcml +0 -0
  39. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/privacy/form.py +0 -0
  40. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/privacy/utils.py +0 -0
  41. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/privacy/views.py +0 -0
  42. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/scaling.py +0 -0
  43. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/Makefile +0 -0
  44. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/package.json +0 -0
  45. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/smartweb-common-edit-compiled.css +0 -0
  46. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/smartweb-common-edit-compiled.js +0 -0
  47. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/smartweb-common-view-compiled.css +0 -0
  48. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/smartweb-common-view-compiled.js +0 -0
  49. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/src/edit.js +0 -0
  50. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/src/edit.less +0 -0
  51. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/src/view.js +0 -0
  52. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/src/view.less +0 -0
  53. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/static/webpack.config.js +0 -0
  54. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/browser/vocabulary.py +0 -0
  55. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/caching.py +0 -0
  56. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/caching_overrides.zcml +0 -0
  57. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/config.py +0 -0
  58. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/contact_utils.py +0 -0
  59. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/faceted/__init__.py +0 -0
  60. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/faceted/configure.zcml +0 -0
  61. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/faceted/utils.py +0 -0
  62. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/faceted/widget.pt +0 -0
  63. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/faceted/widget.py +0 -0
  64. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/indexers.py +0 -0
  65. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/indexers.zcml +0 -0
  66. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/interfaces.py +0 -0
  67. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/permissions.zcml +0 -0
  68. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/privacy.py +0 -0
  69. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/privacy.zcml +0 -0
  70. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/actions.xml +0 -0
  71. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/browserlayer.xml +0 -0
  72. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/catalog.xml +0 -0
  73. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/metadata.xml +0 -0
  74. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/registry.xml +0 -0
  75. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/default/rolemap.xml +0 -0
  76. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/catalog.xml +0 -0
  77. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/metadata.xml +0 -0
  78. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/registry.xml +0 -0
  79. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/types/Collection.xml +0 -0
  80. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/types/Document.xml +0 -0
  81. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/testing/types/Folder.xml +0 -0
  82. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles/uninstall/browserlayer.xml +0 -0
  83. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/profiles.zcml +0 -0
  84. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/rest/__init__.py +0 -0
  85. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/rest/configure.zcml +0 -0
  86. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/rest/odwb.py +0 -0
  87. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/rest/search_filters.py +0 -0
  88. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/rest/utils.py +0 -0
  89. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/setuphandlers.py +0 -0
  90. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/sharing/__init__.py +0 -0
  91. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/sharing/configure.zcml +0 -0
  92. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/sharing/localroles.py +0 -0
  93. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/sharing/permissions.py +0 -0
  94. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/sharing/permissions.zcml +0 -0
  95. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/subscribers.py +0 -0
  96. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/subscribers.zcml +0 -0
  97. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/testing.py +0 -0
  98. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/testing.zcml +0 -0
  99. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/__init__.py +0 -0
  100. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/resources/image.png +0 -0
  101. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/resources/image_1400x800.png +0 -0
  102. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/resources/image_1800x700.png +0 -0
  103. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/robot/test_example.robot +0 -0
  104. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_cropping.py +0 -0
  105. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_description.py +0 -0
  106. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_forms.py +0 -0
  107. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_indexes.py +0 -0
  108. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_local_roles.py +0 -0
  109. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_permissions.py +0 -0
  110. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_privacy.py +0 -0
  111. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_rest.py +0 -0
  112. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_robot.py +0 -0
  113. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_setup.py +0 -0
  114. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_subscribers.py +0 -0
  115. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_taxonomy.py +0 -0
  116. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_text.py +0 -0
  117. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_utils.py +0 -0
  118. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_viewlets.py +0 -0
  119. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_vocabularies.py +0 -0
  120. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_vocabulary.py +0 -0
  121. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/tests/test_widgets.py +0 -0
  122. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/__init__.py +0 -0
  123. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/configure.zcml +0 -0
  124. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1007_to_1008/rolemap.xml +0 -0
  125. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1008_to_1009/actions.xml +0 -0
  126. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1009_to_1010/registry/tiny_nonbreakingspace.xml +0 -0
  127. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/resources.xml +0 -0
  128. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/scales.xml +0 -0
  129. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1010_to_1011/registry/tinymce.xml +0 -0
  130. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1011_to_1012/registry/bundles.xml +0 -0
  131. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1013_to_1014/registry/tinymce.xml +0 -0
  132. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1014_to_1015/registry/syndication.xml +0 -0
  133. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1015_to_1016/registry/patched-faceted-jquery.xml +0 -0
  134. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1016_to_1017/registry/scales.xml +0 -0
  135. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1017_to_1018/registry.xml +0 -0
  136. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1018_to_1019/registry/scales.xml +0 -0
  137. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1022_to_1023/registry/scales.xml +0 -0
  138. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1023_to_1024/registry/scales.xml +0 -0
  139. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1025_to_1026/registry/scales.xml +0 -0
  140. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1027_to_1028/restored-faceted-jquery.xml +0 -0
  141. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1028_to_1029/registry.xml +0 -0
  142. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/profiles/1029_to_1030/registry.xml +0 -0
  143. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/upgrades/upgrades.py +0 -0
  144. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/__init__.py +0 -0
  145. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/analytics.pt +0 -0
  146. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/colophon.pt +0 -0
  147. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/colophon.py +0 -0
  148. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/configure.zcml +0 -0
  149. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/privacy.pt +0 -0
  150. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/privacy.py +0 -0
  151. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/skip_to_content.pt +0 -0
  152. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/viewlets/skip_to_content.py +0 -0
  153. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/vocabularies.py +0 -0
  154. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/vocabularies.zcml +0 -0
  155. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/widgets/__init__.py +0 -0
  156. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio/smartweb/common/widgets/select.py +0 -0
  157. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/SOURCES.txt +0 -0
  158. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/dependency_links.txt +0 -0
  159. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/namespace_packages.txt +0 -0
  160. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/not-zip-safe +0 -0
  161. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/requires.txt +0 -0
  162. {imio_smartweb_common-1.2.26 → imio_smartweb_common-1.2.27}/src/imio.smartweb.common.egg-info/top_level.txt +0 -0
@@ -2,6 +2,13 @@ Changelog
2
2
  =========
3
3
 
4
4
 
5
+ 1.2.27 (2025-03-19)
6
+ -------------------
7
+
8
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
9
+ [boulch]
10
+
11
+
5
12
  1.2.26 (2025-03-12)
6
13
  -------------------
7
14
 
@@ -58,7 +65,8 @@ Changelog
58
65
  1.2.19 (2025-01-09)
59
66
  -------------------
60
67
 
61
- - Nothing changed yet.
68
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
69
+ [remdub]
62
70
 
63
71
 
64
72
  1.2.18 (2024-07-01)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: imio.smartweb.common
3
- Version: 1.2.26
3
+ Version: 1.2.27
4
4
  Summary: Common utilities, vocabularies, taxonomies for imio.smartweb & co products
5
5
  Home-page: https://github.com/imio/imio.smartweb.common
6
6
  Author: iMio
@@ -51,6 +51,18 @@ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
51
51
  Requires-Dist: plone.restapi[test]; extra == "test"
52
52
  Requires-Dist: freezegun; extra == "test"
53
53
  Requires-Dist: mock; extra == "test"
54
+ Dynamic: author
55
+ Dynamic: author-email
56
+ Dynamic: classifier
57
+ Dynamic: description
58
+ Dynamic: home-page
59
+ Dynamic: keywords
60
+ Dynamic: license
61
+ Dynamic: project-url
62
+ Dynamic: provides-extra
63
+ Dynamic: requires-dist
64
+ Dynamic: requires-python
65
+ Dynamic: summary
54
66
 
55
67
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
56
68
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -162,6 +174,13 @@ Changelog
162
174
  =========
163
175
 
164
176
 
177
+ 1.2.27 (2025-03-19)
178
+ -------------------
179
+
180
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
181
+ [boulch]
182
+
183
+
165
184
  1.2.26 (2025-03-12)
166
185
  -------------------
167
186
 
@@ -218,7 +237,8 @@ Changelog
218
237
  1.2.19 (2025-01-09)
219
238
  -------------------
220
239
 
221
- - Nothing changed yet.
240
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
241
+ [remdub]
222
242
 
223
243
 
224
244
  1.2.18 (2024-07-01)
@@ -16,7 +16,7 @@ long_description = "\n\n".join(
16
16
 
17
17
  setup(
18
18
  name="imio.smartweb.common",
19
- version="1.2.26",
19
+ version="1.2.27",
20
20
  description="Common utilities, vocabularies, taxonomies for imio.smartweb & co products",
21
21
  long_description=long_description,
22
22
  # Get more from https://pypi.org/classifiers/
@@ -0,0 +1,47 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from imio.smartweb.common.utils import get_image_format
4
+ from plone.namedfile.interfaces import IAvailableSizes
5
+ from plone.namedfile.interfaces import INamedImageField
6
+ from plone.namedfile.field import InvalidImageFile
7
+ from plone.namedfile.utils import get_contenttype
8
+ from zope.component import adapter
9
+ from zope.component import getUtility
10
+ from zope.interface import Interface
11
+
12
+
13
+ class BaseCroppingProvider(object):
14
+ def __init__(self, context):
15
+ self.context = context
16
+
17
+ def get_scales(self, fieldname, request=None):
18
+ if self.context.portal_type == "Image":
19
+ # imio.smartweb.core override get_scales.
20
+ # so this is only available for authentic sources
21
+ return []
22
+ allowed_sizes = getUtility(IAvailableSizes)()
23
+ scales = list(allowed_sizes.keys())
24
+ scales.remove("banner")
25
+ return scales
26
+
27
+
28
+ @adapter(INamedImageField, Interface)
29
+ class ImageContenttypeValidator:
30
+ def __init__(self, field, value):
31
+ self.field = field
32
+ self.value = value
33
+
34
+ def __call__(self):
35
+ if self.value is None:
36
+ return
37
+ mimetype = get_image_format(self.value)
38
+
39
+ valid_mimetypes = [
40
+ "image/gif",
41
+ "image/jpeg",
42
+ "image/png",
43
+ "image/svg+xml",
44
+ "image/webp",
45
+ ]
46
+ if mimetype not in valid_mimetypes:
47
+ raise InvalidImageFile(mimetype, self.field.__name__)
@@ -7,4 +7,10 @@
7
7
  factory=".adapters.BaseCroppingProvider"
8
8
  />
9
9
 
10
+ <adapter
11
+ factory=".adapters.ImageContenttypeValidator"
12
+ provides="plone.namedfile.field.IPluggableImageFieldValidation"
13
+ name="smartweb_image_contenttype"
14
+ />
15
+
10
16
  </configure>
@@ -51,11 +51,10 @@ class SmartwebCroppingImageScalingFactory(CroppingImageScalingFactory):
51
51
  ):
52
52
  storage = Storage(self.context)
53
53
  self.box = storage.read(fieldname, scale)
54
- if scale is not None:
55
- if "portrait" in scale or "paysage" in scale or "carre" in scale:
56
- orientation = scale.split("_")[0]
57
- # take cropping box from "affiche" scale
58
- self.box = storage.read(fieldname, f"{orientation}_affiche")
54
+ if scale and ("portrait" in scale or "paysage" in scale or "carre" in scale):
55
+ orientation = scale.split("_")[0]
56
+ # take cropping box from "affiche" scale
57
+ self.box = storage.read(fieldname, f"{orientation}_affiche")
59
58
  if self.box:
60
59
  mode = "contain"
61
60
  else:
@@ -1,6 +1,7 @@
1
1
  <configure
2
2
  xmlns="http://namespaces.zope.org/zope">
3
3
 
4
+ <include package="z3c.unconfigure" file="meta.zcml" />
4
5
  <include package="collective.taxonomy" />
5
6
  <include package="eea.facetednavigation" />
6
7
  <include package="eea.facetednavigation" file="meta.zcml" />
@@ -1,9 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  from Acquisition import aq_parent
4
+ from io import BytesIO
4
5
  from imio.smartweb.common.config import TRANSLATED_VOCABULARIES
5
6
  from imio.smartweb.common.interfaces import ICropping
6
7
  from imio.smartweb.locales import SmartwebMessageFactory as _
8
+ from PIL import Image
7
9
  from plone import api
8
10
  from plone.app.imagecropping.storage import Storage
9
11
  from plone.dexterity.utils import iterSchemata
@@ -203,3 +205,27 @@ def get_parent_of_type(context, content_type):
203
205
  return parent
204
206
  parent = aq_parent(parent)
205
207
  return None
208
+
209
+
210
+ def _get_pil_mimetype(pil_image):
211
+ """Retourne le MIME type d'une image PIL."""
212
+ format_to_mime = {
213
+ "JPEG": "image/jpeg",
214
+ "PNG": "image/png",
215
+ "GIF": "image/gif",
216
+ "BMP": "image/bmp",
217
+ "TIFF": "image/tiff",
218
+ "WEBP": "image/webp",
219
+ "SVG": "image/svg+xml",
220
+ }
221
+ return format_to_mime.get(pil_image.format, "application/octet-stream")
222
+
223
+
224
+ def get_image_format(named_blob_image):
225
+ """Détecte le format d'une image à partir de son contenu binaire."""
226
+ if named_blob_image and named_blob_image.data:
227
+ try:
228
+ with Image.open(BytesIO(named_blob_image.data)) as img:
229
+ return _get_pil_mimetype(img)
230
+ except Exception:
231
+ return None
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: imio.smartweb.common
3
- Version: 1.2.26
3
+ Version: 1.2.27
4
4
  Summary: Common utilities, vocabularies, taxonomies for imio.smartweb & co products
5
5
  Home-page: https://github.com/imio/imio.smartweb.common
6
6
  Author: iMio
@@ -51,6 +51,18 @@ Requires-Dist: plone.app.robotframework[debug]; extra == "test"
51
51
  Requires-Dist: plone.restapi[test]; extra == "test"
52
52
  Requires-Dist: freezegun; extra == "test"
53
53
  Requires-Dist: mock; extra == "test"
54
+ Dynamic: author
55
+ Dynamic: author-email
56
+ Dynamic: classifier
57
+ Dynamic: description
58
+ Dynamic: home-page
59
+ Dynamic: keywords
60
+ Dynamic: license
61
+ Dynamic: project-url
62
+ Dynamic: provides-extra
63
+ Dynamic: requires-dist
64
+ Dynamic: requires-python
65
+ Dynamic: summary
54
66
 
55
67
  .. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.
56
68
  If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide.html
@@ -162,6 +174,13 @@ Changelog
162
174
  =========
163
175
 
164
176
 
177
+ 1.2.27 (2025-03-19)
178
+ -------------------
179
+
180
+ - WEB-4122 : Create adapter/validator to filter valid image mimetype in our solutions
181
+ [boulch]
182
+
183
+
165
184
  1.2.26 (2025-03-12)
166
185
  -------------------
167
186
 
@@ -218,7 +237,8 @@ Changelog
218
237
  1.2.19 (2025-01-09)
219
238
  -------------------
220
239
 
221
- - Nothing changed yet.
240
+ - WEB-4153 : Override @vocabularies endpoint to add a cache ruleset on it
241
+ [remdub]
222
242
 
223
243
 
224
244
  1.2.18 (2024-07-01)
@@ -1,19 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- from plone.namedfile.interfaces import IAvailableSizes
4
- from zope.component import getUtility
5
-
6
-
7
- class BaseCroppingProvider(object):
8
- def __init__(self, context):
9
- self.context = context
10
-
11
- def get_scales(self, fieldname, request=None):
12
- if self.context.portal_type == "Image":
13
- # imio.smartweb.core override get_scales.
14
- # so this is only available for authentic sources
15
- return []
16
- allowed_sizes = getUtility(IAvailableSizes)()
17
- scales = list(allowed_sizes.keys())
18
- scales.remove("banner")
19
- return scales