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.
- geovisio-2.10.0/.gitignore +39 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/CHANGELOG.md +61 -3
- {geovisio-2.8.1 → geovisio-2.10.0}/PKG-INFO +27 -26
- geovisio-2.10.0/docker/docker-compose-blurring.yml +70 -0
- geovisio-2.10.0/docker/docker-compose-full-linux.yml +6 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/docker-compose-full.yml +6 -1
- geovisio-2.10.0/docker/docker-compose-minio.yml +45 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/docker-compose.yml +31 -8
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/env.example +8 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/nginx.conf +2 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/docker-compose.yml +33 -10
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/env.example +9 -3
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/nginx.conf +9 -6
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/open_api.json +1383 -191
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/STAC_compatibility.md +19 -0
- geovisio-2.10.0/docs/install/deep_dive/blur_api.md +34 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/install.md +8 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/settings.md +86 -12
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/running_docker_keycloak.md +21 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/running_docker_osm_auth.md +26 -5
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/__init__.py +6 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/config_app.py +16 -5
- geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/ar/LC_MESSAGES/messages.po +818 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/da/LC_MESSAGES/messages.po +4 -3
- geovisio-2.10.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/de/LC_MESSAGES/messages.po +55 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/en/LC_MESSAGES/messages.po +193 -139
- geovisio-2.10.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +53 -4
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.po +1 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +101 -6
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/it/LC_MESSAGES/messages.po +63 -3
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +1 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/messages.pot +819 -0
- geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.po +937 -0
- geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/oc/LC_MESSAGES/messages.po +818 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/sv/LC_MESSAGES/messages.po +823 -0
- geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/messages.pot → geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.po +4 -5
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +1 -1
- geovisio-2.10.0/geovisio/utils/annotations.py +183 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/auth.py +14 -13
- geovisio-2.10.0/geovisio/utils/cql2.py +134 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/db.py +7 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/fields.py +38 -9
- geovisio-2.10.0/geovisio/utils/items.py +44 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/model_query.py +4 -4
- geovisio-2.10.0/geovisio/utils/pic_shape.py +63 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/pictures.py +164 -29
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/reports.py +10 -17
- geovisio-2.10.0/geovisio/utils/semantics.py +259 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/sentry.py +1 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/sequences.py +191 -93
- geovisio-2.10.0/geovisio/utils/tags.py +31 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/upload_set.py +287 -209
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/website.py +1 -1
- geovisio-2.10.0/geovisio/web/annotations.py +354 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/auth.py +1 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/collections.py +73 -54
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/configuration.py +26 -5
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/docs.py +143 -11
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/items.py +232 -155
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/map.py +25 -13
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/params.py +55 -52
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/pictures.py +34 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/stac.py +19 -12
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/tokens.py +49 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/upload_set.py +148 -37
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/users.py +4 -4
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/utils.py +2 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/workers/runner_pictures.py +190 -24
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.sql +5 -2
- geovisio-2.10.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +21 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_02_dzVET-picture-grid-public.sql +7 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +1 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +2 -2
- geovisio-2.10.0/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +14 -0
- geovisio-2.10.0/migrations/20250206_01_PjrEL-annotation-semantics.sql +15 -0
- geovisio-2.10.0/migrations/20250306_01_58oju-semantics-views.rollback.sql +5 -0
- geovisio-2.10.0/migrations/20250306_01_58oju-semantics-views.sql +52 -0
- geovisio-2.10.0/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +5 -0
- geovisio-2.10.0/migrations/20250318_01_pANl1-semantics-functions.sql +41 -0
- geovisio-2.10.0/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +7 -0
- geovisio-2.10.0/migrations/20250331_01_kRKjo-store-detections-id.sql +25 -0
- geovisio-2.10.0/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +6 -0
- geovisio-2.10.0/migrations/20250424_01_RBGXC-semantics-indexes.sql +6 -0
- geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.rollback.sql +24 -0
- geovisio-2.10.0/migrations/20250502_01_ZNmkU-job-task-read-metadata.sql +7 -0
- geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.rollback.sql +12 -0
- geovisio-2.10.0/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.sql +12 -0
- geovisio-2.10.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +11 -0
- geovisio-2.10.0/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +11 -0
- geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.rollback.sql +7 -0
- geovisio-2.10.0/migrations/20250513_01_8WkZC-upload-sets-default-config.sql +15 -0
- geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.rollback.sql +85 -0
- geovisio-2.10.0/migrations/20250523_01_b11eW-picture-update-index.sql +166 -0
- geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.rollback.sql +4 -0
- geovisio-2.10.0/migrations/20250523_02_5ZXXh-update-picture-updated-at.sql +7 -0
- geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.rollback.sql +4 -0
- geovisio-2.10.0/migrations/20250624_01_SETp6-job-warnings.sql +4 -0
- geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.rollback.sql +6 -0
- geovisio-2.10.0/migrations/20250701_01_kr371-upload-set-semantics.sql +15 -0
- geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.rollback.sql +4 -0
- geovisio-2.10.0/migrations/20250703_01_p2WVV-sequence-upload-set-link.sql +4 -0
- geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.rollback.sql +4 -0
- geovisio-2.10.0/migrations/20250703_02_q0s3D-sequence-upload-set-fill.sql +26 -0
- geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.rollback.sql +24 -0
- geovisio-2.10.0/migrations/20250716_01_f8tcJ-check-empty-annotation-late.sql +10 -0
- geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.rollback.sql +4 -0
- geovisio-2.10.0/migrations/20250728_01_2zgur-upload-set-relative-heading.sql +4 -0
- geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.rollback.sql +20 -0
- geovisio-2.10.0/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.sql +26 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/pyproject.toml +26 -25
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/conftest.py +139 -51
- geovisio-2.10.0/tests/fixed_data/test_many_semantics.py +209 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences.py +28 -186
- geovisio-2.10.0/tests/fixed_data/test_many_sequences_different_insertion_date.py +256 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_web_collections_one_collection.py +254 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/conftest.py +16 -3
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_auth.py +14 -6
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_tokens.py +26 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_admin_cli_cleanup.py +9 -10
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_db_migrations.py +1 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_factory.py +3 -3
- geovisio-2.10.0/tests/test_utils_annotations.py +102 -0
- geovisio-2.10.0/tests/test_utils_cql2.py +40 -0
- geovisio-2.10.0/tests/test_utils_items.py +28 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_pictures.py +107 -2
- geovisio-2.10.0/tests/test_utils_semantics.py +378 -0
- geovisio-2.10.0/tests/test_utils_sequences.py +189 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_tags.py +2 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_upload_set.py +8 -4
- geovisio-2.10.0/tests/test_web_annotation.py +933 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_collections.py +112 -59
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_configuration.py +21 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_items.py +124 -314
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_map.py +3 -3
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_pictures.py +0 -1
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_prepare.py +2 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_stac.py +2 -2
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_upload_set.py +660 -82
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_workers_runner_pictures.py +662 -14
- geovisio-2.8.1/.gitignore +0 -13
- geovisio-2.8.1/docker/docker-compose-blurring.yml +0 -37
- geovisio-2.8.1/docker/docker-compose-minio.yml +0 -34
- geovisio-2.8.1/docs/install/deep_dive/blur_api.md +0 -20
- geovisio-2.8.1/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.8.1/geovisio/translations/nl/LC_MESSAGES/messages.po +0 -602
- geovisio-2.8.1/geovisio/utils/semantics.py +0 -120
- geovisio-2.8.1/geovisio/web/annotations.py +0 -17
- geovisio-2.8.1/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -17
- {geovisio-2.8.1 → geovisio-2.10.0}/.dockerignore +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/.flaskenv +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/.gitlab-ci.yml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/.pre-commit-config.yaml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/CODE_OF_CONDUCT.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/Dockerfile +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/LICENSE +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/Makefile +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/Procfile +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/README.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/babel.cfg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/bin/post_compile +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/bin/run_production_api.sh +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/docker-compose-keycloak.yml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/docker-entrypoint.sh +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-keycloak-auth/robots.txt +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/full-osm-auth/robots.txt +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker/keycloak-realm.json +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docker-compose.yml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/api.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/api/openapi.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/develop_server.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/dev/releases.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/images/geovisio_authentication_flow.svg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/index.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/cli.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/database_setup.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/excluded_areas.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/deep_dive/pictures_processing.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/running.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/docs/install/update.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/cleanup.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/db.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/sequence_heading.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/admin_cli/user.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/db_migrations.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/errors.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/templates/main.html +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/templates/viewer.html +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/excluded_areas.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/extent.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/filesystems.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/link.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/loggers.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/params.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/time.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/utils/tokens.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/excluded_areas.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/pages.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/prepare.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/reports.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/web/rss.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/geovisio/workers/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/big_picture.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/big_picture.svg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/favicon.ico +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/favicon.svg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/logo.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/logo.svg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/logo_full.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/logo_full.svg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/images/sponsors.png +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/data/readme.md +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/migrations/data/sensor_data.json +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/mkdocs.yml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/runtime.txt +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/1.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/1_blurred.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/2.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/3.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/4.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/5.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/b1.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/b2.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/c1.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/crop.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/d1.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1_artist.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e1_without_exif.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e2.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e3.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e4.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/e5.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/focal_zero.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/invalid_exif.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/data/xpcomment.jpg +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/conftest.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/fixed_data/test_api_conformance.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/__init__.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/docker-compose-auth-test.yml +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/integration/test_s3.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_model_query.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_auth.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_filesystems.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_utils_reports.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_excluded_areas.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_pages.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_params.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_reports.py +0 -0
- {geovisio-2.8.1 → geovisio-2.10.0}/tests/test_web_users.py +0 -0
- {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
|
|
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.
|
|
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.
|
|
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 ~=
|
|
11
|
-
Requires-Dist: psycopg[pool] ~= 3.
|
|
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 ~=
|
|
14
|
-
Requires-Dist: Flask-Cors ~=
|
|
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 ~=
|
|
20
|
-
Requires-Dist: psycopg-binary ~= 3.
|
|
21
|
-
Requires-Dist: python-dotenv ~=
|
|
22
|
-
Requires-Dist: authlib ~= 1.
|
|
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]
|
|
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] ~=
|
|
27
|
-
Requires-Dist: pygeofilter[backend-native] ~= 0.
|
|
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 ~=
|
|
30
|
-
Requires-Dist: croniter ~=
|
|
31
|
-
Requires-Dist: pydantic ~= 2.
|
|
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 ~=
|
|
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 ~=
|
|
38
|
-
Requires-Dist: protobuf ~=
|
|
39
|
-
Requires-Dist: mapbox-vector-tile ~= 2.
|
|
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.
|
|
42
|
-
Requires-Dist: pytest-datafiles ~=
|
|
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.
|
|
45
|
+
Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
|
|
45
46
|
Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
|
|
46
|
-
Requires-Dist: black ~=
|
|
47
|
-
Requires-Dist: pre-commit ~=
|
|
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.
|
|
52
|
-
Requires-Dist: mkdocs-swagger-ui-tag ~= 0.
|
|
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: {}
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
-
|
|
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
|
-
#
|
|
34
|
-
|
|
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
|
|
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
|
|
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
|
|
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: /
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
-
|
|
156
|
+
- 5432
|
|
134
157
|
volumes:
|
|
135
158
|
- postgres_data:/var/lib/postgresql/data/
|
|
136
159
|
networks:
|