geovisio 2.9.0__tar.gz → 2.10.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 (427) hide show
  1. geovisio-2.10.0/.gitignore +39 -0
  2. {geovisio-2.9.0 → geovisio-2.10.0}/CHANGELOG.md +33 -2
  3. {geovisio-2.9.0 → geovisio-2.10.0}/PKG-INFO +13 -13
  4. geovisio-2.10.0/docker/docker-compose-blurring.yml +70 -0
  5. geovisio-2.10.0/docker/docker-compose-full-linux.yml +6 -0
  6. {geovisio-2.9.0 → geovisio-2.10.0}/docker/docker-compose-full.yml +6 -1
  7. geovisio-2.10.0/docker/docker-compose-minio.yml +45 -0
  8. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/docker-compose.yml +12 -9
  9. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/env.example +5 -2
  10. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/nginx.conf +2 -2
  11. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/docker-compose.yml +10 -6
  12. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/env.example +6 -3
  13. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/nginx.conf +9 -6
  14. {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/open_api.json +808 -113
  15. {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/STAC_compatibility.md +18 -0
  16. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/install.md +8 -2
  17. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/settings.md +59 -15
  18. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/running_docker_keycloak.md +20 -0
  19. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/running_docker_osm_auth.md +24 -5
  20. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/__init__.py +6 -1
  21. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/config_app.py +5 -5
  22. geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.mo +0 -0
  23. geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.po +818 -0
  24. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.po +1 -1
  25. geovisio-2.10.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  26. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/da/LC_MESSAGES/messages.po +4 -3
  27. geovisio-2.10.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  28. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/de/LC_MESSAGES/messages.po +55 -2
  29. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.po +1 -1
  30. geovisio-2.10.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  31. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/en/LC_MESSAGES/messages.po +193 -139
  32. geovisio-2.10.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  33. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +53 -4
  34. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.po +1 -1
  35. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +1 -1
  36. geovisio-2.10.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  37. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +91 -3
  38. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +1 -1
  39. geovisio-2.10.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  40. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/it/LC_MESSAGES/messages.po +63 -3
  41. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +1 -1
  42. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +1 -1
  43. geovisio-2.10.0/geovisio/translations/messages.pot +819 -0
  44. geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  45. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/nl/LC_MESSAGES/messages.po +292 -63
  46. geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.mo +0 -0
  47. geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.po +818 -0
  48. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +1 -1
  49. geovisio-2.10.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
  50. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/sv/LC_MESSAGES/messages.po +4 -3
  51. geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
  52. geovisio-2.9.0/geovisio/translations/messages.pot → geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.po +4 -5
  53. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +1 -1
  54. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/annotations.py +14 -17
  55. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/auth.py +14 -13
  56. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/cql2.py +2 -2
  57. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/fields.py +14 -2
  58. geovisio-2.10.0/geovisio/utils/items.py +44 -0
  59. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/model_query.py +2 -2
  60. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/pic_shape.py +1 -1
  61. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/pictures.py +111 -18
  62. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/semantics.py +32 -3
  63. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/sentry.py +1 -1
  64. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/sequences.py +51 -34
  65. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/upload_set.py +285 -198
  66. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/website.py +1 -1
  67. geovisio-2.10.0/geovisio/web/annotations.py +354 -0
  68. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/auth.py +1 -1
  69. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/collections.py +26 -22
  70. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/configuration.py +24 -4
  71. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/docs.py +93 -11
  72. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/items.py +197 -121
  73. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/params.py +44 -31
  74. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/pictures.py +34 -0
  75. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/tokens.py +49 -1
  76. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/upload_set.py +150 -32
  77. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/users.py +4 -4
  78. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/utils.py +2 -2
  79. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/workers/runner_pictures.py +128 -23
  80. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -1
  81. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.sql +3 -1
  82. geovisio-2.10.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +21 -0
  83. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_02_dzVET-picture-grid-public.sql +7 -2
  84. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +1 -1
  85. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +2 -2
  86. geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.rollback.sql +24 -0
  87. geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.sql +7 -0
  88. geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.rollback.sql +12 -0
  89. geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.sql +12 -0
  90. geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.rollback.sql +7 -0
  91. geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.sql +15 -0
  92. geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.rollback.sql +85 -0
  93. geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.sql +166 -0
  94. geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.rollback.sql +4 -0
  95. geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.sql +7 -0
  96. geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.rollback.sql +4 -0
  97. geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.sql +4 -0
  98. geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.rollback.sql +6 -0
  99. geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.sql +15 -0
  100. geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.rollback.sql +4 -0
  101. geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.sql +4 -0
  102. geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.rollback.sql +4 -0
  103. geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.sql +26 -0
  104. geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.rollback.sql +24 -0
  105. geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.sql +10 -0
  106. geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.rollback.sql +4 -0
  107. geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.sql +4 -0
  108. geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.rollback.sql +20 -0
  109. geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.sql +26 -0
  110. {geovisio-2.9.0 → geovisio-2.10.0}/pyproject.toml +12 -12
  111. {geovisio-2.9.0 → geovisio-2.10.0}/tests/conftest.py +40 -11
  112. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_semantics.py +54 -0
  113. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_web_collections_one_collection.py +252 -2
  114. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/conftest.py +16 -3
  115. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_auth.py +13 -6
  116. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_tokens.py +26 -0
  117. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_admin_cli_cleanup.py +9 -10
  118. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_db_migrations.py +1 -1
  119. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_factory.py +3 -3
  120. geovisio-2.10.0/tests/test_utils_items.py +28 -0
  121. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_pictures.py +106 -1
  122. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_upload_set.py +8 -4
  123. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_annotation.py +135 -1
  124. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_collections.py +43 -19
  125. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_configuration.py +19 -1
  126. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_items.py +103 -301
  127. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_map.py +3 -3
  128. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_prepare.py +2 -2
  129. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_stac.py +2 -2
  130. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_upload_set.py +660 -82
  131. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_workers_runner_pictures.py +370 -10
  132. geovisio-2.9.0/.gitignore +0 -13
  133. geovisio-2.9.0/docker/docker-compose-blurring.yml +0 -37
  134. geovisio-2.9.0/docker/docker-compose-minio.yml +0 -34
  135. geovisio-2.9.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  136. geovisio-2.9.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  137. geovisio-2.9.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  138. geovisio-2.9.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  139. geovisio-2.9.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  140. geovisio-2.9.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  141. geovisio-2.9.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  142. geovisio-2.9.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
  143. geovisio-2.9.0/geovisio/web/annotations.py +0 -213
  144. geovisio-2.9.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -17
  145. {geovisio-2.9.0 → geovisio-2.10.0}/.dockerignore +0 -0
  146. {geovisio-2.9.0 → geovisio-2.10.0}/.flaskenv +0 -0
  147. {geovisio-2.9.0 → geovisio-2.10.0}/.gitlab-ci.yml +0 -0
  148. {geovisio-2.9.0 → geovisio-2.10.0}/.pre-commit-config.yaml +0 -0
  149. {geovisio-2.9.0 → geovisio-2.10.0}/CODE_OF_CONDUCT.md +0 -0
  150. {geovisio-2.9.0 → geovisio-2.10.0}/Dockerfile +0 -0
  151. {geovisio-2.9.0 → geovisio-2.10.0}/LICENSE +0 -0
  152. {geovisio-2.9.0 → geovisio-2.10.0}/Makefile +0 -0
  153. {geovisio-2.9.0 → geovisio-2.10.0}/Procfile +0 -0
  154. {geovisio-2.9.0 → geovisio-2.10.0}/README.md +0 -0
  155. {geovisio-2.9.0 → geovisio-2.10.0}/babel.cfg +0 -0
  156. {geovisio-2.9.0 → geovisio-2.10.0}/bin/post_compile +0 -0
  157. {geovisio-2.9.0 → geovisio-2.10.0}/bin/run_production_api.sh +0 -0
  158. {geovisio-2.9.0 → geovisio-2.10.0}/docker/docker-compose-keycloak.yml +0 -0
  159. {geovisio-2.9.0 → geovisio-2.10.0}/docker/docker-entrypoint.sh +0 -0
  160. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
  161. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
  162. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
  163. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
  164. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/robots.txt +0 -0
  165. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
  166. {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/robots.txt +0 -0
  167. {geovisio-2.9.0 → geovisio-2.10.0}/docker/keycloak-realm.json +0 -0
  168. {geovisio-2.9.0 → geovisio-2.10.0}/docker-compose.yml +0 -0
  169. {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/api.md +0 -0
  170. {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/openapi.md +0 -0
  171. {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/develop_server.md +0 -0
  172. {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/releases.md +0 -0
  173. {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
  174. {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.png +0 -0
  175. {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio_authentication_flow.svg +0 -0
  176. {geovisio-2.9.0 → geovisio-2.10.0}/docs/index.md +0 -0
  177. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/cli.md +0 -0
  178. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/database_setup.md +0 -0
  179. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/blur_api.md +0 -0
  180. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/excluded_areas.md +0 -0
  181. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
  182. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/pictures_processing.md +0 -0
  183. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/running.md +0 -0
  184. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
  185. {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/update.md +0 -0
  186. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/__init__.py +0 -0
  187. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/cleanup.py +0 -0
  188. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/db.py +0 -0
  189. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
  190. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
  191. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/sequence_heading.py +0 -0
  192. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/user.py +0 -0
  193. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/db_migrations.py +0 -0
  194. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/errors.py +0 -0
  195. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/templates/main.html +0 -0
  196. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/templates/viewer.html +0 -0
  197. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
  198. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
  199. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
  200. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
  201. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
  202. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
  203. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
  204. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
  205. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  206. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/__init__.py +0 -0
  207. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/db.py +0 -0
  208. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/excluded_areas.py +0 -0
  209. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/extent.py +0 -0
  210. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/filesystems.py +0 -0
  211. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/link.py +0 -0
  212. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/loggers.py +0 -0
  213. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/params.py +0 -0
  214. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/reports.py +0 -0
  215. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/tags.py +0 -0
  216. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/time.py +0 -0
  217. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/tokens.py +0 -0
  218. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/__init__.py +0 -0
  219. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/excluded_areas.py +0 -0
  220. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/map.py +0 -0
  221. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/pages.py +0 -0
  222. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/prepare.py +0 -0
  223. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/reports.py +0 -0
  224. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/rss.py +0 -0
  225. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/stac.py +0 -0
  226. {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/workers/__init__.py +0 -0
  227. {geovisio-2.9.0 → geovisio-2.10.0}/images/big_picture.png +0 -0
  228. {geovisio-2.9.0 → geovisio-2.10.0}/images/big_picture.svg +0 -0
  229. {geovisio-2.9.0 → geovisio-2.10.0}/images/favicon.ico +0 -0
  230. {geovisio-2.9.0 → geovisio-2.10.0}/images/favicon.svg +0 -0
  231. {geovisio-2.9.0 → geovisio-2.10.0}/images/logo.png +0 -0
  232. {geovisio-2.9.0 → geovisio-2.10.0}/images/logo.svg +0 -0
  233. {geovisio-2.9.0 → geovisio-2.10.0}/images/logo_full.png +0 -0
  234. {geovisio-2.9.0 → geovisio-2.10.0}/images/logo_full.svg +0 -0
  235. {geovisio-2.9.0 → geovisio-2.10.0}/images/sponsors.png +0 -0
  236. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
  237. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
  238. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
  239. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
  240. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
  241. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
  242. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
  243. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
  244. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
  245. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
  246. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
  247. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
  248. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
  249. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
  250. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.sql +0 -0
  251. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
  252. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
  253. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
  254. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
  255. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
  256. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
  257. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
  258. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
  259. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
  260. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
  261. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
  262. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
  263. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
  264. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
  265. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
  266. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
  267. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
  268. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
  269. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
  270. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
  271. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
  272. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
  273. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
  274. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
  275. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
  276. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
  277. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
  278. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
  279. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
  280. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
  281. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
  282. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
  283. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
  284. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
  285. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
  286. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
  287. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
  288. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
  289. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
  290. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
  291. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
  292. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
  293. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
  294. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
  295. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
  296. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
  297. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
  298. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
  299. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
  300. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
  301. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
  302. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
  303. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
  304. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
  305. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
  306. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
  307. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
  308. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
  309. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
  310. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
  311. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
  312. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
  313. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
  314. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
  315. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
  316. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
  317. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
  318. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
  319. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
  320. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
  321. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
  322. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
  323. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
  324. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
  325. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.sql +0 -0
  326. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
  327. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
  328. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
  329. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
  330. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
  331. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
  332. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
  333. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
  334. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
  335. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
  336. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
  337. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
  338. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
  339. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
  340. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
  341. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
  342. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
  343. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.sql +0 -0
  344. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
  345. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
  346. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
  347. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
  348. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
  349. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
  350. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
  351. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
  352. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
  353. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
  354. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
  355. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
  356. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
  357. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
  358. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
  359. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
  360. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
  361. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.sql +0 -0
  362. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
  363. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
  364. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
  365. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
  366. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +0 -0
  367. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250206_01_PjrEL-annotation-semantics.sql +0 -0
  368. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250306_01_58oju-semantics-views.rollback.sql +0 -0
  369. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250306_01_58oju-semantics-views.sql +0 -0
  370. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +0 -0
  371. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250318_01_pANl1-semantics-functions.sql +0 -0
  372. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +0 -0
  373. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250331_01_kRKjo-store-detections-id.sql +0 -0
  374. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +0 -0
  375. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250424_01_RBGXC-semantics-indexes.sql +0 -0
  376. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +0 -0
  377. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +0 -0
  378. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/data/readme.md +0 -0
  379. {geovisio-2.9.0 → geovisio-2.10.0}/migrations/data/sensor_data.json +0 -0
  380. {geovisio-2.9.0 → geovisio-2.10.0}/mkdocs.yml +0 -0
  381. {geovisio-2.9.0 → geovisio-2.10.0}/runtime.txt +0 -0
  382. {geovisio-2.9.0 → geovisio-2.10.0}/tests/__init__.py +0 -0
  383. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/1.jpg +0 -0
  384. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/1_blurred.jpg +0 -0
  385. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/2.jpg +0 -0
  386. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/3.jpg +0 -0
  387. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/4.jpg +0 -0
  388. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/5.jpg +0 -0
  389. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/b1.jpg +0 -0
  390. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/b2.jpg +0 -0
  391. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/c1.jpg +0 -0
  392. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/crop.jpg +0 -0
  393. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/d1.jpg +0 -0
  394. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1.jpg +0 -0
  395. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1_artist.jpg +0 -0
  396. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1_without_exif.jpg +0 -0
  397. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e2.jpg +0 -0
  398. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e3.jpg +0 -0
  399. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e4.jpg +0 -0
  400. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e5.jpg +0 -0
  401. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/focal_zero.jpg +0 -0
  402. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/invalid_exif.jpg +0 -0
  403. {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/xpcomment.jpg +0 -0
  404. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/__init__.py +0 -0
  405. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/conftest.py +0 -0
  406. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_api_conformance.py +0 -0
  407. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences.py +0 -0
  408. {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences_different_insertion_date.py +0 -0
  409. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/__init__.py +0 -0
  410. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/docker-compose-auth-test.yml +0 -0
  411. {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_s3.py +0 -0
  412. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_model_query.py +0 -0
  413. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_annotations.py +0 -0
  414. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_auth.py +0 -0
  415. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_cql2.py +0 -0
  416. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_filesystems.py +0 -0
  417. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_reports.py +0 -0
  418. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_semantics.py +0 -0
  419. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_sequences.py +0 -0
  420. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_tags.py +0 -0
  421. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_excluded_areas.py +0 -0
  422. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_pages.py +0 -0
  423. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_params.py +0 -0
  424. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_pictures.py +0 -0
  425. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_reports.py +0 -0
  426. {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_users.py +0 -0
  427. {geovisio-2.9.0 → geovisio-2.10.0}/yoyo.ini +0 -0
@@ -0,0 +1,39 @@
1
+ pictures
2
+ *.env
3
+ *.log
4
+ picfs
5
+ env
6
+ .pytest_cache
7
+ instance
8
+ __pycache__
9
+ config.py
10
+ docker/models/
11
+ .vscode/
12
+ site/
13
+ *.mo
14
+
15
+ ## https://github.com/github/gitignore/blob/f752d0799fb7e690bfb888d5cd4d453d2858a865/Global/macOS.gitignore
16
+ # General
17
+ .DS_Store
18
+ .AppleDouble
19
+ .LSOverride
20
+ Icon[]
21
+
22
+ # Thumbnails
23
+ ._*
24
+
25
+ # Files that might appear in the root of a volume
26
+ .DocumentRevisions-V100
27
+ .fseventsd
28
+ .Spotlight-V100
29
+ .TemporaryItems
30
+ .Trashes
31
+ .VolumeIcon.icns
32
+ .com.apple.timemachine.donotpresent
33
+
34
+ # Directories potentially created on remote AFP share
35
+ .AppleDB
36
+ .AppleDesktop
37
+ Network Trash Folder
38
+ Temporary Items
39
+ .apdisk
@@ -9,6 +9,35 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [2.10.0] - 2025-08-27
13
+
14
+ ### Added
15
+
16
+ - Added 2 new parameters on creating/updating an upload set: `no_split` to create only 1 sequence from the upload set pictures and `no_deduplication` not to remove pictures too close from each other.
17
+ - Add an `updated` field in all the items's responses.
18
+ - Add an `sortby` parameter in search to sort the results (and it can use the new `updated` field).
19
+ - Add a way to generate a new token for the current user (via `POST /api/users/me/tokens`).
20
+ - Added route aliases to get annotations.
21
+ * The route `/api/annotations/<uuid:annotationId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`
22
+ * The route `/api/picture/<uuid:pictureId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>`
23
+ * The route to create an annotation `/api/picture/<uuid:pictureId>/annotations` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations`
24
+ - 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.
25
+ - 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.
26
+
27
+ ### Changed
28
+
29
+ - Changed the default to split an upload set in several collection, by default we split when a picture is separated from the previous one by 5 minutes or 100 m. This default can be configured by each instance, and overridden for each upload set.
30
+ - Changed the default to remove capture duplicates in an upload set, by default we remove pictures less than 1m appart like before and with less than 60° (was 30°). This default can be configured by each instance (by updating the `configurations` table), and overridden for each upload set.
31
+ - Posting an empty JSON while patching a picture (`/api/collections/:cid/items/:id`) will now return a 304 instead of a 200.
32
+ - update lots of dependencies
33
+
34
+ ### Fixed
35
+
36
+ - Deleting an unkown upload set now returns a 404 instead of a 500.
37
+ - Fix a bug when reorienting a sequence with a single picture would crash the website.
38
+ - It's now possible to remove the last semantic from an annotation and add one again when calling `POST /api/collections/:cid/items/:id/annotations` for a shape that already exists.
39
+ - Now, if the blurring api rotate a side oriented picture, its size and exif orientation are updated accordingly.
40
+
12
41
  ## [2.9.0] - 2025-05-12
13
42
 
14
43
  ### Added
@@ -18,6 +47,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
18
47
  - Add a `API_REGISTRATION_IS_OPEN` setting in the API to tell the federation that account can (or not) be created directly on the instance. Defaults to `false`.
19
48
  - Added field `geovisio:rank_in_collection` to pictures metadata to get the rank of the picture in the collection in `/api/collections/:cid/items/:id` / `/api/collections/:cid/items` and `/api/search` responses. This makes it easier to use the `startAfterRank` parameter to paginate through pictures in collections..
20
49
  - Handle semantics returned by the blurring API, and automatically add annotations on the pictures with semantic tags on the detected objects..
50
+ - Add a new async job `read_metadata` to read the metadata of pictures. This job can read or not the file (depending on the `read_file` boolean in the job's `args` field). This is usefull to update metadata when the geopic-tag-reader library is updated.
21
51
 
22
52
  ### Fixed
23
53
 
@@ -94,7 +124,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
94
124
  - Add `missing_fields` list to the `/api/upload_sets/:id/files` response detailling the missing fields from a rejected uploaded picture.
95
125
  - Details about picture quality are now offered for display and filtering:
96
126
  - In sequences and pictures routes: `quality:horizontal_accuracy` for GPS position precision (in meters), `panoramax:horizontal_pixel_density` for pixel density on horizon (px/FOV degree).
97
- - In vector tiles: `gps_accuracy` and `h_pixel_density` (for __sequences and pictures__ layers, not available on grid layer)
127
+ - In vector tiles: `gps_accuracy` and `h_pixel_density` (for **sequences and pictures** layers, not available on grid layer)
98
128
  - In vector tiles style, a new metadata property `panoramax:fields` lists all available properties in each layer (pictures, sequences, grid). This will allow easier compatibility checks in web viewer.
99
129
  - Translations in Spanish 🇪🇸 and Hungarian 🇭🇺.
100
130
 
@@ -648,7 +678,8 @@ FLASK_APP="src" flask process-sequences
648
678
  - Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
649
679
  - Dockerfile for easy server setup
650
680
 
651
- [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...develop
681
+ [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.10.0...develop
682
+ [2.10.0]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...2.10.0
652
683
  [2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
653
684
  [2.8.1]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...2.8.1
654
685
  [2.8.0]: https://gitlab.com/panoramax/server/api/-/compare/2.7.1...2.8.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geovisio
3
- Version: 2.9.0
3
+ Version: 2.10.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
@@ -11,7 +11,7 @@ Requires-Dist: Flask ~= 3.1
11
11
  Requires-Dist: psycopg[pool] ~= 3.2
12
12
  Requires-Dist: flasgger ~= 0.9.7
13
13
  Requires-Dist: Pillow ~= 11.1
14
- Requires-Dist: Flask-Cors ~= 5.0
14
+ Requires-Dist: Flask-Cors ~= 6.0
15
15
  Requires-Dist: fs ~= 2.4
16
16
  Requires-Dist: fs-s3fs-forked ~= 1.1.4
17
17
  Requires-Dist: flask-compress ~= 1.14
@@ -19,9 +19,9 @@ Requires-Dist: requests ~= 2.31
19
19
  Requires-Dist: yoyo-migrations ~= 9.0
20
20
  Requires-Dist: psycopg-binary ~= 3.2
21
21
  Requires-Dist: python-dotenv ~= 1.1
22
- Requires-Dist: authlib ~= 1.5
22
+ Requires-Dist: authlib ~= 1.6
23
23
  Requires-Dist: Flask-Executor ~= 1.0
24
- Requires-Dist: geopic-tag-reader[write-exif] == 1.4.2
24
+ Requires-Dist: geopic-tag-reader[write-exif] ~= 1.8.0
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
@@ -31,26 +31,26 @@ Requires-Dist: croniter ~= 6.0.0
31
31
  Requires-Dist: pydantic ~= 2.11
32
32
  Requires-Dist: pydantic-extra-types ~= 2.7
33
33
  Requires-Dist: flask-babel ~= 4.0.0
34
- Requires-Dist: geojson-pydantic ~= 1.2.0
34
+ 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: flit ~= 3.9.0 ; extra == "build"
38
- Requires-Dist: coverage ~= 7.7 ; extra == "dev"
39
- Requires-Dist: protobuf ~= 4.21 ; extra == "dev"
40
- Requires-Dist: mapbox-vector-tile ~= 2.0 ; extra == "dev"
38
+ Requires-Dist: coverage ~= 7.9 ; extra == "dev"
39
+ Requires-Dist: protobuf ~= 5.26 ; extra == "dev"
40
+ Requires-Dist: mapbox-vector-tile ~= 2.1 ; extra == "dev"
41
41
  Requires-Dist: pystac ~= 1.9 ; extra == "dev"
42
- Requires-Dist: pytest ~= 8.3 ; extra == "dev"
43
- Requires-Dist: pytest-datafiles ~= 2.0 ; extra == "dev"
42
+ Requires-Dist: pytest ~= 8.4 ; extra == "dev"
43
+ Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
44
44
  Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
45
- Requires-Dist: testcontainers ~= 4.1 ; extra == "dev"
45
+ Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
46
46
  Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
47
47
  Requires-Dist: black ~= 25.1 ; extra == "dev"
48
48
  Requires-Dist: pre-commit ~= 4.2 ; extra == "dev"
49
49
  Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
50
50
  Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
51
51
  Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
52
- Requires-Dist: mkdocs-material ~= 9.6.9 ; extra == "docs"
53
- Requires-Dist: mkdocs-swagger-ui-tag ~= 0.6.11 ; extra == "docs"
52
+ Requires-Dist: mkdocs-material ~= 9.6.14 ; extra == "docs"
53
+ Requires-Dist: mkdocs-swagger-ui-tag ~= 0.7.1 ; extra == "docs"
54
54
  Project-URL: Home, https://gitlab.com/panoramax/server/api
55
55
  Project-URL: Source Code, https://gitlab.com/panoramax/server/api
56
56
  Provides-Extra: build
@@ -0,0 +1,70 @@
1
+ # This docker compose is the one to use if you want to run the blurring API.
2
+ # It should be quite close to the one defined by https://github.com/cquest/sgblur.
3
+ # ----
4
+ # This docker-compose needs to be used alongside a docker containing geovisio API
5
+ # For instance with docker-compose-full.yml
6
+ # docker compose -f docker/docker-compose-full.yml -f docker/docker-compose-blurring.yml up
7
+ services:
8
+ blur:
9
+ # The blurring API, that calls the detection API and blurs the picture using the detected objects.
10
+ # This does not require a GPU, but is CPU-bound.
11
+ build: .
12
+ image: panoramax/sgblur:${BLUR_IMAGE_TAG:-latest}
13
+ environment:
14
+ WEB_CONCURRENCY: "8" # Number of workers for the API, you can adjust this depending on your available CPU ressources.
15
+ DETECT_URL: "http://detect:8001"
16
+ restart: unless-stopped
17
+ depends_on:
18
+ detect:
19
+ condition: service_healthy
20
+ ports:
21
+ - 8000
22
+ networks:
23
+ blur: {}
24
+
25
+ detect:
26
+ # This service is the one responsible for running the detection model.
27
+ # It is GPU-bound
28
+ build: .
29
+ image: panoramax/sgblur:${BLUR_IMAGE_TAG:-latest}
30
+ entrypoint: ["uvicorn", "src.detect.detect_api:app", "--host", "0.0.0.0", "--port", "8001"]
31
+ #environment:
32
+ #MODEL_NAME: # specify a model if needed, else the one fitting the most the available GPU will be used
33
+ deploy:
34
+ resources:
35
+ reservations:
36
+ devices:
37
+ - driver: nvidia # We only support Nvidia card right now
38
+ count: all
39
+ capabilities: [gpu]
40
+
41
+ restart: unless-stopped
42
+ healthcheck:
43
+ test: python -c "import requests; requests.get('http://localhost:8001/').raise_for_status()"
44
+ interval: 4s
45
+ timeout: 5s
46
+ retries: 10
47
+ start_period: 1s
48
+ ports:
49
+ - 8001
50
+ networks:
51
+ blur: {}
52
+
53
+
54
+ # Add a configuration to the API/workers to tell them the location of the blurring API
55
+ api:
56
+ environment:
57
+ API_BLUR_URL: http://blur:8000
58
+
59
+ background-worker:
60
+ environment:
61
+ API_BLUR_URL: http://blur:8000
62
+ depends_on:
63
+ blur:
64
+ condition: service_healthy
65
+ networks:
66
+ blur: {}
67
+
68
+
69
+ networks:
70
+ blur: {}
@@ -0,0 +1,6 @@
1
+
2
+ services:
3
+ api:
4
+ network_mode: "host"
5
+ environment:
6
+ DB_URL: postgres://gvs:gvspwd@localhost:5445/geovisio
@@ -90,12 +90,17 @@ services:
90
90
  - 5000:5000
91
91
  volumes:
92
92
  - pic_data:/data/geovisio
93
+ # The API need to be able to query the auth server like it is on localhost
94
+ # On mac/windows, use the extra_host bindings
95
+ # On linux, use the other docker-compose-full-linux.yml file to use host networking and adapt configuration
96
+ # docker compose -f docker-compose-full.yml -f docker-compose-full-linux.yml up -d
93
97
  extra_hosts:
94
98
  - "localhost:host-gateway"
99
+
95
100
  restart: always
96
101
 
97
102
  website:
98
- image: panoramax/website:latest
103
+ image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
99
104
  environment:
100
105
  VITE_INSTANCE_NAME: GeoVisio Docker
101
106
  VITE_API_URL: http://localhost:5000/
@@ -0,0 +1,45 @@
1
+ services:
2
+ minio:
3
+ image: quay.io/minio/minio:RELEASE.2025-05-24T17-08-30Z
4
+ command: server --console-address ":9001" /mnt/data
5
+ ports:
6
+ - 9000
7
+ - 9001
8
+ volumes:
9
+ - minio-data:/mnt/data
10
+ environment:
11
+ MINIO_ROOT_USER: geovisio
12
+ MINIO_ROOT_PASSWORD: SOME_VERY_SECRET_KEY
13
+ healthcheck:
14
+ test: ["CMD", "curl", "-f", "http://minio:9000/minio/health/live"]
15
+ interval: 2s
16
+ timeout: 5s
17
+ retries: 3
18
+ restart: always
19
+
20
+ create-minio-buckets:
21
+ image: minio/mc
22
+ depends_on:
23
+ minio:
24
+ condition: service_healthy
25
+ entrypoint: >
26
+ /bin/sh -c "
27
+ mc alias set myminio http://minio:9000 geovisio SOME_VERY_SECRET_KEY;
28
+
29
+ mc mb myminio/panoramax-public;
30
+ mc mb myminio/panoramax-private;
31
+ mc anonymous set download myminio/panoramax-public;
32
+ "
33
+
34
+ minio-ready:
35
+ # hack to bypass testcontainers limitation, since it cannot wait for a job to be completed,
36
+ # start a dumb service after all buckets are created
37
+ # and wait for it to be ready in the tests
38
+ image: alpine
39
+ depends_on:
40
+ create-minio-buckets:
41
+ condition: service_completed_successfully
42
+ entrypoint: "sleep infinity"
43
+
44
+ volumes:
45
+ minio-data: {}
@@ -44,7 +44,7 @@ services:
44
44
  KC_PROXY_HEADERS: xforwarded
45
45
  # It's fine to use http, the reverse proxy handle the tls termination
46
46
  KC_HTTP_ENABLED: true
47
- # trust nginx to set the correct xforwared headers with the hostname
47
+ # trust nginx to set the correct xforwarded headers with the hostname
48
48
  KC_HOSTNAME_STRICT: false
49
49
 
50
50
  # tell keycloak that it will be /oauth prefix by nginx
@@ -100,9 +100,14 @@ services:
100
100
  API_FORCE_AUTH_ON_UPLOAD: True
101
101
  API_PICTURES_LICENSE_SPDX_ID: CC-BY-SA-4.0 # default pictures's license, change it if needed
102
102
  API_PICTURES_LICENSE_URL: https://spdx.org/licenses/CC-BY-SA-4.0.html
103
- API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
103
+ API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
104
104
  API_DERIVATES_PICTURES_PUBLIC_URL: /derivates
105
105
  API_PERMANENT_PICTURES_PUBLIC_URL: /permanent
106
+ PICTURE_PROCESS_THREADS_LIMIT: 0
107
+ PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
108
+ FS_URL: /data/geovisio
109
+ NB_API_THREADS: 10
110
+ INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
106
111
  # API SUMMARY regroup many metadata about the instance
107
112
  # check the documentation on how translations are handled: https://docs.panoramax.fr/api/install/settings/#metadata
108
113
  API_SUMMARY: >-
@@ -115,11 +120,6 @@ services:
115
120
  "geo_coverage": {"en": "Anywhere you like", "fr": "Partout où le vent vous portera"}
116
121
  }
117
122
  API_REGISTRATION_IS_OPEN: True # True if the instance is open to registration, False if not, it is only used in the federation for the moment
118
- PICTURE_PROCESS_THREADS_LIMIT: 0
119
- PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
120
- FS_URL: /data/geovisio
121
- NB_API_THREADS: 10
122
- INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
123
123
  ports:
124
124
  - 5000
125
125
  volumes:
@@ -133,9 +133,10 @@ services:
133
133
  networks:
134
134
  db: {}
135
135
  geovisio: {}
136
+ restart: always
136
137
 
137
138
  website:
138
- image: panoramax/website:latest
139
+ image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
139
140
  environment:
140
141
  # documentation for configuration: https://docs.panoramax.fr/website/03_Settings/
141
142
  VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
@@ -152,6 +153,7 @@ services:
152
153
  - 3000
153
154
  networks:
154
155
  geovisio: {}
156
+ restart: always
155
157
 
156
158
  # Background workers used to process pictures in the background
157
159
  # calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
@@ -210,12 +212,13 @@ services:
210
212
  start_period: 5s
211
213
  image: postgis/postgis:16-3.4
212
214
  ports:
213
- - 5444:5432
215
+ - 5432
214
216
  volumes:
215
217
  - postgres_data:/var/lib/postgresql/data/
216
218
  - ./1-init-keycloak-db.sh:/docker-entrypoint-initdb.d/1-init-keycloak-db.sh
217
219
  networks:
218
220
  db: {}
221
+ restart: always
219
222
 
220
223
  volumes:
221
224
  postgres_data:
@@ -1,3 +1,6 @@
1
+ # The name of your instance which will appear in the top left of the website
2
+ INSTANCE_NAME=
3
+
1
4
  # URL of your own domain (without a scheme or a path, just the domain)
2
5
  DOMAIN=
3
6
 
@@ -33,5 +36,5 @@ PG_PASSWORD=
33
36
  # This parameter is used so that geovisio can trust the `X-Forwarded-` headers for URL generation (more details in the [Flask documentation](https://flask.palletsprojects.com/en/2.2.x/deploying/proxy_fix/)).
34
37
  # INFRA_NB_PROXIES=2
35
38
 
36
- # The name of your instance which will appear in the top left of the website
37
- INSTANCE_NAME=
39
+ # Change this if you have your own blur API instance
40
+ BLUR_API=https://blur.panoramax.openstreetmap.fr
@@ -22,7 +22,7 @@ http {
22
22
  server {
23
23
  listen 8080;
24
24
 
25
- # We need to set Forxarded header, so the API can use them to make nice internal links
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
28
 
@@ -37,7 +37,7 @@ http {
37
37
  proxy_read_timeout 120s;
38
38
  proxy_send_timeout 120s;
39
39
 
40
- # Note: you might want to some cache on some heavily used routes, likes high level zoom on /api/map
40
+ # Note: you might want to add some cache on some heavily used routes, likes high level zoom on /api/map
41
41
  location /api {
42
42
  proxy_pass http://api;
43
43
  proxy_redirect default;
@@ -44,8 +44,8 @@ services:
44
44
  API_FORCE_AUTH_ON_UPLOAD: True
45
45
  API_PICTURES_LICENSE_SPDX_ID: CC-BY-SA-4.0 # default pictures's license, change it if needed
46
46
  API_PICTURES_LICENSE_URL: https://spdx.org/licenses/CC-BY-SA-4.0.html
47
- API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
48
- API_DERIVATES_PICTURES_PUBLIC_URL: /derivates
47
+ API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
48
+ API_DERIVATES_PICTURES_PUBLIC_URL: /derivatives
49
49
  API_PERMANENT_PICTURES_PUBLIC_URL: /permanent
50
50
  PICTURE_PROCESS_THREADS_LIMIT: 0
51
51
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
@@ -80,7 +80,7 @@ services:
80
80
  restart: always
81
81
 
82
82
  website:
83
- image: panoramax/website:latest
83
+ image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
84
84
  environment:
85
85
  VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
86
86
  VITE_API_URL: /
@@ -97,7 +97,11 @@ services:
97
97
  networks:
98
98
  geovisio: {}
99
99
  restart: always
100
-
100
+
101
+ # Background workers used to process pictures in the background
102
+ # calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
103
+ # Several background workers can run together
104
+ # Note: the blurring is configured to be done using the OSM-FR service, you can change the variable `API_BLUR_URL` if needed (in the API too).
101
105
  background-worker:
102
106
  <<: *geovisio-default
103
107
  command: picture-worker
@@ -111,7 +115,7 @@ services:
111
115
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
112
116
  DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
113
117
  FS_URL: /data/geovisio
114
- API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
118
+ API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
115
119
 
116
120
  deploy:
117
121
  mode: replicated
@@ -149,7 +153,7 @@ services:
149
153
  start_period: 5s
150
154
  image: postgis/postgis:16-3.4
151
155
  ports:
152
- - 5445:5432
156
+ - 5432
153
157
  volumes:
154
158
  - postgres_data:/var/lib/postgresql/data/
155
159
  networks:
@@ -6,8 +6,8 @@ OAUTH_CLIENT_ID=
6
6
  # Secret of the OSM OAuth2 client
7
7
  OAUTH_CLIENT_SECRET=
8
8
 
9
- # [Flask's secret key](https://flask.palletsprojects.com/en/3.0.x/config/#SECRET_KEY).
10
- # A secret key used among other things for securely signing the session cookie.
9
+ # [Flask's secret key](https://flask.palletsprojects.com/en/3.0.x/config/#SECRET_KEY).
10
+ # A secret key used among other things for securely signing the session cookie.
11
11
  # For production should be provided with a long random string as stated in flask's documentation.
12
12
  FLASK_SECRET_KEY=
13
13
 
@@ -21,7 +21,7 @@ FLASK_SESSION_COOKIE_DOMAIN=
21
21
  # Note that this directory must have been created beforehand
22
22
  # PICTURES_DIR=./pictures_storage
23
23
 
24
- # Number of pictures, workers, depend on how many pictures you want to process at the same time.
24
+ # Number of pictures, workers, depend on how many pictures you want to process at the same time.
25
25
  # PICTURE_WORKERS_REPLICATS=5
26
26
 
27
27
  # Tag of the geovisio image to use, if you want to use a custom one. You can use `develop` if you want to live on the edge.
@@ -31,3 +31,6 @@ FLASK_SESSION_COOKIE_DOMAIN=
31
31
  # Set it to 2 if you run a reverse proxy bedore the docker compose (like to handle TLS).
32
32
  # This parameter is used so that geovisio can trust the `X-Forwarded-` headers for URL generation (more details in the [Flask documentation](https://flask.palletsprojects.com/en/2.2.x/deploying/proxy_fix/)).
33
33
  # INFRA_NB_PROXIES=1
34
+
35
+ # Change this if you have your own blur API instance
36
+ BLUR_API=https://blur.panoramax.openstreetmap.fr
@@ -18,7 +18,7 @@ http {
18
18
  server {
19
19
  listen 8080;
20
20
 
21
- # We need to set Forxarded header, so the API can use them to make nice internal links
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
24
 
@@ -33,7 +33,7 @@ http {
33
33
  proxy_read_timeout 120s;
34
34
  proxy_send_timeout 120s;
35
35
 
36
- # Note: you might want to some cache on some heavily used routes, likes high level zoom on /api/map
36
+ # Note: you might want to add some cache on some heavily used routes, likes high level zoom on /api/map
37
37
  location /api {
38
38
  proxy_pass http://api;
39
39
  proxy_redirect default;
@@ -51,7 +51,7 @@ http {
51
51
 
52
52
  # we ask nginx to do a proxy to the pictures, so that they can be served directly, without going through the API
53
53
  # we use a trick to convert the picture's uuid to it's path in the storage
54
- rewrite ^/(permanent|derivates)/([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])-(.*)$ /$1/$2/$3/$4/$5/$6 last;
54
+ rewrite ^/(permanent|derivates|derivatives)/([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])-(.*)$ /$1/$2/$3/$4/$5/$6 last;
55
55
 
56
56
  gzip on;
57
57
  gzip_types text/plain application/xml image/svg+xml text/css text/javascript text/xml application/json application/javascript;
@@ -68,8 +68,11 @@ http {
68
68
  root /data/geovisio;
69
69
  }
70
70
 
71
+ location /derivatives/ {
72
+ alias /data/geovisio/derivates/;
73
+ add_header 'Access-Control-Allow-Origin' '*';
74
+ add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
75
+ }
76
+
71
77
  }
72
78
  }
73
-
74
-
75
-