geovisio 2.8.1__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 (429) hide show
  1. geovisio-2.10.0/.gitignore +39 -0
  2. {geovisio-2.8.1 → geovisio-2.10.0}/CHANGELOG.md +61 -3
  3. {geovisio-2.8.1 → geovisio-2.10.0}/PKG-INFO +27 -26
  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.8.1 → 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.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/docker-compose.yml +31 -8
  9. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/env.example +8 -2
  10. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/nginx.conf +2 -2
  11. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/docker-compose.yml +33 -10
  12. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/env.example +9 -3
  13. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/nginx.conf +9 -6
  14. {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/open_api.json +1383 -191
  15. {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/STAC_compatibility.md +19 -0
  16. geovisio-2.10.0/docs/install/deep_dive/blur_api.md +34 -0
  17. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/install.md +8 -2
  18. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/settings.md +86 -12
  19. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/running_docker_keycloak.md +21 -0
  20. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/running_docker_osm_auth.md +26 -5
  21. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/__init__.py +6 -1
  22. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/config_app.py +16 -5
  23. geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.mo +0 -0
  24. geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.po +818 -0
  25. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.po +1 -1
  26. geovisio-2.10.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  27. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/da/LC_MESSAGES/messages.po +4 -3
  28. geovisio-2.10.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  29. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/de/LC_MESSAGES/messages.po +55 -2
  30. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.po +1 -1
  31. geovisio-2.10.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  32. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/en/LC_MESSAGES/messages.po +193 -139
  33. geovisio-2.10.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  34. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +53 -4
  35. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.po +1 -1
  36. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +1 -1
  37. geovisio-2.10.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  38. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +101 -6
  39. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +1 -1
  40. geovisio-2.10.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  41. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/it/LC_MESSAGES/messages.po +63 -3
  42. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +1 -1
  43. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +1 -1
  44. geovisio-2.10.0/geovisio/translations/messages.pot +819 -0
  45. geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  46. geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.po +937 -0
  47. geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.mo +0 -0
  48. geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.po +818 -0
  49. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +1 -1
  50. geovisio-2.10.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
  51. geovisio-2.10.0/geovisio/translations/sv/LC_MESSAGES/messages.po +823 -0
  52. geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
  53. geovisio-2.8.1/geovisio/translations/messages.pot → geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.po +4 -5
  54. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +1 -1
  55. geovisio-2.10.0/geovisio/utils/annotations.py +183 -0
  56. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/auth.py +14 -13
  57. geovisio-2.10.0/geovisio/utils/cql2.py +134 -0
  58. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/db.py +7 -0
  59. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/fields.py +38 -9
  60. geovisio-2.10.0/geovisio/utils/items.py +44 -0
  61. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/model_query.py +4 -4
  62. geovisio-2.10.0/geovisio/utils/pic_shape.py +63 -0
  63. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/pictures.py +164 -29
  64. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/reports.py +10 -17
  65. geovisio-2.10.0/geovisio/utils/semantics.py +259 -0
  66. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/sentry.py +1 -2
  67. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/sequences.py +191 -93
  68. geovisio-2.10.0/geovisio/utils/tags.py +31 -0
  69. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/upload_set.py +287 -209
  70. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/website.py +1 -1
  71. geovisio-2.10.0/geovisio/web/annotations.py +354 -0
  72. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/auth.py +1 -1
  73. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/collections.py +73 -54
  74. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/configuration.py +26 -5
  75. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/docs.py +143 -11
  76. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/items.py +232 -155
  77. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/map.py +25 -13
  78. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/params.py +55 -52
  79. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/pictures.py +34 -0
  80. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/stac.py +19 -12
  81. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/tokens.py +49 -1
  82. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/upload_set.py +148 -37
  83. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/users.py +4 -4
  84. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/utils.py +2 -2
  85. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/workers/runner_pictures.py +190 -24
  86. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -1
  87. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.sql +5 -2
  88. geovisio-2.10.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +21 -0
  89. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_02_dzVET-picture-grid-public.sql +7 -2
  90. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +1 -1
  91. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +2 -2
  92. geovisio-2.10.0/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +14 -0
  93. geovisio-2.10.0/migrations/20250206_01_PjrEL-annotation-semantics.sql +15 -0
  94. geovisio-2.10.0/migrations/20250306_01_58oju-semantics-views.rollback.sql +5 -0
  95. geovisio-2.10.0/migrations/20250306_01_58oju-semantics-views.sql +52 -0
  96. geovisio-2.10.0/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +5 -0
  97. geovisio-2.10.0/migrations/20250318_01_pANl1-semantics-functions.sql +41 -0
  98. geovisio-2.10.0/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +7 -0
  99. geovisio-2.10.0/migrations/20250331_01_kRKjo-store-detections-id.sql +25 -0
  100. geovisio-2.10.0/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +6 -0
  101. geovisio-2.10.0/migrations/20250424_01_RBGXC-semantics-indexes.sql +6 -0
  102. geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.rollback.sql +24 -0
  103. geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.sql +7 -0
  104. geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.rollback.sql +12 -0
  105. geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.sql +12 -0
  106. geovisio-2.10.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +11 -0
  107. geovisio-2.10.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +11 -0
  108. geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.rollback.sql +7 -0
  109. geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.sql +15 -0
  110. geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.rollback.sql +85 -0
  111. geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.sql +166 -0
  112. geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.rollback.sql +4 -0
  113. geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.sql +7 -0
  114. geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.rollback.sql +4 -0
  115. geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.sql +4 -0
  116. geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.rollback.sql +6 -0
  117. geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.sql +15 -0
  118. geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.rollback.sql +4 -0
  119. geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.sql +4 -0
  120. geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.rollback.sql +4 -0
  121. geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.sql +26 -0
  122. geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.rollback.sql +24 -0
  123. geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.sql +10 -0
  124. geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.rollback.sql +4 -0
  125. geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.sql +4 -0
  126. geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.rollback.sql +20 -0
  127. geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.sql +26 -0
  128. {geovisio-2.8.1 → geovisio-2.10.0}/pyproject.toml +26 -25
  129. {geovisio-2.8.1 → geovisio-2.10.0}/tests/conftest.py +139 -51
  130. geovisio-2.10.0/tests/fixed_data/test_many_semantics.py +209 -0
  131. {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences.py +28 -186
  132. geovisio-2.10.0/tests/fixed_data/test_many_sequences_different_insertion_date.py +256 -0
  133. {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_web_collections_one_collection.py +254 -2
  134. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/conftest.py +16 -3
  135. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_auth.py +14 -6
  136. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_tokens.py +26 -0
  137. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_admin_cli_cleanup.py +9 -10
  138. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_db_migrations.py +1 -1
  139. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_factory.py +3 -3
  140. geovisio-2.10.0/tests/test_utils_annotations.py +102 -0
  141. geovisio-2.10.0/tests/test_utils_cql2.py +40 -0
  142. geovisio-2.10.0/tests/test_utils_items.py +28 -0
  143. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_pictures.py +107 -2
  144. geovisio-2.10.0/tests/test_utils_semantics.py +378 -0
  145. geovisio-2.10.0/tests/test_utils_sequences.py +189 -0
  146. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_tags.py +2 -1
  147. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_upload_set.py +8 -4
  148. geovisio-2.10.0/tests/test_web_annotation.py +933 -0
  149. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_collections.py +112 -59
  150. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_configuration.py +21 -2
  151. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_items.py +124 -314
  152. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_map.py +3 -3
  153. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_pictures.py +0 -1
  154. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_prepare.py +2 -2
  155. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_stac.py +2 -2
  156. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_upload_set.py +660 -82
  157. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_workers_runner_pictures.py +662 -14
  158. geovisio-2.8.1/.gitignore +0 -13
  159. geovisio-2.8.1/docker/docker-compose-blurring.yml +0 -37
  160. geovisio-2.8.1/docker/docker-compose-minio.yml +0 -34
  161. geovisio-2.8.1/docs/install/deep_dive/blur_api.md +0 -20
  162. geovisio-2.8.1/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  163. geovisio-2.8.1/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  164. geovisio-2.8.1/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  165. geovisio-2.8.1/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  166. geovisio-2.8.1/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  167. geovisio-2.8.1/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  168. geovisio-2.8.1/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  169. geovisio-2.8.1/geovisio/translations/nl/LC_MESSAGES/messages.po +0 -602
  170. geovisio-2.8.1/geovisio/utils/semantics.py +0 -120
  171. geovisio-2.8.1/geovisio/web/annotations.py +0 -17
  172. geovisio-2.8.1/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -17
  173. {geovisio-2.8.1 → geovisio-2.10.0}/.dockerignore +0 -0
  174. {geovisio-2.8.1 → geovisio-2.10.0}/.flaskenv +0 -0
  175. {geovisio-2.8.1 → geovisio-2.10.0}/.gitlab-ci.yml +0 -0
  176. {geovisio-2.8.1 → geovisio-2.10.0}/.pre-commit-config.yaml +0 -0
  177. {geovisio-2.8.1 → geovisio-2.10.0}/CODE_OF_CONDUCT.md +0 -0
  178. {geovisio-2.8.1 → geovisio-2.10.0}/Dockerfile +0 -0
  179. {geovisio-2.8.1 → geovisio-2.10.0}/LICENSE +0 -0
  180. {geovisio-2.8.1 → geovisio-2.10.0}/Makefile +0 -0
  181. {geovisio-2.8.1 → geovisio-2.10.0}/Procfile +0 -0
  182. {geovisio-2.8.1 → geovisio-2.10.0}/README.md +0 -0
  183. {geovisio-2.8.1 → geovisio-2.10.0}/babel.cfg +0 -0
  184. {geovisio-2.8.1 → geovisio-2.10.0}/bin/post_compile +0 -0
  185. {geovisio-2.8.1 → geovisio-2.10.0}/bin/run_production_api.sh +0 -0
  186. {geovisio-2.8.1 → geovisio-2.10.0}/docker/docker-compose-keycloak.yml +0 -0
  187. {geovisio-2.8.1 → geovisio-2.10.0}/docker/docker-entrypoint.sh +0 -0
  188. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
  189. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
  190. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
  191. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
  192. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/robots.txt +0 -0
  193. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
  194. {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/robots.txt +0 -0
  195. {geovisio-2.8.1 → geovisio-2.10.0}/docker/keycloak-realm.json +0 -0
  196. {geovisio-2.8.1 → geovisio-2.10.0}/docker-compose.yml +0 -0
  197. {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/api.md +0 -0
  198. {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/openapi.md +0 -0
  199. {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/develop_server.md +0 -0
  200. {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/releases.md +0 -0
  201. {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
  202. {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.png +0 -0
  203. {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio_authentication_flow.svg +0 -0
  204. {geovisio-2.8.1 → geovisio-2.10.0}/docs/index.md +0 -0
  205. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/cli.md +0 -0
  206. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/database_setup.md +0 -0
  207. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/excluded_areas.md +0 -0
  208. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
  209. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/pictures_processing.md +0 -0
  210. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/running.md +0 -0
  211. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
  212. {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/update.md +0 -0
  213. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/__init__.py +0 -0
  214. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/cleanup.py +0 -0
  215. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/db.py +0 -0
  216. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
  217. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
  218. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/sequence_heading.py +0 -0
  219. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/user.py +0 -0
  220. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/db_migrations.py +0 -0
  221. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/errors.py +0 -0
  222. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/templates/main.html +0 -0
  223. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/templates/viewer.html +0 -0
  224. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
  225. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
  226. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
  227. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
  228. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
  229. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
  230. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
  231. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
  232. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  233. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/__init__.py +0 -0
  234. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/excluded_areas.py +0 -0
  235. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/extent.py +0 -0
  236. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/filesystems.py +0 -0
  237. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/link.py +0 -0
  238. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/loggers.py +0 -0
  239. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/params.py +0 -0
  240. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/time.py +0 -0
  241. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/tokens.py +0 -0
  242. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/__init__.py +0 -0
  243. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/excluded_areas.py +0 -0
  244. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/pages.py +0 -0
  245. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/prepare.py +0 -0
  246. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/reports.py +0 -0
  247. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/rss.py +0 -0
  248. {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/workers/__init__.py +0 -0
  249. {geovisio-2.8.1 → geovisio-2.10.0}/images/big_picture.png +0 -0
  250. {geovisio-2.8.1 → geovisio-2.10.0}/images/big_picture.svg +0 -0
  251. {geovisio-2.8.1 → geovisio-2.10.0}/images/favicon.ico +0 -0
  252. {geovisio-2.8.1 → geovisio-2.10.0}/images/favicon.svg +0 -0
  253. {geovisio-2.8.1 → geovisio-2.10.0}/images/logo.png +0 -0
  254. {geovisio-2.8.1 → geovisio-2.10.0}/images/logo.svg +0 -0
  255. {geovisio-2.8.1 → geovisio-2.10.0}/images/logo_full.png +0 -0
  256. {geovisio-2.8.1 → geovisio-2.10.0}/images/logo_full.svg +0 -0
  257. {geovisio-2.8.1 → geovisio-2.10.0}/images/sponsors.png +0 -0
  258. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
  259. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
  260. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
  261. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
  262. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
  263. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
  264. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
  265. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
  266. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
  267. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
  268. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
  269. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
  270. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
  271. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
  272. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.sql +0 -0
  273. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
  274. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
  275. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
  276. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
  277. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
  278. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
  279. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
  280. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
  281. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
  282. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
  283. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
  284. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
  285. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
  286. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
  287. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
  288. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
  289. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
  290. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
  291. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
  292. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
  293. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
  294. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
  295. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
  296. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
  297. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
  298. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
  299. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
  300. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
  301. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
  302. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
  303. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
  304. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
  305. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
  306. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
  307. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
  308. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
  309. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
  310. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
  311. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
  312. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
  313. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
  314. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
  315. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
  316. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
  317. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
  318. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
  319. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
  320. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
  321. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
  322. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
  323. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
  324. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
  325. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
  326. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
  327. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
  328. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
  329. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
  330. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
  331. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
  332. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
  333. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
  334. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
  335. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
  336. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
  337. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
  338. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
  339. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
  340. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
  341. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
  342. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
  343. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
  344. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
  345. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
  346. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
  347. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.sql +0 -0
  348. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
  349. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
  350. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
  351. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
  352. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
  353. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
  354. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
  355. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
  356. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
  357. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
  358. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
  359. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
  360. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
  361. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
  362. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
  363. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
  364. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
  365. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.sql +0 -0
  366. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
  367. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
  368. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
  369. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
  370. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
  371. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
  372. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
  373. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
  374. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
  375. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
  376. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
  377. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
  378. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
  379. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
  380. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
  381. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
  382. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
  383. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.sql +0 -0
  384. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
  385. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
  386. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
  387. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
  388. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/data/readme.md +0 -0
  389. {geovisio-2.8.1 → geovisio-2.10.0}/migrations/data/sensor_data.json +0 -0
  390. {geovisio-2.8.1 → geovisio-2.10.0}/mkdocs.yml +0 -0
  391. {geovisio-2.8.1 → geovisio-2.10.0}/runtime.txt +0 -0
  392. {geovisio-2.8.1 → geovisio-2.10.0}/tests/__init__.py +0 -0
  393. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/1.jpg +0 -0
  394. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/1_blurred.jpg +0 -0
  395. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/2.jpg +0 -0
  396. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/3.jpg +0 -0
  397. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/4.jpg +0 -0
  398. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/5.jpg +0 -0
  399. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/b1.jpg +0 -0
  400. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/b2.jpg +0 -0
  401. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/c1.jpg +0 -0
  402. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/crop.jpg +0 -0
  403. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/d1.jpg +0 -0
  404. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1.jpg +0 -0
  405. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1_artist.jpg +0 -0
  406. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1_without_exif.jpg +0 -0
  407. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e2.jpg +0 -0
  408. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e3.jpg +0 -0
  409. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e4.jpg +0 -0
  410. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e5.jpg +0 -0
  411. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/focal_zero.jpg +0 -0
  412. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/invalid_exif.jpg +0 -0
  413. {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/xpcomment.jpg +0 -0
  414. {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/__init__.py +0 -0
  415. {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/conftest.py +0 -0
  416. {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_api_conformance.py +0 -0
  417. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/__init__.py +0 -0
  418. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/docker-compose-auth-test.yml +0 -0
  419. {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_s3.py +0 -0
  420. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_model_query.py +0 -0
  421. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_auth.py +0 -0
  422. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_filesystems.py +0 -0
  423. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_reports.py +0 -0
  424. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_excluded_areas.py +0 -0
  425. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_pages.py +0 -0
  426. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_params.py +0 -0
  427. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_reports.py +0 -0
  428. {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_users.py +0 -0
  429. {geovisio-2.8.1 → 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,60 @@ 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
+
41
+ ## [2.9.0] - 2025-05-12
42
+
43
+ ### Added
44
+
45
+ - Add a new configuration `PICTURE_PROCESS_NB_RETRIES` to tell the number of times a job will be retried if there is a `RecoverableProcessException` during process (like if the blurring api is not reachable). Defaults to 5 like before.
46
+ - Add a way to search on semantic tags in `/api/search` endpoint with a CQL2 filter like `filter="semantics.some_key"='some_value'`.
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`.
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..
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.
51
+
52
+ ### Fixed
53
+
54
+ - Fix the pagination links when many sequences had the exact same creation date on `/api/collections`.
55
+ - Migration `20240409_01_jnhra-pictures-grid.sql` was not working from empty database.
56
+ - When asking for collections list as CSV format, API was sending `Content-Type: text/html` instead of `text/csv` in response.
57
+ - Fix a sql error on `/api/users/me/collection` when using PostgreSQL <= 13.
58
+ - Fix a bug causing a 500 when filtering collections with no updates
59
+ - Fix a bug where the collection geometry was not recomputed after a sort.
60
+
61
+ ### Changed
62
+
63
+ - Change the way the coefficients are computed for the grid, compute the mean only over squares with flat (or 360°) pictures.
64
+ - Update lot of dependencies (Flask, psycopg, pillow, sentry, ...)
65
+
12
66
  ## [2.8.1] - 2025-03-13
13
67
 
14
68
  ### Added
@@ -16,10 +70,12 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
16
70
  - Add a way to know the role and permission of the logged user in `/api/users/me`.
17
71
  - Add the ability to update an upload set parameters through a `PATCH` on `/api/upload_sets/:id`.
18
72
  - Add a debug endpoint `/api/debug_headers` that can be handy when setting a new instance to check if the proxies are correctly setting the headers.
73
+ - Add the ability to add annotations to a part of a picture, with semantic tags associated (through `/api/collections/:id/items/:id/annotations`).
19
74
 
20
75
  ### Fixed
21
76
 
22
77
  - Fix a bug where dispatching several time the same upload set would not cleanup unused sequences.
78
+ - Fix a bug where the relative heading parameter was not correctly validated on null values.
23
79
 
24
80
  ### Changed
25
81
 
@@ -31,7 +87,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
31
87
 
32
88
  - Add the ability to export a user's collections in a CSV file by either providing a `format` query parameter or with the `Accept: text/csv` header. The CSV export is not limited to the first 1000 collections as the JSON API.
33
89
  - More metadata can be defined for the API in `API_SUMMARY` environment variable: contact email and geographical coverage
34
- - Add the ability to blur again a picture/sequence, by calling the `/api/collections/:id/prepare`/`/api/collections/:id/items/:id/prepare` endpoints.
90
+ - Add the ability to blur again a picture/sequence, by calling the `/api/collections/:id/prepare`/`/api/collections/:id/items/:id/prepare` endpoints.
35
91
  - Add the ability to change a picture's capture time, latitude and longitude using the PATCH `/api/collections/:id/items/:id` route.
36
92
  - Add the number of collection to the endpoint `/api/users/:id/collection`
37
93
  - Add _pages_ management to handle legal mentions and terms of service storage in database. New routes `/api/pages` allow to create, list, delete these pages in several languages.
@@ -68,7 +124,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
68
124
  - Add `missing_fields` list to the `/api/upload_sets/:id/files` response detailling the missing fields from a rejected uploaded picture.
69
125
  - Details about picture quality are now offered for display and filtering:
70
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).
71
- - 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)
72
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.
73
129
  - Translations in Spanish 🇪🇸 and Hungarian 🇭🇺.
74
130
 
@@ -622,7 +678,9 @@ FLASK_APP="src" flask process-sequences
622
678
  - Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
623
679
  - Dockerfile for easy server setup
624
680
 
625
- [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...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
683
+ [2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
626
684
  [2.8.1]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...2.8.1
627
685
  [2.8.0]: https://gitlab.com/panoramax/server/api/-/compare/2.7.1...2.8.0
628
686
  [2.7.1]: https://gitlab.com/panoramax/server/api/-/compare/2.7.0...2.7.1
@@ -1,55 +1,56 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geovisio
3
- Version: 2.8.1
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
7
7
  Description-Content-Type: text/markdown
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  License-File: LICENSE
10
- Requires-Dist: Flask ~= 2.3
11
- Requires-Dist: psycopg[pool] ~= 3.1
10
+ Requires-Dist: Flask ~= 3.1
11
+ Requires-Dist: psycopg[pool] ~= 3.2
12
12
  Requires-Dist: flasgger ~= 0.9.7
13
- Requires-Dist: Pillow ~= 9.4
14
- Requires-Dist: Flask-Cors ~= 4.0
13
+ Requires-Dist: Pillow ~= 11.1
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
18
18
  Requires-Dist: requests ~= 2.31
19
- Requires-Dist: yoyo-migrations ~= 8.2
20
- Requires-Dist: psycopg-binary ~= 3.1
21
- Requires-Dist: python-dotenv ~= 0.21
22
- Requires-Dist: authlib ~= 1.2
19
+ Requires-Dist: yoyo-migrations ~= 9.0
20
+ Requires-Dist: psycopg-binary ~= 3.2
21
+ Requires-Dist: python-dotenv ~= 1.1
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
- Requires-Dist: sentry-sdk[flask] ~= 1.31
27
- Requires-Dist: pygeofilter[backend-native] ~= 0.2.4
26
+ Requires-Dist: sentry-sdk[flask] ~= 2.24
27
+ Requires-Dist: pygeofilter[backend-native] ~= 0.3.1
28
28
  Requires-Dist: python-dateutil ~= 2.9.0
29
- Requires-Dist: tzdata ~= 2024.1
30
- Requires-Dist: croniter ~= 2.0.5
31
- Requires-Dist: pydantic ~= 2.7
29
+ Requires-Dist: tzdata ~= 2025.2
30
+ Requires-Dist: croniter ~= 6.0.0
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.1.0
34
+ Requires-Dist: geojson-pydantic ~= 2.0.0
35
35
  Requires-Dist: email-validator ~= 2.2.0
36
+ Requires-Dist: multipart>=1.2.1
36
37
  Requires-Dist: flit ~= 3.9.0 ; extra == "build"
37
- Requires-Dist: coverage ~= 6.5 ; extra == "dev"
38
- Requires-Dist: protobuf ~= 4.21 ; extra == "dev"
39
- 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"
40
41
  Requires-Dist: pystac ~= 1.9 ; extra == "dev"
41
- Requires-Dist: pytest ~= 8.3 ; extra == "dev"
42
- 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"
43
44
  Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
44
- Requires-Dist: testcontainers ~= 4.1 ; extra == "dev"
45
+ Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
45
46
  Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
46
- Requires-Dist: black ~= 24.1 ; extra == "dev"
47
- Requires-Dist: pre-commit ~= 3.3 ; extra == "dev"
47
+ Requires-Dist: black ~= 25.1 ; extra == "dev"
48
+ Requires-Dist: pre-commit ~= 4.2 ; extra == "dev"
48
49
  Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
49
50
  Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
50
51
  Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
51
- Requires-Dist: mkdocs-material ~= 9.5.21 ; extra == "docs"
52
- Requires-Dist: mkdocs-swagger-ui-tag ~= 0.6.10 ; extra == "docs"
52
+ Requires-Dist: mkdocs-material ~= 9.6.14 ; extra == "docs"
53
+ Requires-Dist: mkdocs-swagger-ui-tag ~= 0.7.1 ; extra == "docs"
53
54
  Project-URL: Home, https://gitlab.com/panoramax/server/api
54
55
  Project-URL: Source Code, https://gitlab.com/panoramax/server/api
55
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
@@ -73,7 +73,7 @@ services:
73
73
  <<: *geovisio-default
74
74
  command: db-upgrade
75
75
  environment:
76
- DB_URL: postgres://gvs:gvspwd@db/geovisio
76
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
77
77
  depends_on:
78
78
  db:
79
79
  condition: service_healthy
@@ -94,13 +94,13 @@ services:
94
94
  OAUTH_CLIENT_ID: geovisio
95
95
  OAUTH_CLIENT_SECRET: ${OAUTH_CLIENT_SECRET}
96
96
  OAUTH_OIDC_URL: https://${DOMAIN}/oauth/realms/geovisio
97
- DB_URL: postgres://gvs:gvspwd@db/geovisio
97
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
98
98
  FLASK_SECRET_KEY: ${FLASK_SECRET_KEY}
99
99
  FLASK_SESSION_COOKIE_DOMAIN: ${DOMAIN:-localhost}
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
106
  PICTURE_PROCESS_THREADS_LIMIT: 0
@@ -108,6 +108,18 @@ services:
108
108
  FS_URL: /data/geovisio
109
109
  NB_API_THREADS: 10
110
110
  INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
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
113
+ API_SUMMARY: >-
114
+ {
115
+ "color": "#abcdef",
116
+ "description": {"en": "a long description", "fr": "une description longue"},
117
+ "logo": "https://gitlab.com/panoramax/gitlab-profile/-/raw/main/images/logo.svg",
118
+ "email": "the_administrator@mypanoramax.org",
119
+ "name": {"en": "${INSTANCE_NAME:-A Panoramax instance}", "fr": "Mon petit serveur des familles"},
120
+ "geo_coverage": {"en": "Anywhere you like", "fr": "Partout où le vent vous portera"}
121
+ }
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
111
123
  ports:
112
124
  - 5000
113
125
  volumes:
@@ -121,17 +133,27 @@ services:
121
133
  networks:
122
134
  db: {}
123
135
  geovisio: {}
136
+ restart: always
124
137
 
125
138
  website:
126
- image: panoramax/website:latest
139
+ image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
127
140
  environment:
141
+ # documentation for configuration: https://docs.panoramax.fr/website/03_Settings/
128
142
  VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
129
143
  VITE_API_URL: /
130
144
  VITE_TILES: https://panoramax.openstreetmap.fr/pmtiles/basic.json
145
+ # optional metadata
146
+ # The title for the <title> tag of the HTML
147
+ VITE_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
148
+ # The title for the meta tags.
149
+ VITE_META_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
150
+ # The description for meta tags, which is useful for SEO.
151
+ VITE_META_DESCRIPTION: "Panoramax is a digital resource for sharing and using field photos. Anyone can take photographs of places visible from public roads and contribute them to the Panoramax database."
131
152
  ports:
132
153
  - 3000
133
154
  networks:
134
155
  geovisio: {}
156
+ restart: always
135
157
 
136
158
  # Background workers used to process pictures in the background
137
159
  # calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
@@ -148,7 +170,7 @@ services:
148
170
  restart: always
149
171
  environment:
150
172
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
151
- DB_URL: postgres://gvs:gvspwd@db/geovisio
173
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
152
174
  FS_URL: /data/geovisio
153
175
  API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
154
176
 
@@ -180,7 +202,7 @@ services:
180
202
  db:
181
203
  environment:
182
204
  POSTGRES_DB: geovisio
183
- POSTGRES_PASSWORD: gvspwd
205
+ POSTGRES_PASSWORD: ${PG_PASSWORD}
184
206
  POSTGRES_USER: gvs
185
207
  healthcheck:
186
208
  test: pg_isready -h db -q -d $$POSTGRES_DB -U $$POSTGRES_USER
@@ -190,12 +212,13 @@ services:
190
212
  start_period: 5s
191
213
  image: postgis/postgis:16-3.4
192
214
  ports:
193
- - 5444:5432
215
+ - 5432
194
216
  volumes:
195
217
  - postgres_data:/var/lib/postgresql/data/
196
218
  - ./1-init-keycloak-db.sh:/docker-entrypoint-initdb.d/1-init-keycloak-db.sh
197
219
  networks:
198
220
  db: {}
221
+ restart: always
199
222
 
200
223
  volumes:
201
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
 
@@ -15,6 +18,9 @@ KEYCLOAK_ADMIN_PASSWORD=
15
18
  # For production should be provided with a long random string as stated in flask's documentation.
16
19
  FLASK_SECRET_KEY=
17
20
 
21
+ # Password of the postgres db account
22
+ PG_PASSWORD=
23
+
18
24
  # Directory where to store the pictures
19
25
  # Note that this directory must have been created beforehand
20
26
  # PICTURES_DIR=./pictures_storage
@@ -30,5 +36,5 @@ FLASK_SECRET_KEY=
30
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/)).
31
37
  # INFRA_NB_PROXIES=2
32
38
 
33
- # The name of your instance which will appear in the top left of the website
34
- 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;
@@ -19,7 +19,7 @@ services:
19
19
  <<: *geovisio-default
20
20
  command: db-upgrade
21
21
  environment:
22
- DB_URL: postgres://gvs:gvspwd@db/geovisio
22
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
23
23
  depends_on:
24
24
  db:
25
25
  condition: service_healthy
@@ -38,20 +38,32 @@ services:
38
38
  OAUTH_PROVIDER: osm
39
39
  OAUTH_CLIENT_ID: ${OAUTH_CLIENT_ID}
40
40
  OAUTH_CLIENT_SECRET: ${OAUTH_CLIENT_SECRET}
41
- DB_URL: postgres://gvs:gvspwd@db/geovisio
41
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
42
42
  FLASK_SECRET_KEY: ${FLASK_SECRET_KEY}
43
43
  FLASK_SESSION_COOKIE_DOMAIN: ${FLASK_SESSION_COOKIE_DOMAIN:-localhost}
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
52
52
  FS_URL: /data/geovisio
53
53
  NB_API_THREADS: 10
54
54
  INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
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
57
+ API_SUMMARY: >-
58
+ {
59
+ "color": "#abcdef",
60
+ "description": {"en": "a long description", "fr": "une description longue"},
61
+ "logo": "https://gitlab.com/panoramax/gitlab-profile/-/raw/main/images/logo.svg",
62
+ "email": "the_administrator@mypanoramax.org",
63
+ "name": {"en": "${INSTANCE_NAME:-A Panoramax instance}", "fr": "Mon petit serveur des familles"},
64
+ "geo_coverage": {"en": "Anywhere you like", "fr": "Partout où le vent vous portera"}
65
+ }
66
+ 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
55
67
  ports:
56
68
  - 5000
57
69
  volumes:
@@ -68,17 +80,28 @@ services:
68
80
  restart: always
69
81
 
70
82
  website:
71
- image: panoramax/website:latest
83
+ image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
72
84
  environment:
73
85
  VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
74
86
  VITE_API_URL: /
75
87
  VITE_TILES: https://panoramax.openstreetmap.fr/pmtiles/basic.json
88
+ # optional metadata
89
+ # The title for the <title> tag of the HTML
90
+ VITE_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
91
+ # The title for the meta tags.
92
+ VITE_META_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
93
+ # The description for meta tags, which is useful for SEO.
94
+ VITE_META_DESCRIPTION: "Panoramax is a digital resource for sharing and using field photos. Anyone can take photographs of places visible from public roads and contribute them to the Panoramax database."
76
95
  ports:
77
96
  - 3000
78
97
  networks:
79
98
  geovisio: {}
80
99
  restart: always
81
-
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).
82
105
  background-worker:
83
106
  <<: *geovisio-default
84
107
  command: picture-worker
@@ -90,9 +113,9 @@ services:
90
113
  restart: always
91
114
  environment:
92
115
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
93
- DB_URL: postgres://gvs:gvspwd@db/geovisio
116
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
94
117
  FS_URL: /data/geovisio
95
- API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
118
+ API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
96
119
 
97
120
  deploy:
98
121
  mode: replicated
@@ -120,7 +143,7 @@ services:
120
143
  db:
121
144
  environment:
122
145
  POSTGRES_DB: geovisio
123
- POSTGRES_PASSWORD: gvspwd
146
+ POSTGRES_PASSWORD: ${PG_PASSWORD}
124
147
  POSTGRES_USER: gvs
125
148
  healthcheck:
126
149
  test: pg_isready -h db -q -d $$POSTGRES_DB -U $$POSTGRES_USER
@@ -130,7 +153,7 @@ services:
130
153
  start_period: 5s
131
154
  image: postgis/postgis:16-3.4
132
155
  ports:
133
- - 5445:5432
156
+ - 5432
134
157
  volumes:
135
158
  - postgres_data:/var/lib/postgresql/data/
136
159
  networks: