geovisio 2.11.0__tar.gz → 2.12.0__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 (457) hide show
  1. {geovisio-2.11.0 → geovisio-2.12.0}/.dockerignore +3 -3
  2. {geovisio-2.11.0 → geovisio-2.12.0}/.gitignore +1 -0
  3. {geovisio-2.11.0 → geovisio-2.12.0}/.gitlab-ci.yml +9 -9
  4. {geovisio-2.11.0 → geovisio-2.12.0}/.pre-commit-config.yaml +1 -1
  5. {geovisio-2.11.0 → geovisio-2.12.0}/CHANGELOG.md +30 -6
  6. {geovisio-2.11.0 → geovisio-2.12.0}/Dockerfile +2 -2
  7. {geovisio-2.11.0 → geovisio-2.12.0}/PKG-INFO +6 -26
  8. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-compose-full.yml +1 -1
  9. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-entrypoint.sh +2 -2
  10. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/docker-compose.yml +1 -1
  11. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/nginx.conf +1 -1
  12. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-osm-auth/docker-compose.yml +1 -1
  13. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-osm-auth/nginx.conf +1 -0
  14. {geovisio-2.11.0 → geovisio-2.12.0}/docs/api/api.md +50 -1
  15. {geovisio-2.11.0 → geovisio-2.12.0}/docs/api/open_api.json +313 -25
  16. {geovisio-2.11.0 → geovisio-2.12.0}/docs/dev/STAC_compatibility.md +30 -0
  17. {geovisio-2.11.0 → geovisio-2.12.0}/docs/dev/develop_server.md +28 -21
  18. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/cli.md +60 -34
  19. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/database_setup.md +16 -12
  20. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/deep_dive/external_Identity_Providers.md +1 -1
  21. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/deep_dive/pictures_processing.md +8 -0
  22. geovisio-2.12.0/docs/install/deep_dive/visibility.md +27 -0
  23. geovisio-2.12.0/docs/install/index.md +13 -0
  24. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/install.md +16 -7
  25. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/running.md +46 -19
  26. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/settings.md +42 -10
  27. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/tutorials/running_docker_keycloak.md +5 -5
  28. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/tutorials/running_docker_osm_auth.md +14 -3
  29. geovisio-2.12.0/docs/install/update.md +8 -0
  30. geovisio-2.12.0/example.env +107 -0
  31. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/__init__.py +30 -2
  32. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/db.py +1 -1
  33. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/db_migrations.py +2 -2
  34. geovisio-2.12.0/geovisio/migrations/20221201_02_ZG8AR-camera-information.rollback.sql +5 -0
  35. geovisio-2.12.0/geovisio/migrations/20221201_02_ZG8AR-camera-information.sql +10 -0
  36. geovisio-2.12.0/geovisio/templates/main.html +42 -0
  37. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/templates/viewer.html +8 -15
  38. geovisio-2.12.0/geovisio/translations/cy/LC_MESSAGES/messages.mo +0 -0
  39. geovisio-2.11.0/geovisio/translations/messages.pot → geovisio-2.12.0/geovisio/translations/cy/LC_MESSAGES/messages.po +3 -4
  40. geovisio-2.12.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  41. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/en/LC_MESSAGES/messages.po +155 -149
  42. geovisio-2.12.0/geovisio/translations/messages.pot +821 -0
  43. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/cql2.py +22 -17
  44. geovisio-2.12.0/geovisio/utils/link.py +25 -0
  45. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/upload_set.py +42 -2
  46. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/collections.py +80 -40
  47. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/docs.py +1 -1
  48. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/items.py +54 -4
  49. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/upload_set.py +2 -3
  50. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/users.py +1 -1
  51. geovisio-2.12.0/images/favicon.ico +0 -0
  52. geovisio-2.12.0/images/favicon.svg +199 -0
  53. geovisio-2.12.0/images/logo.png +0 -0
  54. geovisio-2.12.0/images/logo.svg +187 -0
  55. {geovisio-2.11.0 → geovisio-2.12.0}/mkdocs.yml +13 -10
  56. {geovisio-2.11.0 → geovisio-2.12.0}/pyproject.toml +16 -13
  57. {geovisio-2.11.0 → geovisio-2.12.0}/tests/conftest.py +46 -36
  58. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/test_auth.py +0 -1
  59. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_collections.py +72 -2
  60. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_items.py +95 -2
  61. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_prepare.py +11 -10
  62. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_upload_set.py +93 -19
  63. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_users.py +1 -3
  64. {geovisio-2.11.0 → geovisio-2.12.0}/uv.lock +148 -106
  65. {geovisio-2.11.0 → geovisio-2.12.0}/yoyo.ini +1 -1
  66. geovisio-2.11.0/docs/install/update.md +0 -8
  67. geovisio-2.11.0/geovisio/templates/main.html +0 -93
  68. geovisio-2.11.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  69. geovisio-2.11.0/geovisio/utils/link.py +0 -15
  70. geovisio-2.11.0/images/big_picture.png +0 -0
  71. geovisio-2.11.0/images/big_picture.svg +0 -436
  72. geovisio-2.11.0/images/favicon.ico +0 -0
  73. geovisio-2.11.0/images/favicon.svg +0 -82
  74. geovisio-2.11.0/images/logo.png +0 -0
  75. geovisio-2.11.0/images/logo.svg +0 -156
  76. geovisio-2.11.0/images/logo_full.png +0 -0
  77. geovisio-2.11.0/images/logo_full.svg +0 -191
  78. geovisio-2.11.0/migrations/20221201_02_ZG8AR-camera-information.py +0 -49
  79. geovisio-2.11.0/migrations/data/readme.md +0 -7
  80. geovisio-2.11.0/migrations/data/sensor_data.json +0 -3711
  81. {geovisio-2.11.0 → geovisio-2.12.0}/.flaskenv +0 -0
  82. {geovisio-2.11.0 → geovisio-2.12.0}/.python-version +0 -0
  83. {geovisio-2.11.0 → geovisio-2.12.0}/CODE_OF_CONDUCT.md +0 -0
  84. {geovisio-2.11.0 → geovisio-2.12.0}/LICENSE +0 -0
  85. {geovisio-2.11.0 → geovisio-2.12.0}/Makefile +0 -0
  86. {geovisio-2.11.0 → geovisio-2.12.0}/Procfile +0 -0
  87. {geovisio-2.11.0 → geovisio-2.12.0}/README.md +0 -0
  88. {geovisio-2.11.0 → geovisio-2.12.0}/babel.cfg +0 -0
  89. {geovisio-2.11.0 → geovisio-2.12.0}/bin/run_production_api.sh +0 -0
  90. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-compose-blurring.yml +0 -0
  91. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-compose-full-linux.yml +0 -0
  92. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-compose-keycloak.yml +0 -0
  93. {geovisio-2.11.0 → geovisio-2.12.0}/docker/docker-compose-minio.yml +0 -0
  94. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
  95. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
  96. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/env.example +0 -0
  97. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
  98. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
  99. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-keycloak-auth/robots.txt +0 -0
  100. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-osm-auth/env.example +0 -0
  101. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
  102. {geovisio-2.11.0 → geovisio-2.12.0}/docker/full-osm-auth/robots.txt +0 -0
  103. {geovisio-2.11.0 → geovisio-2.12.0}/docker/keycloak-realm.json +0 -0
  104. {geovisio-2.11.0 → geovisio-2.12.0}/docker-compose.yml +0 -0
  105. {geovisio-2.11.0 → geovisio-2.12.0}/docs/api/openapi.md +0 -0
  106. {geovisio-2.11.0 → geovisio-2.12.0}/docs/dev/releases.md +0 -0
  107. {geovisio-2.11.0 → geovisio-2.12.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
  108. {geovisio-2.11.0 → geovisio-2.12.0}/docs/images/geovisio-architecture-simple.png +0 -0
  109. {geovisio-2.11.0 → geovisio-2.12.0}/docs/images/geovisio_authentication_flow.svg +0 -0
  110. {geovisio-2.11.0 → geovisio-2.12.0}/docs/index.md +0 -0
  111. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/deep_dive/blur_api.md +0 -0
  112. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/deep_dive/excluded_areas.md +0 -0
  113. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/deep_dive/semantics.md +0 -0
  114. {geovisio-2.11.0 → geovisio-2.12.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
  115. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/__init__.py +0 -0
  116. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/cleanup.py +0 -0
  117. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
  118. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
  119. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/sequence_heading.py +0 -0
  120. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/admin_cli/user.py +0 -0
  121. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/config_app.py +0 -0
  122. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/errors.py +0 -0
  123. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
  124. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
  125. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
  126. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
  127. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
  128. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
  129. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
  130. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
  131. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
  132. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
  133. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
  134. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
  135. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
  136. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230324_01_ba9WA-status.sql +0 -0
  137. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
  138. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
  139. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
  140. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
  141. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
  142. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
  143. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
  144. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
  145. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
  146. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
  147. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
  148. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
  149. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
  150. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
  151. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
  152. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
  153. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
  154. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
  155. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
  156. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
  157. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
  158. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
  159. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
  160. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
  161. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
  162. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
  163. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
  164. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
  165. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
  166. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
  167. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
  168. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
  169. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
  170. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
  171. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
  172. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
  173. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
  174. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
  175. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
  176. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
  177. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
  178. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
  179. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
  180. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
  181. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
  182. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -0
  183. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240409_01_jnhra-pictures-grid.sql +0 -0
  184. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
  185. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
  186. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
  187. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
  188. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
  189. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
  190. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -0
  191. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240507_02_dzVET-picture-grid-public.sql +0 -0
  192. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
  193. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
  194. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
  195. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
  196. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
  197. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
  198. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
  199. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
  200. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
  201. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
  202. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
  203. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
  204. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
  205. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
  206. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
  207. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
  208. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
  209. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
  210. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
  211. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
  212. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
  213. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
  214. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
  215. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_DOqmf-reports.sql +0 -0
  216. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
  217. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
  218. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
  219. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
  220. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
  221. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
  222. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
  223. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
  224. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
  225. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
  226. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
  227. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
  228. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
  229. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
  230. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
  231. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
  232. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
  233. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20240912_01_dAALm-account-index.sql +0 -0
  234. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +0 -0
  235. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +0 -0
  236. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
  237. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
  238. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
  239. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
  240. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
  241. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
  242. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
  243. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
  244. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
  245. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
  246. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
  247. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
  248. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
  249. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
  250. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
  251. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
  252. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
  253. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250109_01_4OOP4-pages.sql +0 -0
  254. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
  255. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
  256. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
  257. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
  258. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +0 -0
  259. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250206_01_PjrEL-annotation-semantics.sql +0 -0
  260. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250306_01_58oju-semantics-views.rollback.sql +0 -0
  261. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250306_01_58oju-semantics-views.sql +0 -0
  262. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +0 -0
  263. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250318_01_pANl1-semantics-functions.sql +0 -0
  264. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +0 -0
  265. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250331_01_kRKjo-store-detections-id.sql +0 -0
  266. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +0 -0
  267. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250424_01_RBGXC-semantics-indexes.sql +0 -0
  268. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250502_01_ZNmkU-job-task-read-metadata.rollback.sql +0 -0
  269. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250502_01_ZNmkU-job-task-read-metadata.sql +0 -0
  270. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.rollback.sql +0 -0
  271. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.sql +0 -0
  272. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +0 -0
  273. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +0 -0
  274. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250513_01_8WkZC-upload-sets-default-config.rollback.sql +0 -0
  275. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250513_01_8WkZC-upload-sets-default-config.sql +0 -0
  276. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250523_01_b11eW-picture-update-index.rollback.sql +0 -0
  277. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250523_01_b11eW-picture-update-index.sql +0 -0
  278. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250523_02_5ZXXh-update-picture-updated-at.rollback.sql +0 -0
  279. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250523_02_5ZXXh-update-picture-updated-at.sql +0 -0
  280. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250624_01_SETp6-job-warnings.rollback.sql +0 -0
  281. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250624_01_SETp6-job-warnings.sql +0 -0
  282. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250701_01_kr371-upload-set-semantics.rollback.sql +0 -0
  283. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250701_01_kr371-upload-set-semantics.sql +0 -0
  284. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250703_01_p2WVV-sequence-upload-set-link.rollback.sql +0 -0
  285. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250703_01_p2WVV-sequence-upload-set-link.sql +0 -0
  286. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250703_02_q0s3D-sequence-upload-set-fill.rollback.sql +0 -0
  287. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250703_02_q0s3D-sequence-upload-set-fill.sql +0 -0
  288. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250716_01_f8tcJ-check-empty-annotation-late.rollback.sql +0 -0
  289. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250716_01_f8tcJ-check-empty-annotation-late.sql +0 -0
  290. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250728_01_2zgur-upload-set-relative-heading.rollback.sql +0 -0
  291. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250728_01_2zgur-upload-set-relative-heading.sql +0 -0
  292. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.rollback.sql +0 -0
  293. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.sql +0 -0
  294. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250902_01_k5UTq-visibility-status.rollback.sql +0 -0
  295. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250902_01_k5UTq-visibility-status.sql +0 -0
  296. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250904_01_3uVKX-visibility-functions.rollback.sql +0 -0
  297. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20250904_01_3uVKX-visibility-functions.sql +0 -0
  298. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251110_01_bWEXo-report-visibility.rollback.sql +0 -0
  299. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251110_01_bWEXo-report-visibility.sql +0 -0
  300. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251124_01_0xdqi-page-updates.rollback.sql +0 -0
  301. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251124_01_0xdqi-page-updates.sql +0 -0
  302. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251127_01_S6Ci8-pictures-grid-visibility.rollback.sql +0 -0
  303. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251127_01_S6Ci8-pictures-grid-visibility.sql +0 -0
  304. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251202_01_Q3g59-pictures-grid-logged-only.rollback.sql +0 -0
  305. {geovisio-2.11.0 → geovisio-2.12.0/geovisio}/migrations/20251202_01_Q3g59-pictures-grid-logged-only.sql +0 -0
  306. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ar/LC_MESSAGES/messages.mo +0 -0
  307. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ar/LC_MESSAGES/messages.po +0 -0
  308. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/be/LC_MESSAGES/messages.mo +0 -0
  309. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/be/LC_MESSAGES/messages.po +0 -0
  310. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
  311. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/br/LC_MESSAGES/messages.po +0 -0
  312. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  313. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/da/LC_MESSAGES/messages.po +0 -0
  314. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  315. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/de/LC_MESSAGES/messages.po +0 -0
  316. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
  317. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/el/LC_MESSAGES/messages.po +0 -0
  318. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  319. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +0 -0
  320. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
  321. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/es/LC_MESSAGES/messages.po +0 -0
  322. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
  323. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +0 -0
  324. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  325. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +0 -0
  326. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
  327. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +0 -0
  328. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  329. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/it/LC_MESSAGES/messages.po +0 -0
  330. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
  331. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +0 -0
  332. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
  333. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +0 -0
  334. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  335. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/nl/LC_MESSAGES/messages.po +0 -0
  336. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/oc/LC_MESSAGES/messages.mo +0 -0
  337. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/oc/LC_MESSAGES/messages.po +0 -0
  338. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
  339. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +0 -0
  340. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pt/LC_MESSAGES/messages.mo +0 -0
  341. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pt/LC_MESSAGES/messages.po +0 -0
  342. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
  343. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
  344. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
  345. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/sv/LC_MESSAGES/messages.po +0 -0
  346. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
  347. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/ti/LC_MESSAGES/messages.po +0 -0
  348. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/tr/LC_MESSAGES/messages.mo +0 -0
  349. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/tr/LC_MESSAGES/messages.po +0 -0
  350. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/uk/LC_MESSAGES/messages.mo +0 -0
  351. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/uk/LC_MESSAGES/messages.po +0 -0
  352. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  353. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
  354. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/__init__.py +0 -0
  355. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/annotations.py +0 -0
  356. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/auth.py +0 -0
  357. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/db.py +0 -0
  358. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/excluded_areas.py +0 -0
  359. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/extent.py +0 -0
  360. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/fields.py +0 -0
  361. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/filesystems.py +0 -0
  362. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/items.py +0 -0
  363. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/loggers.py +0 -0
  364. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/model_query.py +0 -0
  365. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/params.py +0 -0
  366. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/pic_shape.py +0 -0
  367. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/pictures.py +0 -0
  368. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/reports.py +0 -0
  369. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/semantics.py +0 -0
  370. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/sentry.py +0 -0
  371. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/sequences.py +0 -0
  372. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/tags.py +0 -0
  373. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/time.py +0 -0
  374. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/tokens.py +0 -0
  375. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/users.py +0 -0
  376. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/utils/website.py +0 -0
  377. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/__init__.py +0 -0
  378. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/annotations.py +0 -0
  379. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/auth.py +0 -0
  380. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/configuration.py +0 -0
  381. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/excluded_areas.py +0 -0
  382. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/map.py +0 -0
  383. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/pages.py +0 -0
  384. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/params.py +0 -0
  385. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/pictures.py +0 -0
  386. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/prepare.py +0 -0
  387. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/queryables.py +0 -0
  388. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/reports.py +0 -0
  389. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/rss.py +0 -0
  390. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/stac.py +0 -0
  391. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/tokens.py +0 -0
  392. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/web/utils.py +0 -0
  393. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/workers/__init__.py +0 -0
  394. {geovisio-2.11.0 → geovisio-2.12.0}/geovisio/workers/runner_pictures.py +0 -0
  395. {geovisio-2.11.0 → geovisio-2.12.0}/images/sponsors.png +0 -0
  396. {geovisio-2.11.0 → geovisio-2.12.0}/tests/__init__.py +0 -0
  397. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/1.jpg +0 -0
  398. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/1_blurred.jpg +0 -0
  399. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/2.jpg +0 -0
  400. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/3.jpg +0 -0
  401. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/4.jpg +0 -0
  402. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/5.jpg +0 -0
  403. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/b1.jpg +0 -0
  404. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/b2.jpg +0 -0
  405. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/c1.jpg +0 -0
  406. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/crop.jpg +0 -0
  407. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/d1.jpg +0 -0
  408. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e1.jpg +0 -0
  409. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e1_artist.jpg +0 -0
  410. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e1_without_exif.jpg +0 -0
  411. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e2.jpg +0 -0
  412. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e3.jpg +0 -0
  413. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e4.jpg +0 -0
  414. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/e5.jpg +0 -0
  415. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/focal_zero.jpg +0 -0
  416. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/invalid_exif.jpg +0 -0
  417. {geovisio-2.11.0 → geovisio-2.12.0}/tests/data/xpcomment.jpg +0 -0
  418. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/__init__.py +0 -0
  419. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/conftest.py +0 -0
  420. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_api_conformance.py +0 -0
  421. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_many_semantics.py +0 -0
  422. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_many_sequences.py +0 -0
  423. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_many_sequences_different_insertion_date.py +0 -0
  424. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_visibility.py +0 -0
  425. {geovisio-2.11.0 → geovisio-2.12.0}/tests/fixed_data/test_web_collections_one_collection.py +0 -0
  426. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/__init__.py +0 -0
  427. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/conftest.py +0 -0
  428. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/docker-compose-auth-test.yml +0 -0
  429. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/test_s3.py +0 -0
  430. {geovisio-2.11.0 → geovisio-2.12.0}/tests/integration/test_tokens.py +0 -0
  431. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_admin_cli_cleanup.py +0 -0
  432. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_db_migrations.py +0 -0
  433. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_factory.py +0 -0
  434. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_model_query.py +0 -0
  435. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_annotations.py +0 -0
  436. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_auth.py +0 -0
  437. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_cql2.py +0 -0
  438. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_filesystems.py +0 -0
  439. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_items.py +0 -0
  440. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_pictures.py +0 -0
  441. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_reports.py +0 -0
  442. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_semantics.py +0 -0
  443. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_sequences.py +0 -0
  444. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_tags.py +0 -0
  445. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_upload_set.py +0 -0
  446. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_utils_users.py +0 -0
  447. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_annotation.py +0 -0
  448. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_configuration.py +0 -0
  449. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_excluded_areas.py +0 -0
  450. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_map.py +0 -0
  451. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_pages.py +0 -0
  452. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_params.py +0 -0
  453. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_pictures.py +0 -0
  454. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_queryables.py +0 -0
  455. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_reports.py +0 -0
  456. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_web_stac.py +0 -0
  457. {geovisio-2.11.0 → geovisio-2.12.0}/tests/test_workers_runner_pictures.py +0 -0
@@ -11,8 +11,8 @@
11
11
  !/geovisio/**/*.pot
12
12
  !/docker/docker-entrypoint.sh
13
13
  !/images/*
14
- !/migrations/*.sql
15
- !/migrations/*.py
16
- !/migrations/data/*.json
14
+ !/geovisio/migrations/*.sql
15
+ !/geovisio/migrations/*.py
16
+ !/geovisio/migrations/data/*.json
17
17
 
18
18
  /**/__pycache__
@@ -1,5 +1,6 @@
1
1
  pictures
2
2
  *.env
3
+ !example.env
3
4
  *.log
4
5
  picfs
5
6
  env
@@ -19,9 +19,9 @@ code-fmt:
19
19
  stage: test
20
20
  only:
21
21
  - merge_requests
22
- image: python:3.10-alpine
22
+ image: python:3.13-alpine
23
23
  script:
24
- - pip install black
24
+ - pip install --group format
25
25
  - black --fast --check .
26
26
 
27
27
  test-in-docker:
@@ -67,7 +67,7 @@ test-in-docker:
67
67
  --network=host
68
68
  --volume ./tests:/opt/geovisio/tests
69
69
  $TMP_CI_IMAGE
70
- -c 'pip install -e .[dev] && /home/geovisio/.local/bin/pytest -m "not skipci"'
70
+ -c 'pip install --upgrade pip && pip install -e . --group dev && /home/geovisio/.local/bin/pytest -m "not skipci"'
71
71
  after_script:
72
72
  - docker rmi $TMP_CI_IMAGE || true # accept failure, as image creation can fail
73
73
 
@@ -79,7 +79,7 @@ test:
79
79
  - when: on_success
80
80
 
81
81
  stage: test
82
- image: python:3.10
82
+ image: python:3.13
83
83
  services:
84
84
  - postgis/postgis:15-3.4
85
85
  variables:
@@ -95,7 +95,7 @@ test:
95
95
  script:
96
96
  - apt update && apt install -y gettext
97
97
  - mkdir -p /tmp/geovisio_test/tmp /tmp/geovisio_test/derivates /tmp/geovisio_test/permanent
98
- - pip install -e .[dev]
98
+ - pip install -e . --group dev
99
99
  - make i18n-po2code
100
100
  - pytest -vv -m "not skipci"
101
101
 
@@ -149,7 +149,7 @@ publish-develop:
149
149
  --network=host
150
150
  --volume ./tests:/opt/geovisio/tests
151
151
  "$DOCKER_IMAGE_NAME:develop"
152
- -c 'pip install -e .[dev] && /home/geovisio/.local/bin/pytest -vv -m "not skipci"'
152
+ -c 'pip install --upgrade pip && pip install -e . --group dev && /home/geovisio/.local/bin/pytest -vv -m "not skipci"'
153
153
 
154
154
  # publish image to dockerhub with the develop tag
155
155
  - docker push "$DOCKER_IMAGE_NAME:develop"
@@ -195,7 +195,7 @@ publish-tag-and-latest:
195
195
  --network=host
196
196
  --volume ./tests:/opt/geovisio/tests
197
197
  "$DOCKER_IMAGE_NAME:latest"
198
- -c 'pip install -e .[dev] && ~/.local/bin/pytest -vv -m "not skipci"'
198
+ -c 'pip install --upgrade pip && pip install -e . --group dev && ~/.local/bin/pytest -vv -m "not skipci"'
199
199
 
200
200
  # publish image to dockerhub
201
201
  - docker push $DOCKER_IMAGE_NAME:$CI_COMMIT_REF_NAME
@@ -205,9 +205,9 @@ publish-on-pypi:
205
205
  only:
206
206
  - tags
207
207
  stage: deploy
208
- image: python:3.10
208
+ image: python:3.13
209
209
  script:
210
210
  - apt update && apt install -y gettext
211
- - pip install .[build]
211
+ - pip install --group build
212
212
  - make i18n-po2code
213
213
  - flit publish # use [flit](https://flit.pypa.io/) and FLIT_USERNAME/FLIT_PASSWORD env var
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/psf/black
3
- rev: 24.1.0
3
+ rev: 25.1.0
4
4
  hooks:
5
5
  - id: black
6
6
 
@@ -9,6 +9,29 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [2.12.0] - 2025-02-04
13
+
14
+ ⚠️ Breaking change to install development dependencies ⚠️
15
+
16
+ To install development dependencies, you need to run `pip install -e . --group dev` instead of `pip install -e .[dev]`.
17
+
18
+ ### Added
19
+
20
+ - Add HATEOAS links to show permissions on collections/items/upload_sets. See https://docs.panoramax.fr/backend/api/api/#permissions for more details.
21
+ - Add a `panoramax_backend` command to the Python package, as an alias to the `flask --app geovisio` command.
22
+
23
+ ### Fixed
24
+
25
+ - Fix bug on python3.13 where running a command could hang with logs like "couldn't stop thread 'pool-1-worker-0' within 5.0 seconds"
26
+ - Nearby picture (`related` link type) was not returned if picture heading was greater than current picture one.
27
+
28
+ ### Changed
29
+
30
+ - The `migrations` folder has now been moved to the root of the package, so it is available when installing the package using pypi.
31
+ - The default web pages are more up-to-date (viewer v4, Panoramax logos, links to docs.panoramax.fr)
32
+ - The python dependencies are now managed using [dependency groups](https://flit.pypa.io/en/latest/pyproject_toml.html#dependency-groups) instead of the `[project.optional-dependencies]` section. So you need to install the dependencies using `pip install -e . --group dev` instead of `pip install -e .[dev]`, and the `dev`/`format`/`docs`/`build` groups are available, but not part of the released package. This also means that `pip` minimal version is now `25.1` (only for development). Run `pip install --upgrade pip` to upgrade your pip version.
33
+ - Update dependencies to support Python 3.14 🥧
34
+
12
35
  ## [2.11.0] - 2025-12-12
13
36
 
14
37
  ### Added
@@ -18,7 +41,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
18
41
  - `anyone`: the sequence is visible to anyone
19
42
  - `owner-only`: the sequence is visible to the owner and administrator only
20
43
  - `logged-only`: the sequence is visible to logged users only
21
- A default `visibility` can also be set at the `account` or instance level.
44
+ A default `visibility` can also be set at the `account` or instance level.
22
45
  - Change the permissions, now an instance administrator (and account that has the `admin` role), can see, edit and delete all sequences and pictures.
23
46
  - Display the collection semantics in the `/api/collections/<uuid:collectionId>/items` endpoint, to make it easier to be crawled by the metacatalog.
24
47
  - Add a new search capability with the query `/api/search?filter=semantics IS NOT NULL` to search for all items with some semantics (be it linked to the picture, its sequence or an annotation in the picture).
@@ -41,10 +64,10 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
41
64
  - Add an `updated` field in all the items's responses.
42
65
  - Add an `sortby` parameter in search to sort the results (and it can use the new `updated` field).
43
66
  - Add a way to generate a new token for the current user (via `POST /api/users/me/tokens`).
44
- - Added route aliases to get annotations.
45
- * The route `/api/annotations/<uuid:annotationId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`
46
- * The route `/api/picture/<uuid:pictureId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>`
47
- * The route to create an annotation `/api/picture/<uuid:pictureId>/annotations` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations`
67
+ - Added route aliases to get annotations.
68
+ - The route `/api/annotations/<uuid:annotationId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`
69
+ - The route `/api/picture/<uuid:pictureId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>`
70
+ - The route to create an annotation `/api/picture/<uuid:pictureId>/annotations` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations`
48
71
  - Add a way to attach semantic tags to upload sets. Those tags will be transferred to all the collections associated to the upload set. This makes it possible to add semantic tags directly at the upload, without waiting for all the associated collections to be created.
49
72
  - Add a `relative_heading` parameter to the `/api/upload_sets/:id` route (for `POST` and `PATCH`), to update the relative heading of the upload set. If a `relative_heading` is set on the upload set, it will be applied when computeing the heading of all the associated collections.
50
73
  - Add a `/api/queryables` route to list the queryables for search and `/api/collections/queryables` to list the queryables for collection search.
@@ -703,7 +726,8 @@ FLASK_APP="src" flask process-sequences
703
726
  - Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
704
727
  - Dockerfile for easy server setup
705
728
 
706
- [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.11.0...develop
729
+ [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.12.0...develop
730
+ [2.12.0]: https://gitlab.com/panoramax/server/api/-/compare/2.11.0...2.12.0
707
731
  [2.11.0]: https://gitlab.com/panoramax/server/api/-/compare/2.10.0...2.11.0
708
732
  [2.10.0]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...2.10.0
709
733
  [2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
@@ -5,7 +5,7 @@ LABEL org.opencontainers.image.title="GeoVisio API"
5
5
  LABEL org.opencontainers.image.description="Panoramax is a digital resource for sharing and using field photos. GeoVisio API is the backend part of the ecosystem."
6
6
  LABEL org.opencontainers.image.authors="Adrien PAVIE <panieravide@riseup.net>"
7
7
  LABEL org.opencontainers.image.source="https://gitlab.com/panoramax/server/api.git"
8
- LABEL org.opencontainers.image.documentation="https://docs.panoramax.fr/api/"
8
+ LABEL org.opencontainers.image.documentation="https://docs.panoramax.fr/backend/"
9
9
  LABEL org.opencontainers.image.vendor="Panoramax"
10
10
  LABEL org.opencontainers.image.licenses="MIT"
11
11
  LABEL org.opencontainers.image.url="https://panoramax.fr/"
@@ -33,7 +33,6 @@ RUN pip install -e . --user
33
33
  COPY ./images ./images/
34
34
  COPY ./docker/docker-entrypoint.sh ./
35
35
  COPY ./geovisio ./geovisio
36
- COPY ./migrations ./migrations
37
36
  COPY ./Makefile ./
38
37
 
39
38
  # Generate i18n compiled files
@@ -46,6 +45,7 @@ ARG GIT_DESCRIBE
46
45
  LABEL org.opencontainers.image.revision=$GIT_DESCRIBE
47
46
 
48
47
  # Environment variables
48
+ ENV PATH="~/.local/bin/:$PATH"
49
49
  ENV FLASK_APP=geovisio
50
50
  ENV FS_URL="/data/geovisio"
51
51
  ENV API_GIT_VERSION=$GIT_DESCRIBE
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geovisio
3
- Version: 2.11.0
3
+ Version: 2.12.0
4
4
  Summary: GeoVisio API - Main
5
5
  Author-email: Adrien PAVIE <panieravide@riseup.net>, Antoine Desbordes <antoine.desbordes@gmail.com>
6
6
  Requires-Python: >=3.10
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  License-File: LICENSE
10
- Requires-Dist: Flask ~= 3.1
11
- Requires-Dist: psycopg[pool] ~= 3.2
10
+ Requires-Dist: Flask ~= 3.1.2
11
+ Requires-Dist: psycopg[pool] ~= 3.3
12
12
  Requires-Dist: flasgger ~= 0.9.7
13
13
  Requires-Dist: Pillow ~= 11.1
14
14
  Requires-Dist: Flask-Cors ~= 6.0
@@ -17,11 +17,11 @@ Requires-Dist: fs-s3fs-forked ~= 1.1.4
17
17
  Requires-Dist: flask-compress ~= 1.14
18
18
  Requires-Dist: requests ~= 2.31
19
19
  Requires-Dist: yoyo-migrations ~= 9.0
20
- Requires-Dist: psycopg-binary ~= 3.2
21
- Requires-Dist: python-dotenv ~= 1.1
20
+ Requires-Dist: psycopg-binary ~= 3.3
21
+ Requires-Dist: python-dotenv ~= 1.2
22
22
  Requires-Dist: authlib ~= 1.6
23
23
  Requires-Dist: Flask-Executor ~= 1.0
24
- Requires-Dist: geopic-tag-reader[write-exif] ~= 1.8.0
24
+ Requires-Dist: geopic-tag-reader[write-exif] ~= 1.8.2
25
25
  Requires-Dist: rfeed ~= 1.1.1
26
26
  Requires-Dist: sentry-sdk[flask] ~= 2.24
27
27
  Requires-Dist: pygeofilter[backend-native] ~= 0.3.1
@@ -35,28 +35,8 @@ Requires-Dist: geojson-pydantic ~= 2.0.0
35
35
  Requires-Dist: email-validator ~= 2.2.0
36
36
  Requires-Dist: multipart>=1.2.1
37
37
  Requires-Dist: gunicorn ~= 23.0.0
38
- Requires-Dist: flit ~= 3.9.0 ; extra == "build"
39
- Requires-Dist: coverage ~= 7.9 ; extra == "dev"
40
- Requires-Dist: protobuf ~= 5.26 ; extra == "dev"
41
- Requires-Dist: mapbox-vector-tile ~= 2.1 ; extra == "dev"
42
- Requires-Dist: pystac ~= 1.9 ; extra == "dev"
43
- Requires-Dist: pytest ~= 8.4 ; extra == "dev"
44
- Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
45
- Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
46
- Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
47
- Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
48
- Requires-Dist: black ~= 25.1 ; extra == "dev"
49
- Requires-Dist: pre-commit ~= 4.2 ; extra == "dev"
50
- Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
51
- Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
52
- Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
53
- Requires-Dist: mkdocs-material ~= 9.6.14 ; extra == "docs"
54
- Requires-Dist: mkdocs-swagger-ui-tag ~= 0.7.1 ; extra == "docs"
55
38
  Project-URL: Home, https://gitlab.com/panoramax/server/api
56
39
  Project-URL: Source Code, https://gitlab.com/panoramax/server/api
57
- Provides-Extra: build
58
- Provides-Extra: dev
59
- Provides-Extra: docs
60
40
 
61
41
  # ![Panoramax](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Panoramax.svg/40px-Panoramax.svg.png) Panoramax
62
42
 
@@ -57,7 +57,7 @@ services:
57
57
  - /bin/bash
58
58
  - -c
59
59
  - |
60
- python3 -m flask user elysee --set-role admin --create
60
+ panoramax_backend user elysee --set-role admin --create
61
61
  depends_on:
62
62
  migrations:
63
63
  condition: service_completed_successfully
@@ -2,12 +2,12 @@
2
2
 
3
3
  usage() {
4
4
  echo "./docker-entrypoint.sh <COMMAND>: "
5
- echo -e "\tThis script simplifies running GeoVisio backend in a certain mode"
5
+ echo -e "\tThis script simplifies running Panoramax backend in a certain mode"
6
6
  echo "Commands: "
7
7
  echo -e "\tapi (default): Starts web API for production on port 5000 by default"
8
8
  echo -e "\tdev-api: Starts web API for development on port 5000 by default"
9
9
  echo -e "\tpicture-worker: Starts an independant background worker to process pictures"
10
- echo -e "\tcleanup: Cleans database and remove Geovisio derivated files (it doesn't delete your original pictures)"
10
+ echo -e "\tcleanup: Cleans database and remove Panoramax derivated files (it doesn't delete your original pictures)"
11
11
  echo -e "\tdb-upgrade: Upgrade the database schema"
12
12
  echo -e "\tdb-refresh: Refresh all materialized views in the database"
13
13
  }
@@ -109,7 +109,7 @@ services:
109
109
  NB_API_THREADS: 10
110
110
  INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
111
111
  # API SUMMARY regroup many metadata about the instance
112
- # check the documentation on how translations are handled: https://docs.panoramax.fr/api/install/settings/#metadata
112
+ # check the documentation on how translations are handled: https://docs.panoramax.fr/backend/install/settings/#metadata
113
113
  API_SUMMARY: >-
114
114
  {
115
115
  "color": "#abcdef",
@@ -25,6 +25,7 @@ http {
25
25
  # We need to set X-Forwarded headers, so the API can use them to make nice internal links
26
26
  proxy_set_header X-Real-IP $remote_addr;
27
27
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
28
+ proxy_set_header X-Forwarded-Host $host;
28
29
 
29
30
  # Limit the files that can be sent to 100M
30
31
  client_max_body_size 100M;
@@ -53,7 +54,6 @@ http {
53
54
  # add X-forward- headers for keycloak to know it's canonical host
54
55
  # force https
55
56
  proxy_set_header X-Forwarded-Proto https;
56
- proxy_set_header X-Forwarded-Host $host;
57
57
 
58
58
  proxy_redirect default;
59
59
  }
@@ -53,7 +53,7 @@ services:
53
53
  NB_API_THREADS: 10
54
54
  INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
55
55
  # API SUMMARY regroup many metadata about the instance
56
- # check the documentation on how translations are handled: https://docs.panoramax.fr/api/install/settings/#metadata
56
+ # check the documentation on how translations are handled: https://docs.panoramax.fr/backend/install/settings/#metadata
57
57
  API_SUMMARY: >-
58
58
  {
59
59
  "color": "#abcdef",
@@ -21,6 +21,7 @@ http {
21
21
  # We need to set X-Forwarded headers, so the API can use them to make nice internal links
22
22
  proxy_set_header X-Real-IP $remote_addr;
23
23
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
24
+ proxy_set_header X-Forwarded-Host $host;
24
25
 
25
26
  # Limit the files that can be sent to 100M
26
27
  client_max_body_size 100M;
@@ -179,6 +179,55 @@ This calls needs to be logged, another token (or even the same one) can be used.
179
179
  http -A bearer -a eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnZW92aXNpbyIsInN1YiI6ImVlNjQ5MjM1LWJmMTAtNGIwNC1hMDlhLTY0YjE2NjN DELETE https://my-panoramax.fr/api/users/me/tokens/ee649235-bf10-4b04-a09a-64b1663af6f8
180
180
  ```
181
181
 
182
+ ### ⚖️ Permissions
183
+
184
+ The API checks permissions on each route, and returns a:
185
+
186
+ * 401 if authentication is required
187
+ * 403 error if the user is not allowed to access the route
188
+
189
+ The API also adds HATEAOS links to show the permissions of the current user on the queried object. It might be handy for client to use those links to show what actions are allowed. It might, for example, be used to disable a delete button if the user cannot delete the object.
190
+
191
+ This only works for access by ID (eg, in endpoints like `/api/collections/:id` and not `/api/collections` or `/api/search`) and only for authenticated calls (since no edit is possible without authentication).
192
+
193
+ The links have a `method` attribute to define the HTTP method to use for this permission, and might have an `attributes` attribute for the `edit` links,to tell which fields can be patched by the user.
194
+
195
+ Example:
196
+
197
+ ```js
198
+ "links": [
199
+ ...
200
+ {
201
+ "rel": "edit",
202
+ "type": "application/json",
203
+ "method": "PATCH", // <-- HTTP verb to use to call the endpoint
204
+ "href": "https://my_panoramax.org/api/collections/some_id", // <-- api endpoint
205
+ "attributes": ["relative_heading", "semantics", "sortby", "title", "visibility"], // <-- the user can patch those fields
206
+ },
207
+ ]
208
+ ```
209
+
210
+ The `rel` attribute should be used to identify the permission.
211
+
212
+ #### Links on sequences (collections)
213
+
214
+ The available `rel` links are:
215
+
216
+ * `edit` to patch the collection. An additional field `attributes` is provided to tell which fields can be patched by the user.
217
+ * `delete` to delete the collection
218
+
219
+ #### Links on upload_sets
220
+
221
+ * `edit` to patch the upload_set. An additional field `attributes` is provided to tell which fields can be patched by the user.
222
+ * `delete` to delete the upload_set
223
+ * `add_files` to add files to the upload_set
224
+ * `complete` to complete the upload_set
225
+
226
+ #### Links on pictures (items)
227
+
228
+ * `edit` to patch the picture. An additional field `attributes` is provided to tell which fields can be patched by the user.
229
+ * `delete` to delete the picture
230
+ * `add_annotation` to add an annotation on the picture
182
231
 
183
232
  ## :octicons-upload-16: Upload
184
233
 
@@ -322,4 +371,4 @@ Enjoy your brand-new uploaded pictures by browsing the map or querying the assoc
322
371
 
323
372
  ```bash
324
373
  http https://my-panoramax.fr/api/upload_sets/60d94628-8098-42cc-b684-ffb9aa9d35a7
325
- ```
374
+ ```