geovisio 2.8.0__tar.gz → 2.9.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 (395) hide show
  1. {geovisio-2.8.0 → geovisio-2.9.0}/CHANGELOG.md +46 -2
  2. {geovisio-2.8.0 → geovisio-2.9.0}/PKG-INFO +24 -22
  3. {geovisio-2.8.0 → geovisio-2.9.0}/docker/docker-compose-full.yml +1 -1
  4. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/docker-compose.yml +24 -4
  5. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/env.example +3 -0
  6. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/nginx.conf +1 -1
  7. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-osm-auth/docker-compose.yml +23 -4
  8. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-osm-auth/env.example +3 -0
  9. {geovisio-2.8.0 → geovisio-2.9.0}/docs/api/open_api.json +729 -66
  10. {geovisio-2.8.0 → geovisio-2.9.0}/docs/dev/STAC_compatibility.md +1 -0
  11. geovisio-2.9.0/docs/install/deep_dive/blur_api.md +34 -0
  12. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/settings.md +30 -0
  13. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/tutorials/running_docker_keycloak.md +12 -0
  14. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/tutorials/running_docker_osm_auth.md +5 -3
  15. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/__init__.py +16 -3
  16. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/config_app.py +11 -1
  17. geovisio-2.9.0/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
  18. {geovisio-2.8.0/geovisio/translations/ja → geovisio-2.9.0/geovisio/translations/br}/LC_MESSAGES/messages.po +144 -101
  19. geovisio-2.9.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  20. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/da/LC_MESSAGES/messages.po +10 -1
  21. geovisio-2.9.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  22. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/de/LC_MESSAGES/messages.po +10 -1
  23. geovisio-2.9.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  24. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/en/LC_MESSAGES/messages.po +9 -7
  25. geovisio-2.9.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  26. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +67 -1
  27. geovisio-2.9.0/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
  28. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/es/LC_MESSAGES/messages.po +4 -3
  29. geovisio-2.9.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  30. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +37 -4
  31. geovisio-2.9.0/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
  32. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +4 -3
  33. geovisio-2.9.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  34. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/it/LC_MESSAGES/messages.po +10 -1
  35. geovisio-2.9.0/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
  36. geovisio-2.9.0/geovisio/translations/ja/LC_MESSAGES/messages.po +807 -0
  37. geovisio-2.9.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  38. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/nl/LC_MESSAGES/messages.po +131 -25
  39. geovisio-2.9.0/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
  40. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +4 -3
  41. geovisio-2.9.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
  42. geovisio-2.9.0/geovisio/translations/sv/LC_MESSAGES/messages.po +822 -0
  43. geovisio-2.9.0/geovisio/utils/annotations.py +186 -0
  44. geovisio-2.9.0/geovisio/utils/cql2.py +134 -0
  45. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/db.py +7 -0
  46. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/fields.py +24 -7
  47. geovisio-2.9.0/geovisio/utils/loggers.py +14 -0
  48. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/model_query.py +2 -2
  49. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/params.py +7 -4
  50. geovisio-2.9.0/geovisio/utils/pic_shape.py +63 -0
  51. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/pictures.py +54 -12
  52. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/reports.py +10 -17
  53. geovisio-2.9.0/geovisio/utils/semantics.py +230 -0
  54. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/sentry.py +0 -1
  55. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/sequences.py +141 -60
  56. geovisio-2.9.0/geovisio/utils/tags.py +31 -0
  57. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/upload_set.py +26 -21
  58. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/website.py +3 -0
  59. geovisio-2.9.0/geovisio/web/annotations.py +213 -0
  60. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/auth.py +3 -2
  61. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/collections.py +49 -34
  62. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/configuration.py +2 -1
  63. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/docs.py +55 -16
  64. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/items.py +55 -54
  65. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/map.py +25 -13
  66. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/params.py +11 -21
  67. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/stac.py +19 -12
  68. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/upload_set.py +92 -11
  69. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/users.py +31 -4
  70. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/workers/runner_pictures.py +71 -10
  71. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240409_01_jnhra-pictures-grid.sql +2 -1
  72. geovisio-2.9.0/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +14 -0
  73. geovisio-2.9.0/migrations/20250206_01_PjrEL-annotation-semantics.sql +15 -0
  74. geovisio-2.9.0/migrations/20250306_01_58oju-semantics-views.rollback.sql +5 -0
  75. geovisio-2.9.0/migrations/20250306_01_58oju-semantics-views.sql +52 -0
  76. geovisio-2.9.0/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +5 -0
  77. geovisio-2.9.0/migrations/20250318_01_pANl1-semantics-functions.sql +41 -0
  78. geovisio-2.9.0/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +7 -0
  79. geovisio-2.9.0/migrations/20250331_01_kRKjo-store-detections-id.sql +25 -0
  80. geovisio-2.9.0/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +6 -0
  81. geovisio-2.9.0/migrations/20250424_01_RBGXC-semantics-indexes.sql +6 -0
  82. geovisio-2.9.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +11 -0
  83. geovisio-2.9.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +11 -0
  84. {geovisio-2.8.0 → geovisio-2.9.0}/pyproject.toml +21 -20
  85. {geovisio-2.8.0 → geovisio-2.9.0}/tests/conftest.py +102 -43
  86. geovisio-2.9.0/tests/fixed_data/test_many_semantics.py +155 -0
  87. {geovisio-2.8.0 → geovisio-2.9.0}/tests/fixed_data/test_many_sequences.py +28 -186
  88. geovisio-2.9.0/tests/fixed_data/test_many_sequences_different_insertion_date.py +256 -0
  89. {geovisio-2.8.0 → geovisio-2.9.0}/tests/fixed_data/test_web_collections_one_collection.py +2 -0
  90. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/test_auth.py +7 -0
  91. geovisio-2.9.0/tests/test_utils_annotations.py +102 -0
  92. geovisio-2.9.0/tests/test_utils_cql2.py +40 -0
  93. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_pictures.py +1 -1
  94. geovisio-2.9.0/tests/test_utils_semantics.py +378 -0
  95. geovisio-2.9.0/tests/test_utils_sequences.py +189 -0
  96. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_tags.py +2 -1
  97. geovisio-2.9.0/tests/test_web_annotation.py +799 -0
  98. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_collections.py +70 -41
  99. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_configuration.py +2 -1
  100. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_items.py +25 -17
  101. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_pictures.py +0 -1
  102. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_upload_set.py +322 -0
  103. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_users.py +13 -1
  104. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_workers_runner_pictures.py +292 -4
  105. geovisio-2.8.0/docs/install/deep_dive/blur_api.md +0 -20
  106. geovisio-2.8.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
  107. geovisio-2.8.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
  108. geovisio-2.8.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
  109. geovisio-2.8.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
  110. geovisio-2.8.0/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
  111. geovisio-2.8.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
  112. geovisio-2.8.0/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
  113. geovisio-2.8.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
  114. geovisio-2.8.0/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
  115. geovisio-2.8.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
  116. geovisio-2.8.0/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
  117. geovisio-2.8.0/geovisio/utils/semantics.py +0 -120
  118. geovisio-2.8.0/geovisio/web/annotations.py +0 -17
  119. {geovisio-2.8.0 → geovisio-2.9.0}/.dockerignore +0 -0
  120. {geovisio-2.8.0 → geovisio-2.9.0}/.flaskenv +0 -0
  121. {geovisio-2.8.0 → geovisio-2.9.0}/.gitignore +0 -0
  122. {geovisio-2.8.0 → geovisio-2.9.0}/.gitlab-ci.yml +0 -0
  123. {geovisio-2.8.0 → geovisio-2.9.0}/.pre-commit-config.yaml +0 -0
  124. {geovisio-2.8.0 → geovisio-2.9.0}/CODE_OF_CONDUCT.md +0 -0
  125. {geovisio-2.8.0 → geovisio-2.9.0}/Dockerfile +0 -0
  126. {geovisio-2.8.0 → geovisio-2.9.0}/LICENSE +0 -0
  127. {geovisio-2.8.0 → geovisio-2.9.0}/Makefile +0 -0
  128. {geovisio-2.8.0 → geovisio-2.9.0}/Procfile +0 -0
  129. {geovisio-2.8.0 → geovisio-2.9.0}/README.md +0 -0
  130. {geovisio-2.8.0 → geovisio-2.9.0}/babel.cfg +0 -0
  131. {geovisio-2.8.0 → geovisio-2.9.0}/bin/post_compile +0 -0
  132. {geovisio-2.8.0 → geovisio-2.9.0}/bin/run_production_api.sh +0 -0
  133. {geovisio-2.8.0 → geovisio-2.9.0}/docker/docker-compose-blurring.yml +0 -0
  134. {geovisio-2.8.0 → geovisio-2.9.0}/docker/docker-compose-keycloak.yml +0 -0
  135. {geovisio-2.8.0 → geovisio-2.9.0}/docker/docker-compose-minio.yml +0 -0
  136. {geovisio-2.8.0 → geovisio-2.9.0}/docker/docker-entrypoint.sh +0 -0
  137. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
  138. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
  139. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
  140. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
  141. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-keycloak-auth/robots.txt +0 -0
  142. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-osm-auth/nginx.conf +0 -0
  143. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
  144. {geovisio-2.8.0 → geovisio-2.9.0}/docker/full-osm-auth/robots.txt +0 -0
  145. {geovisio-2.8.0 → geovisio-2.9.0}/docker/keycloak-realm.json +0 -0
  146. {geovisio-2.8.0 → geovisio-2.9.0}/docker-compose.yml +0 -0
  147. {geovisio-2.8.0 → geovisio-2.9.0}/docs/api/api.md +0 -0
  148. {geovisio-2.8.0 → geovisio-2.9.0}/docs/api/openapi.md +0 -0
  149. {geovisio-2.8.0 → geovisio-2.9.0}/docs/dev/develop_server.md +0 -0
  150. {geovisio-2.8.0 → geovisio-2.9.0}/docs/dev/releases.md +0 -0
  151. {geovisio-2.8.0 → geovisio-2.9.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
  152. {geovisio-2.8.0 → geovisio-2.9.0}/docs/images/geovisio-architecture-simple.png +0 -0
  153. {geovisio-2.8.0 → geovisio-2.9.0}/docs/images/geovisio_authentication_flow.svg +0 -0
  154. {geovisio-2.8.0 → geovisio-2.9.0}/docs/index.md +0 -0
  155. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/cli.md +0 -0
  156. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/database_setup.md +0 -0
  157. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/deep_dive/excluded_areas.md +0 -0
  158. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
  159. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/deep_dive/pictures_processing.md +0 -0
  160. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/install.md +0 -0
  161. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/running.md +0 -0
  162. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
  163. {geovisio-2.8.0 → geovisio-2.9.0}/docs/install/update.md +0 -0
  164. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/__init__.py +0 -0
  165. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/cleanup.py +0 -0
  166. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/db.py +0 -0
  167. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
  168. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
  169. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/sequence_heading.py +0 -0
  170. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/admin_cli/user.py +0 -0
  171. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/db_migrations.py +0 -0
  172. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/errors.py +0 -0
  173. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/templates/main.html +0 -0
  174. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/templates/viewer.html +0 -0
  175. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
  176. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/el/LC_MESSAGES/messages.po +0 -0
  177. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
  178. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +0 -0
  179. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
  180. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +0 -0
  181. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/messages.pot +0 -0
  182. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
  183. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
  184. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/__init__.py +0 -0
  185. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/auth.py +0 -0
  186. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/excluded_areas.py +0 -0
  187. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/extent.py +0 -0
  188. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/filesystems.py +0 -0
  189. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/link.py +0 -0
  190. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/time.py +0 -0
  191. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/utils/tokens.py +0 -0
  192. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/__init__.py +0 -0
  193. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/excluded_areas.py +0 -0
  194. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/pages.py +0 -0
  195. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/pictures.py +0 -0
  196. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/prepare.py +0 -0
  197. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/reports.py +0 -0
  198. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/rss.py +0 -0
  199. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/tokens.py +0 -0
  200. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/web/utils.py +0 -0
  201. {geovisio-2.8.0 → geovisio-2.9.0}/geovisio/workers/__init__.py +0 -0
  202. {geovisio-2.8.0 → geovisio-2.9.0}/images/big_picture.png +0 -0
  203. {geovisio-2.8.0 → geovisio-2.9.0}/images/big_picture.svg +0 -0
  204. {geovisio-2.8.0 → geovisio-2.9.0}/images/favicon.ico +0 -0
  205. {geovisio-2.8.0 → geovisio-2.9.0}/images/favicon.svg +0 -0
  206. {geovisio-2.8.0 → geovisio-2.9.0}/images/logo.png +0 -0
  207. {geovisio-2.8.0 → geovisio-2.9.0}/images/logo.svg +0 -0
  208. {geovisio-2.8.0 → geovisio-2.9.0}/images/logo_full.png +0 -0
  209. {geovisio-2.8.0 → geovisio-2.9.0}/images/logo_full.svg +0 -0
  210. {geovisio-2.8.0 → geovisio-2.9.0}/images/sponsors.png +0 -0
  211. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
  212. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
  213. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
  214. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
  215. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
  216. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
  217. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
  218. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
  219. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
  220. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
  221. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
  222. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
  223. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
  224. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
  225. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230324_01_ba9WA-status.sql +0 -0
  226. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
  227. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
  228. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
  229. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
  230. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
  231. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
  232. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
  233. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
  234. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
  235. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
  236. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
  237. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
  238. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
  239. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
  240. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
  241. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
  242. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
  243. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
  244. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
  245. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
  246. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
  247. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
  248. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
  249. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
  250. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
  251. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
  252. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
  253. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
  254. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
  255. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
  256. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
  257. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
  258. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
  259. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
  260. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
  261. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
  262. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
  263. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
  264. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
  265. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
  266. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
  267. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
  268. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
  269. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
  270. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
  271. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -0
  272. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
  273. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
  274. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
  275. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
  276. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
  277. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
  278. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -0
  279. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240507_02_dzVET-picture-grid-public.sql +0 -0
  280. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
  281. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
  282. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
  283. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
  284. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
  285. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
  286. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
  287. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
  288. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
  289. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
  290. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
  291. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
  292. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
  293. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
  294. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
  295. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
  296. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
  297. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
  298. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
  299. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
  300. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
  301. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
  302. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
  303. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240801_01_DOqmf-reports.sql +0 -0
  304. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
  305. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
  306. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
  307. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
  308. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
  309. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
  310. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
  311. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
  312. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
  313. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
  314. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
  315. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
  316. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
  317. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
  318. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
  319. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
  320. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
  321. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20240912_01_dAALm-account-index.sql +0 -0
  322. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +0 -0
  323. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +0 -0
  324. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
  325. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
  326. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
  327. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
  328. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
  329. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
  330. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
  331. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
  332. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
  333. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
  334. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
  335. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
  336. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
  337. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
  338. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
  339. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
  340. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
  341. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250109_01_4OOP4-pages.sql +0 -0
  342. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
  343. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
  344. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
  345. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
  346. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/data/readme.md +0 -0
  347. {geovisio-2.8.0 → geovisio-2.9.0}/migrations/data/sensor_data.json +0 -0
  348. {geovisio-2.8.0 → geovisio-2.9.0}/mkdocs.yml +0 -0
  349. {geovisio-2.8.0 → geovisio-2.9.0}/runtime.txt +0 -0
  350. {geovisio-2.8.0 → geovisio-2.9.0}/tests/__init__.py +0 -0
  351. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/1.jpg +0 -0
  352. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/1_blurred.jpg +0 -0
  353. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/2.jpg +0 -0
  354. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/3.jpg +0 -0
  355. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/4.jpg +0 -0
  356. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/5.jpg +0 -0
  357. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/b1.jpg +0 -0
  358. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/b2.jpg +0 -0
  359. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/c1.jpg +0 -0
  360. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/crop.jpg +0 -0
  361. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/d1.jpg +0 -0
  362. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e1.jpg +0 -0
  363. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e1_artist.jpg +0 -0
  364. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e1_without_exif.jpg +0 -0
  365. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e2.jpg +0 -0
  366. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e3.jpg +0 -0
  367. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e4.jpg +0 -0
  368. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/e5.jpg +0 -0
  369. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/focal_zero.jpg +0 -0
  370. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/invalid_exif.jpg +0 -0
  371. {geovisio-2.8.0 → geovisio-2.9.0}/tests/data/xpcomment.jpg +0 -0
  372. {geovisio-2.8.0 → geovisio-2.9.0}/tests/fixed_data/__init__.py +0 -0
  373. {geovisio-2.8.0 → geovisio-2.9.0}/tests/fixed_data/conftest.py +0 -0
  374. {geovisio-2.8.0 → geovisio-2.9.0}/tests/fixed_data/test_api_conformance.py +0 -0
  375. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/__init__.py +0 -0
  376. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/conftest.py +0 -0
  377. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/docker-compose-auth-test.yml +0 -0
  378. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/test_s3.py +0 -0
  379. {geovisio-2.8.0 → geovisio-2.9.0}/tests/integration/test_tokens.py +0 -0
  380. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_admin_cli_cleanup.py +0 -0
  381. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_db_migrations.py +0 -0
  382. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_factory.py +0 -0
  383. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_model_query.py +0 -0
  384. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_auth.py +0 -0
  385. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_filesystems.py +0 -0
  386. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_reports.py +0 -0
  387. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_utils_upload_set.py +0 -0
  388. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_excluded_areas.py +0 -0
  389. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_map.py +0 -0
  390. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_pages.py +0 -0
  391. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_params.py +0 -0
  392. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_prepare.py +0 -0
  393. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_reports.py +0 -0
  394. {geovisio-2.8.0 → geovisio-2.9.0}/tests/test_web_stac.py +0 -0
  395. {geovisio-2.8.0 → geovisio-2.9.0}/yoyo.ini +0 -0
@@ -9,13 +9,55 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [2.9.0] - 2025-05-12
13
+
14
+ ### Added
15
+
16
+ - 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.
17
+ - Add a way to search on semantic tags in `/api/search` endpoint with a CQL2 filter like `filter="semantics.some_key"='some_value'`.
18
+ - 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
+ - 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
+ - Handle semantics returned by the blurring API, and automatically add annotations on the pictures with semantic tags on the detected objects..
21
+
22
+ ### Fixed
23
+
24
+ - Fix the pagination links when many sequences had the exact same creation date on `/api/collections`.
25
+ - Migration `20240409_01_jnhra-pictures-grid.sql` was not working from empty database.
26
+ - When asking for collections list as CSV format, API was sending `Content-Type: text/html` instead of `text/csv` in response.
27
+ - Fix a sql error on `/api/users/me/collection` when using PostgreSQL <= 13.
28
+ - Fix a bug causing a 500 when filtering collections with no updates
29
+ - Fix a bug where the collection geometry was not recomputed after a sort.
30
+
31
+ ### Changed
32
+
33
+ - Change the way the coefficients are computed for the grid, compute the mean only over squares with flat (or 360°) pictures.
34
+ - Update lot of dependencies (Flask, psycopg, pillow, sentry, ...)
35
+
36
+ ## [2.8.1] - 2025-03-13
37
+
38
+ ### Added
39
+
40
+ - Add a way to know the role and permission of the logged user in `/api/users/me`.
41
+ - Add the ability to update an upload set parameters through a `PATCH` on `/api/upload_sets/:id`.
42
+ - 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.
43
+ - Add the ability to add annotations to a part of a picture, with semantic tags associated (through `/api/collections/:id/items/:id/annotations`).
44
+
45
+ ### Fixed
46
+
47
+ - Fix a bug where dispatching several time the same upload set would not cleanup unused sequences.
48
+ - Fix a bug where the relative heading parameter was not correctly validated on null values.
49
+
50
+ ### Changed
51
+
52
+ - Only display `tos_accepted` field in `/api/users/me` if ToS are mandatory.
53
+
12
54
  ## [2.8.0] - 2025-02-10
13
55
 
14
56
  ### Added
15
57
 
16
58
  - 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.
17
59
  - More metadata can be defined for the API in `API_SUMMARY` environment variable: contact email and geographical coverage
18
- - Add the ability to blur again a picture/sequence, by calling the `/api/collections/:id/prepare`/`/api/collections/:id/items/:id/prepare` endpoints.
60
+ - Add the ability to blur again a picture/sequence, by calling the `/api/collections/:id/prepare`/`/api/collections/:id/items/:id/prepare` endpoints.
19
61
  - Add the ability to change a picture's capture time, latitude and longitude using the PATCH `/api/collections/:id/items/:id` route.
20
62
  - Add the number of collection to the endpoint `/api/users/:id/collection`
21
63
  - 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.
@@ -606,7 +648,9 @@ FLASK_APP="src" flask process-sequences
606
648
  - Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
607
649
  - Dockerfile for easy server setup
608
650
 
609
- [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...develop
651
+ [Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...develop
652
+ [2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
653
+ [2.8.1]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...2.8.1
610
654
  [2.8.0]: https://gitlab.com/panoramax/server/api/-/compare/2.7.1...2.8.0
611
655
  [2.7.1]: https://gitlab.com/panoramax/server/api/-/compare/2.7.0...2.7.1
612
656
  [2.7.0]: https://gitlab.com/panoramax/server/api/-/compare/2.6.0...2.7.0
@@ -1,39 +1,41 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: geovisio
3
- Version: 2.8.0
3
+ Version: 2.9.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
- Requires-Dist: Flask ~= 2.3
10
- Requires-Dist: psycopg[pool] ~= 3.1
9
+ License-File: LICENSE
10
+ Requires-Dist: Flask ~= 3.1
11
+ Requires-Dist: psycopg[pool] ~= 3.2
11
12
  Requires-Dist: flasgger ~= 0.9.7
12
- Requires-Dist: Pillow ~= 9.4
13
- Requires-Dist: Flask-Cors ~= 4.0
13
+ Requires-Dist: Pillow ~= 11.1
14
+ Requires-Dist: Flask-Cors ~= 5.0
14
15
  Requires-Dist: fs ~= 2.4
15
- Requires-Dist: fs-s3fs-forked ~= 1.1.3
16
+ Requires-Dist: fs-s3fs-forked ~= 1.1.4
16
17
  Requires-Dist: flask-compress ~= 1.14
17
18
  Requires-Dist: requests ~= 2.31
18
- Requires-Dist: yoyo-migrations ~= 8.2
19
- Requires-Dist: psycopg-binary ~= 3.1
20
- Requires-Dist: python-dotenv ~= 0.21
21
- 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.5
22
23
  Requires-Dist: Flask-Executor ~= 1.0
23
24
  Requires-Dist: geopic-tag-reader[write-exif] == 1.4.2
24
25
  Requires-Dist: rfeed ~= 1.1.1
25
- Requires-Dist: sentry-sdk[flask] ~= 1.31
26
- 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
27
28
  Requires-Dist: python-dateutil ~= 2.9.0
28
- Requires-Dist: tzdata ~= 2024.1
29
- Requires-Dist: croniter ~= 2.0.5
30
- Requires-Dist: pydantic ~= 2.7
29
+ Requires-Dist: tzdata ~= 2025.2
30
+ Requires-Dist: croniter ~= 6.0.0
31
+ Requires-Dist: pydantic ~= 2.11
31
32
  Requires-Dist: pydantic-extra-types ~= 2.7
32
33
  Requires-Dist: flask-babel ~= 4.0.0
33
- Requires-Dist: geojson-pydantic ~= 1.1.0
34
+ Requires-Dist: geojson-pydantic ~= 1.2.0
34
35
  Requires-Dist: email-validator ~= 2.2.0
36
+ Requires-Dist: multipart>=1.2.1
35
37
  Requires-Dist: flit ~= 3.9.0 ; extra == "build"
36
- Requires-Dist: coverage ~= 6.5 ; extra == "dev"
38
+ Requires-Dist: coverage ~= 7.7 ; extra == "dev"
37
39
  Requires-Dist: protobuf ~= 4.21 ; extra == "dev"
38
40
  Requires-Dist: mapbox-vector-tile ~= 2.0 ; extra == "dev"
39
41
  Requires-Dist: pystac ~= 1.9 ; extra == "dev"
@@ -42,13 +44,13 @@ Requires-Dist: pytest-datafiles ~= 2.0 ; extra == "dev"
42
44
  Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
43
45
  Requires-Dist: testcontainers ~= 4.1 ; extra == "dev"
44
46
  Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
45
- Requires-Dist: black ~= 24.1 ; extra == "dev"
46
- 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"
47
49
  Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
48
50
  Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
49
51
  Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
50
- Requires-Dist: mkdocs-material ~= 9.5.21 ; extra == "docs"
51
- Requires-Dist: mkdocs-swagger-ui-tag ~= 0.6.10 ; extra == "docs"
52
+ Requires-Dist: mkdocs-material ~= 9.6.9 ; extra == "docs"
53
+ Requires-Dist: mkdocs-swagger-ui-tag ~= 0.6.11 ; extra == "docs"
52
54
  Project-URL: Home, https://gitlab.com/panoramax/server/api
53
55
  Project-URL: Source Code, https://gitlab.com/panoramax/server/api
54
56
  Provides-Extra: build
@@ -59,7 +59,7 @@ services:
59
59
  - |
60
60
  python3 -m flask user elysee --set-role admin --create
61
61
  depends_on:
62
- elysee-account-creator:
62
+ migrations:
63
63
  condition: service_completed_successfully
64
64
  environment:
65
65
  DB_URL: postgres://gvs:gvspwd@db/geovisio
@@ -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,7 +94,7 @@ 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
@@ -103,6 +103,18 @@ services:
103
103
  API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
104
104
  API_DERIVATES_PICTURES_PUBLIC_URL: /derivates
105
105
  API_PERMANENT_PICTURES_PUBLIC_URL: /permanent
106
+ # API SUMMARY regroup many metadata about the instance
107
+ # check the documentation on how translations are handled: https://docs.panoramax.fr/api/install/settings/#metadata
108
+ API_SUMMARY: >-
109
+ {
110
+ "color": "#abcdef",
111
+ "description": {"en": "a long description", "fr": "une description longue"},
112
+ "logo": "https://gitlab.com/panoramax/gitlab-profile/-/raw/main/images/logo.svg",
113
+ "email": "the_administrator@mypanoramax.org",
114
+ "name": {"en": "${INSTANCE_NAME:-A Panoramax instance}", "fr": "Mon petit serveur des familles"},
115
+ "geo_coverage": {"en": "Anywhere you like", "fr": "Partout où le vent vous portera"}
116
+ }
117
+ 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
106
118
  PICTURE_PROCESS_THREADS_LIMIT: 0
107
119
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
108
120
  FS_URL: /data/geovisio
@@ -125,9 +137,17 @@ services:
125
137
  website:
126
138
  image: panoramax/website:latest
127
139
  environment:
140
+ # documentation for configuration: https://docs.panoramax.fr/website/03_Settings/
128
141
  VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
129
142
  VITE_API_URL: /
130
143
  VITE_TILES: https://panoramax.openstreetmap.fr/pmtiles/basic.json
144
+ # optional metadata
145
+ # The title for the <title> tag of the HTML
146
+ VITE_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
147
+ # The title for the meta tags.
148
+ VITE_META_TITLE: "My Panoramax: The free alternative to photo-mapping territories"
149
+ # The description for meta tags, which is useful for SEO.
150
+ 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
151
  ports:
132
152
  - 3000
133
153
  networks:
@@ -148,7 +168,7 @@ services:
148
168
  restart: always
149
169
  environment:
150
170
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
151
- DB_URL: postgres://gvs:gvspwd@db/geovisio
171
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
152
172
  FS_URL: /data/geovisio
153
173
  API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
154
174
 
@@ -180,7 +200,7 @@ services:
180
200
  db:
181
201
  environment:
182
202
  POSTGRES_DB: geovisio
183
- POSTGRES_PASSWORD: gvspwd
203
+ POSTGRES_PASSWORD: ${PG_PASSWORD}
184
204
  POSTGRES_USER: gvs
185
205
  healthcheck:
186
206
  test: pg_isready -h db -q -d $$POSTGRES_DB -U $$POSTGRES_USER
@@ -15,6 +15,9 @@ KEYCLOAK_ADMIN_PASSWORD=
15
15
  # For production should be provided with a long random string as stated in flask's documentation.
16
16
  FLASK_SECRET_KEY=
17
17
 
18
+ # Password of the postgres db account
19
+ PG_PASSWORD=
20
+
18
21
  # Directory where to store the pictures
19
22
  # Note that this directory must have been created beforehand
20
23
  # PICTURES_DIR=./pictures_storage
@@ -52,7 +52,7 @@ http {
52
52
 
53
53
  # add X-forward- headers for keycloak to know it's canonical host
54
54
  # force https
55
- proxy_set_header X-Forwarded-Scheme https;
55
+ proxy_set_header X-Forwarded-Proto https;
56
56
  proxy_set_header X-Forwarded-Host $host;
57
57
 
58
58
  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,7 +38,7 @@ 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
@@ -52,6 +52,18 @@ services:
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:
@@ -73,6 +85,13 @@ services:
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:
@@ -90,7 +109,7 @@ services:
90
109
  restart: always
91
110
  environment:
92
111
  PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
93
- DB_URL: postgres://gvs:gvspwd@db/geovisio
112
+ DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
94
113
  FS_URL: /data/geovisio
95
114
  API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
96
115
 
@@ -120,7 +139,7 @@ services:
120
139
  db:
121
140
  environment:
122
141
  POSTGRES_DB: geovisio
123
- POSTGRES_PASSWORD: gvspwd
142
+ POSTGRES_PASSWORD: ${PG_PASSWORD}
124
143
  POSTGRES_USER: gvs
125
144
  healthcheck:
126
145
  test: pg_isready -h db -q -d $$POSTGRES_DB -U $$POSTGRES_USER
@@ -11,6 +11,9 @@ OAUTH_CLIENT_SECRET=
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
 
14
+ # Password of the postgres db account
15
+ PG_PASSWORD=
16
+
14
17
  # Instance domain, used in cookies
15
18
  FLASK_SESSION_COOKIE_DOMAIN=
16
19