geovisio 2.9.0__tar.gz → 2.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geovisio-2.10.0/.gitignore +39 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/CHANGELOG.md +33 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/PKG-INFO +13 -13
- 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.9.0 → geovisio-2.10.0}/docker/docker-compose-full.yml +6 -1
- geovisio-2.10.0/docker/docker-compose-minio.yml +45 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/docker-compose.yml +12 -9
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/env.example +5 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/nginx.conf +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/docker-compose.yml +10 -6
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/env.example +6 -3
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/nginx.conf +9 -6
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/open_api.json +808 -113
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/STAC_compatibility.md +18 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/install.md +8 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/settings.md +59 -15
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/running_docker_keycloak.md +20 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/running_docker_osm_auth.md +24 -5
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/__init__.py +6 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/config_app.py +5 -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.9.0 → 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.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/de/LC_MESSAGES/messages.po +55 -2
- {geovisio-2.9.0 → 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.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +53 -4
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.po +1 -1
- {geovisio-2.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +91 -3
- {geovisio-2.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/it/LC_MESSAGES/messages.po +63 -3
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +1 -1
- {geovisio-2.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/nl/LC_MESSAGES/messages.po +292 -63
- 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.9.0 → 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.9.0 → geovisio-2.10.0}/geovisio/translations/sv/LC_MESSAGES/messages.po +4 -3
- geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/messages.pot → geovisio-2.10.0/geovisio/translations/ti/LC_MESSAGES/messages.po +4 -5
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/annotations.py +14 -17
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/auth.py +14 -13
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/cql2.py +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/fields.py +14 -2
- geovisio-2.10.0/geovisio/utils/items.py +44 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/model_query.py +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/pic_shape.py +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/pictures.py +111 -18
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/semantics.py +32 -3
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/sentry.py +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/sequences.py +51 -34
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/upload_set.py +285 -198
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/website.py +1 -1
- geovisio-2.10.0/geovisio/web/annotations.py +354 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/auth.py +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/collections.py +26 -22
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/configuration.py +24 -4
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/docs.py +93 -11
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/items.py +197 -121
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/params.py +44 -31
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/pictures.py +34 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/tokens.py +49 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/upload_set.py +150 -32
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/users.py +4 -4
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/utils.py +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/workers/runner_pictures.py +128 -23
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240409_01_jnhra-pictures-grid.sql +3 -1
- geovisio-2.10.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +21 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_02_dzVET-picture-grid-public.sql +7 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +2 -2
- 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/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.9.0 → geovisio-2.10.0}/pyproject.toml +12 -12
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/conftest.py +40 -11
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_semantics.py +54 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_web_collections_one_collection.py +252 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/conftest.py +16 -3
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_auth.py +13 -6
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_tokens.py +26 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_admin_cli_cleanup.py +9 -10
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_db_migrations.py +1 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_factory.py +3 -3
- geovisio-2.10.0/tests/test_utils_items.py +28 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_pictures.py +106 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_upload_set.py +8 -4
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_annotation.py +135 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_collections.py +43 -19
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_configuration.py +19 -1
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_items.py +103 -301
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_map.py +3 -3
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_prepare.py +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_stac.py +2 -2
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_upload_set.py +660 -82
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_workers_runner_pictures.py +370 -10
- geovisio-2.9.0/.gitignore +0 -13
- geovisio-2.9.0/docker/docker-compose-blurring.yml +0 -37
- geovisio-2.9.0/docker/docker-compose-minio.yml +0 -34
- geovisio-2.9.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.9.0/geovisio/web/annotations.py +0 -213
- geovisio-2.9.0/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -17
- {geovisio-2.9.0 → geovisio-2.10.0}/.dockerignore +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/.flaskenv +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/.gitlab-ci.yml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/.pre-commit-config.yaml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/CODE_OF_CONDUCT.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/Dockerfile +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/LICENSE +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/Makefile +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/Procfile +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/README.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/babel.cfg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/bin/post_compile +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/bin/run_production_api.sh +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/docker-compose-keycloak.yml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/docker-entrypoint.sh +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-keycloak-auth/robots.txt +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/full-osm-auth/robots.txt +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker/keycloak-realm.json +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docker-compose.yml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/api.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/api/openapi.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/develop_server.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/dev/releases.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio-architecture-simple.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/images/geovisio_authentication_flow.svg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/index.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/cli.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/database_setup.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/blur_api.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/excluded_areas.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/deep_dive/pictures_processing.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/running.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/docs/install/update.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/cleanup.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/db.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/sequence_heading.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/admin_cli/user.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/db_migrations.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/errors.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/templates/main.html +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/templates/viewer.html +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/db.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/excluded_areas.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/extent.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/filesystems.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/link.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/loggers.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/params.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/reports.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/tags.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/time.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/utils/tokens.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/excluded_areas.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/map.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/pages.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/prepare.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/reports.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/rss.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/web/stac.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/geovisio/workers/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/big_picture.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/big_picture.svg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/favicon.ico +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/favicon.svg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/logo.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/logo.svg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/logo_full.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/logo_full.svg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/images/sponsors.png +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_01_ba9WA-status.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_DOqmf-reports.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20240912_01_dAALm-account-index.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250109_01_4OOP4-pages.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250206_01_PjrEL-annotation-semantics.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250306_01_58oju-semantics-views.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250306_01_58oju-semantics-views.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250318_01_pANl1-semantics-functions.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250331_01_kRKjo-store-detections-id.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250424_01_RBGXC-semantics-indexes.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/data/readme.md +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/migrations/data/sensor_data.json +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/mkdocs.yml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/runtime.txt +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/1.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/1_blurred.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/2.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/3.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/4.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/5.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/b1.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/b2.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/c1.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/crop.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/d1.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1_artist.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e1_without_exif.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e2.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e3.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e4.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/e5.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/focal_zero.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/invalid_exif.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/data/xpcomment.jpg +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/conftest.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_api_conformance.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/fixed_data/test_many_sequences_different_insertion_date.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/__init__.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/docker-compose-auth-test.yml +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/integration/test_s3.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_model_query.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_annotations.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_auth.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_cql2.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_filesystems.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_reports.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_semantics.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_sequences.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_utils_tags.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_excluded_areas.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_pages.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_params.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_pictures.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_reports.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/tests/test_web_users.py +0 -0
- {geovisio-2.9.0 → geovisio-2.10.0}/yoyo.ini +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
pictures
|
|
2
|
+
*.env
|
|
3
|
+
*.log
|
|
4
|
+
picfs
|
|
5
|
+
env
|
|
6
|
+
.pytest_cache
|
|
7
|
+
instance
|
|
8
|
+
__pycache__
|
|
9
|
+
config.py
|
|
10
|
+
docker/models/
|
|
11
|
+
.vscode/
|
|
12
|
+
site/
|
|
13
|
+
*.mo
|
|
14
|
+
|
|
15
|
+
## https://github.com/github/gitignore/blob/f752d0799fb7e690bfb888d5cd4d453d2858a865/Global/macOS.gitignore
|
|
16
|
+
# General
|
|
17
|
+
.DS_Store
|
|
18
|
+
.AppleDouble
|
|
19
|
+
.LSOverride
|
|
20
|
+
Icon[]
|
|
21
|
+
|
|
22
|
+
# Thumbnails
|
|
23
|
+
._*
|
|
24
|
+
|
|
25
|
+
# Files that might appear in the root of a volume
|
|
26
|
+
.DocumentRevisions-V100
|
|
27
|
+
.fseventsd
|
|
28
|
+
.Spotlight-V100
|
|
29
|
+
.TemporaryItems
|
|
30
|
+
.Trashes
|
|
31
|
+
.VolumeIcon.icns
|
|
32
|
+
.com.apple.timemachine.donotpresent
|
|
33
|
+
|
|
34
|
+
# Directories potentially created on remote AFP share
|
|
35
|
+
.AppleDB
|
|
36
|
+
.AppleDesktop
|
|
37
|
+
Network Trash Folder
|
|
38
|
+
Temporary Items
|
|
39
|
+
.apdisk
|
|
@@ -9,6 +9,35 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [2.10.0] - 2025-08-27
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Added 2 new parameters on creating/updating an upload set: `no_split` to create only 1 sequence from the upload set pictures and `no_deduplication` not to remove pictures too close from each other.
|
|
17
|
+
- Add an `updated` field in all the items's responses.
|
|
18
|
+
- Add an `sortby` parameter in search to sort the results (and it can use the new `updated` field).
|
|
19
|
+
- Add a way to generate a new token for the current user (via `POST /api/users/me/tokens`).
|
|
20
|
+
- Added route aliases to get annotations.
|
|
21
|
+
* The route `/api/annotations/<uuid:annotationId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`
|
|
22
|
+
* The route `/api/picture/<uuid:pictureId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>`
|
|
23
|
+
* The route to create an annotation `/api/picture/<uuid:pictureId>/annotations` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations`
|
|
24
|
+
- Add a way to attach semantic tags to upload sets. Those tags will be transferred to all the collections associated to the upload set. This makes it possible to add semantic tags directly at the upload, without waiting for all the associated collections to be created.
|
|
25
|
+
- Add a `relative_heading` parameter to the `/api/upload_sets/:id` route (for `POST` and `PATCH`), to update the relative heading of the upload set. If a `relative_heading` is set on the upload set, it will be applied when computeing the heading of all the associated collections.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- Changed the default to split an upload set in several collection, by default we split when a picture is separated from the previous one by 5 minutes or 100 m. This default can be configured by each instance, and overridden for each upload set.
|
|
30
|
+
- Changed the default to remove capture duplicates in an upload set, by default we remove pictures less than 1m appart like before and with less than 60° (was 30°). This default can be configured by each instance (by updating the `configurations` table), and overridden for each upload set.
|
|
31
|
+
- Posting an empty JSON while patching a picture (`/api/collections/:cid/items/:id`) will now return a 304 instead of a 200.
|
|
32
|
+
- update lots of dependencies
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Deleting an unkown upload set now returns a 404 instead of a 500.
|
|
37
|
+
- Fix a bug when reorienting a sequence with a single picture would crash the website.
|
|
38
|
+
- It's now possible to remove the last semantic from an annotation and add one again when calling `POST /api/collections/:cid/items/:id/annotations` for a shape that already exists.
|
|
39
|
+
- Now, if the blurring api rotate a side oriented picture, its size and exif orientation are updated accordingly.
|
|
40
|
+
|
|
12
41
|
## [2.9.0] - 2025-05-12
|
|
13
42
|
|
|
14
43
|
### Added
|
|
@@ -18,6 +47,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
18
47
|
- Add a `API_REGISTRATION_IS_OPEN` setting in the API to tell the federation that account can (or not) be created directly on the instance. Defaults to `false`.
|
|
19
48
|
- Added field `geovisio:rank_in_collection` to pictures metadata to get the rank of the picture in the collection in `/api/collections/:cid/items/:id` / `/api/collections/:cid/items` and `/api/search` responses. This makes it easier to use the `startAfterRank` parameter to paginate through pictures in collections..
|
|
20
49
|
- Handle semantics returned by the blurring API, and automatically add annotations on the pictures with semantic tags on the detected objects..
|
|
50
|
+
- Add a new async job `read_metadata` to read the metadata of pictures. This job can read or not the file (depending on the `read_file` boolean in the job's `args` field). This is usefull to update metadata when the geopic-tag-reader library is updated.
|
|
21
51
|
|
|
22
52
|
### Fixed
|
|
23
53
|
|
|
@@ -94,7 +124,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
94
124
|
- Add `missing_fields` list to the `/api/upload_sets/:id/files` response detailling the missing fields from a rejected uploaded picture.
|
|
95
125
|
- Details about picture quality are now offered for display and filtering:
|
|
96
126
|
- In sequences and pictures routes: `quality:horizontal_accuracy` for GPS position precision (in meters), `panoramax:horizontal_pixel_density` for pixel density on horizon (px/FOV degree).
|
|
97
|
-
- In vector tiles: `gps_accuracy` and `h_pixel_density` (for
|
|
127
|
+
- In vector tiles: `gps_accuracy` and `h_pixel_density` (for **sequences and pictures** layers, not available on grid layer)
|
|
98
128
|
- In vector tiles style, a new metadata property `panoramax:fields` lists all available properties in each layer (pictures, sequences, grid). This will allow easier compatibility checks in web viewer.
|
|
99
129
|
- Translations in Spanish 🇪🇸 and Hungarian 🇭🇺.
|
|
100
130
|
|
|
@@ -648,7 +678,8 @@ FLASK_APP="src" flask process-sequences
|
|
|
648
678
|
- Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
|
|
649
679
|
- Dockerfile for easy server setup
|
|
650
680
|
|
|
651
|
-
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.
|
|
681
|
+
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.10.0...develop
|
|
682
|
+
[2.10.0]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...2.10.0
|
|
652
683
|
[2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
|
|
653
684
|
[2.8.1]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...2.8.1
|
|
654
685
|
[2.8.0]: https://gitlab.com/panoramax/server/api/-/compare/2.7.1...2.8.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geovisio
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.0
|
|
4
4
|
Summary: GeoVisio API - Main
|
|
5
5
|
Author-email: Adrien PAVIE <panieravide@riseup.net>, Antoine Desbordes <antoine.desbordes@gmail.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -11,7 +11,7 @@ Requires-Dist: Flask ~= 3.1
|
|
|
11
11
|
Requires-Dist: psycopg[pool] ~= 3.2
|
|
12
12
|
Requires-Dist: flasgger ~= 0.9.7
|
|
13
13
|
Requires-Dist: Pillow ~= 11.1
|
|
14
|
-
Requires-Dist: Flask-Cors ~=
|
|
14
|
+
Requires-Dist: Flask-Cors ~= 6.0
|
|
15
15
|
Requires-Dist: fs ~= 2.4
|
|
16
16
|
Requires-Dist: fs-s3fs-forked ~= 1.1.4
|
|
17
17
|
Requires-Dist: flask-compress ~= 1.14
|
|
@@ -19,9 +19,9 @@ Requires-Dist: requests ~= 2.31
|
|
|
19
19
|
Requires-Dist: yoyo-migrations ~= 9.0
|
|
20
20
|
Requires-Dist: psycopg-binary ~= 3.2
|
|
21
21
|
Requires-Dist: python-dotenv ~= 1.1
|
|
22
|
-
Requires-Dist: authlib ~= 1.
|
|
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
26
|
Requires-Dist: sentry-sdk[flask] ~= 2.24
|
|
27
27
|
Requires-Dist: pygeofilter[backend-native] ~= 0.3.1
|
|
@@ -31,26 +31,26 @@ Requires-Dist: croniter ~= 6.0.0
|
|
|
31
31
|
Requires-Dist: pydantic ~= 2.11
|
|
32
32
|
Requires-Dist: pydantic-extra-types ~= 2.7
|
|
33
33
|
Requires-Dist: flask-babel ~= 4.0.0
|
|
34
|
-
Requires-Dist: geojson-pydantic ~=
|
|
34
|
+
Requires-Dist: geojson-pydantic ~= 2.0.0
|
|
35
35
|
Requires-Dist: email-validator ~= 2.2.0
|
|
36
36
|
Requires-Dist: multipart>=1.2.1
|
|
37
37
|
Requires-Dist: flit ~= 3.9.0 ; extra == "build"
|
|
38
|
-
Requires-Dist: coverage ~= 7.
|
|
39
|
-
Requires-Dist: protobuf ~=
|
|
40
|
-
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"
|
|
41
41
|
Requires-Dist: pystac ~= 1.9 ; extra == "dev"
|
|
42
|
-
Requires-Dist: pytest ~= 8.
|
|
43
|
-
Requires-Dist: pytest-datafiles ~=
|
|
42
|
+
Requires-Dist: pytest ~= 8.4 ; extra == "dev"
|
|
43
|
+
Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
|
|
44
44
|
Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
|
|
45
|
-
Requires-Dist: testcontainers ~= 4.
|
|
45
|
+
Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
|
|
46
46
|
Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
|
|
47
47
|
Requires-Dist: black ~= 25.1 ; extra == "dev"
|
|
48
48
|
Requires-Dist: pre-commit ~= 4.2 ; extra == "dev"
|
|
49
49
|
Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
|
|
50
50
|
Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
|
|
51
51
|
Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
|
|
52
|
-
Requires-Dist: mkdocs-material ~= 9.6.
|
|
53
|
-
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"
|
|
54
54
|
Project-URL: Home, https://gitlab.com/panoramax/server/api
|
|
55
55
|
Project-URL: Source Code, https://gitlab.com/panoramax/server/api
|
|
56
56
|
Provides-Extra: build
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# This docker compose is the one to use if you want to run the blurring API.
|
|
2
|
+
# It should be quite close to the one defined by https://github.com/cquest/sgblur.
|
|
3
|
+
# ----
|
|
4
|
+
# This docker-compose needs to be used alongside a docker containing geovisio API
|
|
5
|
+
# For instance with docker-compose-full.yml
|
|
6
|
+
# docker compose -f docker/docker-compose-full.yml -f docker/docker-compose-blurring.yml up
|
|
7
|
+
services:
|
|
8
|
+
blur:
|
|
9
|
+
# The blurring API, that calls the detection API and blurs the picture using the detected objects.
|
|
10
|
+
# This does not require a GPU, but is CPU-bound.
|
|
11
|
+
build: .
|
|
12
|
+
image: panoramax/sgblur:${BLUR_IMAGE_TAG:-latest}
|
|
13
|
+
environment:
|
|
14
|
+
WEB_CONCURRENCY: "8" # Number of workers for the API, you can adjust this depending on your available CPU ressources.
|
|
15
|
+
DETECT_URL: "http://detect:8001"
|
|
16
|
+
restart: unless-stopped
|
|
17
|
+
depends_on:
|
|
18
|
+
detect:
|
|
19
|
+
condition: service_healthy
|
|
20
|
+
ports:
|
|
21
|
+
- 8000
|
|
22
|
+
networks:
|
|
23
|
+
blur: {}
|
|
24
|
+
|
|
25
|
+
detect:
|
|
26
|
+
# This service is the one responsible for running the detection model.
|
|
27
|
+
# It is GPU-bound
|
|
28
|
+
build: .
|
|
29
|
+
image: panoramax/sgblur:${BLUR_IMAGE_TAG:-latest}
|
|
30
|
+
entrypoint: ["uvicorn", "src.detect.detect_api:app", "--host", "0.0.0.0", "--port", "8001"]
|
|
31
|
+
#environment:
|
|
32
|
+
#MODEL_NAME: # specify a model if needed, else the one fitting the most the available GPU will be used
|
|
33
|
+
deploy:
|
|
34
|
+
resources:
|
|
35
|
+
reservations:
|
|
36
|
+
devices:
|
|
37
|
+
- driver: nvidia # We only support Nvidia card right now
|
|
38
|
+
count: all
|
|
39
|
+
capabilities: [gpu]
|
|
40
|
+
|
|
41
|
+
restart: unless-stopped
|
|
42
|
+
healthcheck:
|
|
43
|
+
test: python -c "import requests; requests.get('http://localhost:8001/').raise_for_status()"
|
|
44
|
+
interval: 4s
|
|
45
|
+
timeout: 5s
|
|
46
|
+
retries: 10
|
|
47
|
+
start_period: 1s
|
|
48
|
+
ports:
|
|
49
|
+
- 8001
|
|
50
|
+
networks:
|
|
51
|
+
blur: {}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# Add a configuration to the API/workers to tell them the location of the blurring API
|
|
55
|
+
api:
|
|
56
|
+
environment:
|
|
57
|
+
API_BLUR_URL: http://blur:8000
|
|
58
|
+
|
|
59
|
+
background-worker:
|
|
60
|
+
environment:
|
|
61
|
+
API_BLUR_URL: http://blur:8000
|
|
62
|
+
depends_on:
|
|
63
|
+
blur:
|
|
64
|
+
condition: service_healthy
|
|
65
|
+
networks:
|
|
66
|
+
blur: {}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
networks:
|
|
70
|
+
blur: {}
|
|
@@ -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
|
|
@@ -100,9 +100,14 @@ services:
|
|
|
100
100
|
API_FORCE_AUTH_ON_UPLOAD: True
|
|
101
101
|
API_PICTURES_LICENSE_SPDX_ID: CC-BY-SA-4.0 # default pictures's license, change it if needed
|
|
102
102
|
API_PICTURES_LICENSE_URL: https://spdx.org/licenses/CC-BY-SA-4.0.html
|
|
103
|
-
API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
|
|
103
|
+
API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
|
|
104
104
|
API_DERIVATES_PICTURES_PUBLIC_URL: /derivates
|
|
105
105
|
API_PERMANENT_PICTURES_PUBLIC_URL: /permanent
|
|
106
|
+
PICTURE_PROCESS_THREADS_LIMIT: 0
|
|
107
|
+
PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
|
|
108
|
+
FS_URL: /data/geovisio
|
|
109
|
+
NB_API_THREADS: 10
|
|
110
|
+
INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
|
|
106
111
|
# API SUMMARY regroup many metadata about the instance
|
|
107
112
|
# check the documentation on how translations are handled: https://docs.panoramax.fr/api/install/settings/#metadata
|
|
108
113
|
API_SUMMARY: >-
|
|
@@ -115,11 +120,6 @@ services:
|
|
|
115
120
|
"geo_coverage": {"en": "Anywhere you like", "fr": "Partout où le vent vous portera"}
|
|
116
121
|
}
|
|
117
122
|
API_REGISTRATION_IS_OPEN: True # True if the instance is open to registration, False if not, it is only used in the federation for the moment
|
|
118
|
-
PICTURE_PROCESS_THREADS_LIMIT: 0
|
|
119
|
-
PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
|
|
120
|
-
FS_URL: /data/geovisio
|
|
121
|
-
NB_API_THREADS: 10
|
|
122
|
-
INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
|
|
123
123
|
ports:
|
|
124
124
|
- 5000
|
|
125
125
|
volumes:
|
|
@@ -133,9 +133,10 @@ services:
|
|
|
133
133
|
networks:
|
|
134
134
|
db: {}
|
|
135
135
|
geovisio: {}
|
|
136
|
+
restart: always
|
|
136
137
|
|
|
137
138
|
website:
|
|
138
|
-
image: panoramax/website
|
|
139
|
+
image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
|
|
139
140
|
environment:
|
|
140
141
|
# documentation for configuration: https://docs.panoramax.fr/website/03_Settings/
|
|
141
142
|
VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
|
|
@@ -152,6 +153,7 @@ services:
|
|
|
152
153
|
- 3000
|
|
153
154
|
networks:
|
|
154
155
|
geovisio: {}
|
|
156
|
+
restart: always
|
|
155
157
|
|
|
156
158
|
# Background workers used to process pictures in the background
|
|
157
159
|
# calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
|
|
@@ -210,12 +212,13 @@ services:
|
|
|
210
212
|
start_period: 5s
|
|
211
213
|
image: postgis/postgis:16-3.4
|
|
212
214
|
ports:
|
|
213
|
-
-
|
|
215
|
+
- 5432
|
|
214
216
|
volumes:
|
|
215
217
|
- postgres_data:/var/lib/postgresql/data/
|
|
216
218
|
- ./1-init-keycloak-db.sh:/docker-entrypoint-initdb.d/1-init-keycloak-db.sh
|
|
217
219
|
networks:
|
|
218
220
|
db: {}
|
|
221
|
+
restart: always
|
|
219
222
|
|
|
220
223
|
volumes:
|
|
221
224
|
postgres_data:
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# The name of your instance which will appear in the top left of the website
|
|
2
|
+
INSTANCE_NAME=
|
|
3
|
+
|
|
1
4
|
# URL of your own domain (without a scheme or a path, just the domain)
|
|
2
5
|
DOMAIN=
|
|
3
6
|
|
|
@@ -33,5 +36,5 @@ PG_PASSWORD=
|
|
|
33
36
|
# This parameter is used so that geovisio can trust the `X-Forwarded-` headers for URL generation (more details in the [Flask documentation](https://flask.palletsprojects.com/en/2.2.x/deploying/proxy_fix/)).
|
|
34
37
|
# INFRA_NB_PROXIES=2
|
|
35
38
|
|
|
36
|
-
#
|
|
37
|
-
|
|
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;
|
|
@@ -44,8 +44,8 @@ services:
|
|
|
44
44
|
API_FORCE_AUTH_ON_UPLOAD: True
|
|
45
45
|
API_PICTURES_LICENSE_SPDX_ID: CC-BY-SA-4.0 # default pictures's license, change it if needed
|
|
46
46
|
API_PICTURES_LICENSE_URL: https://spdx.org/licenses/CC-BY-SA-4.0.html
|
|
47
|
-
API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
|
|
48
|
-
API_DERIVATES_PICTURES_PUBLIC_URL: /
|
|
47
|
+
API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
|
|
48
|
+
API_DERIVATES_PICTURES_PUBLIC_URL: /derivatives
|
|
49
49
|
API_PERMANENT_PICTURES_PUBLIC_URL: /permanent
|
|
50
50
|
PICTURE_PROCESS_THREADS_LIMIT: 0
|
|
51
51
|
PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
|
|
@@ -80,7 +80,7 @@ services:
|
|
|
80
80
|
restart: always
|
|
81
81
|
|
|
82
82
|
website:
|
|
83
|
-
image: panoramax/website
|
|
83
|
+
image: panoramax/website:${GEOVISIO_IMAGE_TAG:-latest}
|
|
84
84
|
environment:
|
|
85
85
|
VITE_INSTANCE_NAME: ${INSTANCE_NAME:-A geovisio instance}
|
|
86
86
|
VITE_API_URL: /
|
|
@@ -97,7 +97,11 @@ services:
|
|
|
97
97
|
networks:
|
|
98
98
|
geovisio: {}
|
|
99
99
|
restart: always
|
|
100
|
-
|
|
100
|
+
|
|
101
|
+
# Background workers used to process pictures in the background
|
|
102
|
+
# calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
|
|
103
|
+
# Several background workers can run together
|
|
104
|
+
# Note: the blurring is configured to be done using the OSM-FR service, you can change the variable `API_BLUR_URL` if needed (in the API too).
|
|
101
105
|
background-worker:
|
|
102
106
|
<<: *geovisio-default
|
|
103
107
|
command: picture-worker
|
|
@@ -111,7 +115,7 @@ services:
|
|
|
111
115
|
PICTURE_PROCESS_DERIVATES_STRATEGY: PREPROCESS
|
|
112
116
|
DB_URL: postgres://gvs:${PG_PASSWORD}@db/geovisio
|
|
113
117
|
FS_URL: /data/geovisio
|
|
114
|
-
API_BLUR_URL: https://blur.panoramax.openstreetmap.fr
|
|
118
|
+
API_BLUR_URL: ${BLUR_API:-https://blur.panoramax.openstreetmap.fr}
|
|
115
119
|
|
|
116
120
|
deploy:
|
|
117
121
|
mode: replicated
|
|
@@ -149,7 +153,7 @@ services:
|
|
|
149
153
|
start_period: 5s
|
|
150
154
|
image: postgis/postgis:16-3.4
|
|
151
155
|
ports:
|
|
152
|
-
-
|
|
156
|
+
- 5432
|
|
153
157
|
volumes:
|
|
154
158
|
- postgres_data:/var/lib/postgresql/data/
|
|
155
159
|
networks:
|
|
@@ -6,8 +6,8 @@ OAUTH_CLIENT_ID=
|
|
|
6
6
|
# Secret of the OSM OAuth2 client
|
|
7
7
|
OAUTH_CLIENT_SECRET=
|
|
8
8
|
|
|
9
|
-
# [Flask's secret key](https://flask.palletsprojects.com/en/3.0.x/config/#SECRET_KEY).
|
|
10
|
-
# A secret key used among other things for securely signing the session cookie.
|
|
9
|
+
# [Flask's secret key](https://flask.palletsprojects.com/en/3.0.x/config/#SECRET_KEY).
|
|
10
|
+
# A secret key used among other things for securely signing the session cookie.
|
|
11
11
|
# For production should be provided with a long random string as stated in flask's documentation.
|
|
12
12
|
FLASK_SECRET_KEY=
|
|
13
13
|
|
|
@@ -21,7 +21,7 @@ FLASK_SESSION_COOKIE_DOMAIN=
|
|
|
21
21
|
# Note that this directory must have been created beforehand
|
|
22
22
|
# PICTURES_DIR=./pictures_storage
|
|
23
23
|
|
|
24
|
-
# Number of pictures, workers, depend on how many pictures you want to process at the same time.
|
|
24
|
+
# Number of pictures, workers, depend on how many pictures you want to process at the same time.
|
|
25
25
|
# PICTURE_WORKERS_REPLICATS=5
|
|
26
26
|
|
|
27
27
|
# Tag of the geovisio image to use, if you want to use a custom one. You can use `develop` if you want to live on the edge.
|
|
@@ -31,3 +31,6 @@ FLASK_SESSION_COOKIE_DOMAIN=
|
|
|
31
31
|
# Set it to 2 if you run a reverse proxy bedore the docker compose (like to handle TLS).
|
|
32
32
|
# This parameter is used so that geovisio can trust the `X-Forwarded-` headers for URL generation (more details in the [Flask documentation](https://flask.palletsprojects.com/en/2.2.x/deploying/proxy_fix/)).
|
|
33
33
|
# INFRA_NB_PROXIES=1
|
|
34
|
+
|
|
35
|
+
# Change this if you have your own blur API instance
|
|
36
|
+
BLUR_API=https://blur.panoramax.openstreetmap.fr
|
|
@@ -18,7 +18,7 @@ http {
|
|
|
18
18
|
server {
|
|
19
19
|
listen 8080;
|
|
20
20
|
|
|
21
|
-
# We need to set
|
|
21
|
+
# We need to set X-Forwarded headers, so the API can use them to make nice internal links
|
|
22
22
|
proxy_set_header X-Real-IP $remote_addr;
|
|
23
23
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
24
24
|
|
|
@@ -33,7 +33,7 @@ http {
|
|
|
33
33
|
proxy_read_timeout 120s;
|
|
34
34
|
proxy_send_timeout 120s;
|
|
35
35
|
|
|
36
|
-
# Note: you might want to some cache on some heavily used routes, likes high level zoom on /api/map
|
|
36
|
+
# Note: you might want to add some cache on some heavily used routes, likes high level zoom on /api/map
|
|
37
37
|
location /api {
|
|
38
38
|
proxy_pass http://api;
|
|
39
39
|
proxy_redirect default;
|
|
@@ -51,7 +51,7 @@ http {
|
|
|
51
51
|
|
|
52
52
|
# we ask nginx to do a proxy to the pictures, so that they can be served directly, without going through the API
|
|
53
53
|
# we use a trick to convert the picture's uuid to it's path in the storage
|
|
54
|
-
rewrite ^/(permanent|derivates)/([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])-(.*)$ /$1/$2/$3/$4/$5/$6 last;
|
|
54
|
+
rewrite ^/(permanent|derivates|derivatives)/([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])-(.*)$ /$1/$2/$3/$4/$5/$6 last;
|
|
55
55
|
|
|
56
56
|
gzip on;
|
|
57
57
|
gzip_types text/plain application/xml image/svg+xml text/css text/javascript text/xml application/json application/javascript;
|
|
@@ -68,8 +68,11 @@ http {
|
|
|
68
68
|
root /data/geovisio;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
location /derivatives/ {
|
|
72
|
+
alias /data/geovisio/derivates/;
|
|
73
|
+
add_header 'Access-Control-Allow-Origin' '*';
|
|
74
|
+
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
|
|
75
|
+
}
|
|
76
|
+
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|