geovisio 2.10.0__tar.gz → 2.12.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 → geovisio-2.12.0}/.dockerignore +3 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/.gitignore +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/.gitlab-ci.yml +16 -9
- geovisio-2.12.0/.pre-commit-config.yaml +12 -0
- geovisio-2.12.0/.python-version +1 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/CHANGELOG.md +55 -5
- {geovisio-2.10.0 → geovisio-2.12.0}/Dockerfile +3 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/PKG-INFO +8 -27
- geovisio-2.12.0/bin/run_production_api.sh +5 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-compose-full.yml +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-entrypoint.sh +3 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/docker-compose.yml +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/nginx.conf +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-osm-auth/docker-compose.yml +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-osm-auth/nginx.conf +1 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/api/api.md +50 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/api/open_api.json +676 -58
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/dev/STAC_compatibility.md +34 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/dev/develop_server.md +42 -21
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/cli.md +85 -31
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/database_setup.md +16 -12
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/deep_dive/external_Identity_Providers.md +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/deep_dive/pictures_processing.md +8 -0
- geovisio-2.12.0/docs/install/deep_dive/semantics.md +166 -0
- geovisio-2.12.0/docs/install/deep_dive/visibility.md +27 -0
- geovisio-2.12.0/docs/install/index.md +13 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/install.md +28 -7
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/running.md +46 -20
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/settings.md +61 -11
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/tutorials/running_docker_keycloak.md +17 -8
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/tutorials/running_docker_osm_auth.md +16 -3
- geovisio-2.12.0/docs/install/update.md +8 -0
- geovisio-2.12.0/example.env +107 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/__init__.py +32 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/db.py +1 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/user.py +7 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/config_app.py +21 -7
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/db_migrations.py +2 -2
- geovisio-2.12.0/geovisio/migrations/20221201_02_ZG8AR-camera-information.rollback.sql +5 -0
- geovisio-2.12.0/geovisio/migrations/20221201_02_ZG8AR-camera-information.sql +10 -0
- geovisio-2.12.0/geovisio/migrations/20250902_01_k5UTq-visibility-status.rollback.sql +11 -0
- geovisio-2.12.0/geovisio/migrations/20250902_01_k5UTq-visibility-status.sql +19 -0
- geovisio-2.12.0/geovisio/migrations/20250904_01_3uVKX-visibility-functions.rollback.sql +20 -0
- geovisio-2.12.0/geovisio/migrations/20250904_01_3uVKX-visibility-functions.sql +43 -0
- geovisio-2.12.0/geovisio/migrations/20251110_01_bWEXo-report-visibility.rollback.sql +30 -0
- geovisio-2.12.0/geovisio/migrations/20251110_01_bWEXo-report-visibility.sql +30 -0
- geovisio-2.12.0/geovisio/migrations/20251124_01_0xdqi-page-updates.rollback.sql +6 -0
- geovisio-2.12.0/geovisio/migrations/20251124_01_0xdqi-page-updates.sql +8 -0
- geovisio-2.12.0/geovisio/migrations/20251127_01_S6Ci8-pictures-grid-visibility.rollback.sql +24 -0
- geovisio-2.12.0/geovisio/migrations/20251127_01_S6Ci8-pictures-grid-visibility.sql +36 -0
- geovisio-2.12.0/geovisio/migrations/20251202_01_Q3g59-pictures-grid-logged-only.rollback.sql +32 -0
- geovisio-2.12.0/geovisio/migrations/20251202_01_Q3g59-pictures-grid-logged-only.sql +34 -0
- geovisio-2.12.0/geovisio/templates/main.html +42 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/templates/viewer.html +8 -15
- geovisio-2.12.0/geovisio/translations/be/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.12.0/geovisio/translations/be/LC_MESSAGES/messages.po +886 -0
- {geovisio-2.10.0/geovisio/translations/oc → geovisio-2.12.0/geovisio/translations/cy}/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/messages.pot → geovisio-2.12.0/geovisio/translations/cy/LC_MESSAGES/messages.po +162 -142
- geovisio-2.12.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/da/LC_MESSAGES/messages.po +96 -5
- geovisio-2.12.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/de/LC_MESSAGES/messages.po +171 -132
- geovisio-2.12.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/en/LC_MESSAGES/messages.po +211 -182
- geovisio-2.12.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/eo/LC_MESSAGES/messages.po +3 -2
- geovisio-2.12.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/fr/LC_MESSAGES/messages.po +3 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/it/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/it/LC_MESSAGES/messages.po +1 -1
- geovisio-2.12.0/geovisio/translations/messages.pot +821 -0
- geovisio-2.12.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/nl/LC_MESSAGES/messages.po +44 -2
- geovisio-2.12.0/geovisio/translations/oc/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/oc/LC_MESSAGES/messages.po +9 -6
- geovisio-2.12.0/geovisio/translations/pt/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.12.0/geovisio/translations/pt/LC_MESSAGES/messages.po +944 -0
- geovisio-2.12.0/geovisio/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.12.0/geovisio/translations/pt_BR/LC_MESSAGES/messages.po +942 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/sv/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/sv/LC_MESSAGES/messages.po +1 -1
- geovisio-2.12.0/geovisio/translations/tr/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.12.0/geovisio/translations/tr/LC_MESSAGES/messages.po +927 -0
- geovisio-2.12.0/geovisio/translations/uk/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.12.0/geovisio/translations/uk/LC_MESSAGES/messages.po +920 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/annotations.py +7 -4
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/auth.py +33 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/cql2.py +42 -20
- geovisio-2.12.0/geovisio/utils/link.py +25 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/pictures.py +16 -18
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/sequences.py +104 -75
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/upload_set.py +62 -12
- geovisio-2.12.0/geovisio/utils/users.py +18 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/annotations.py +96 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/collections.py +249 -116
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/configuration.py +12 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/docs.py +18 -4
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/items.py +183 -76
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/map.py +92 -54
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/pages.py +48 -4
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/params.py +56 -11
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/pictures.py +3 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/prepare.py +4 -2
- geovisio-2.12.0/geovisio/web/queryables.py +57 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/stac.py +8 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/upload_set.py +82 -26
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/users.py +86 -5
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/utils.py +24 -6
- geovisio-2.12.0/images/favicon.ico +0 -0
- geovisio-2.12.0/images/favicon.svg +199 -0
- geovisio-2.12.0/images/logo.png +0 -0
- geovisio-2.12.0/images/logo.svg +187 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/mkdocs.yml +15 -11
- {geovisio-2.10.0 → geovisio-2.12.0}/pyproject.toml +18 -15
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/conftest.py +111 -68
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/test_many_semantics.py +9 -8
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/test_many_sequences.py +3 -3
- geovisio-2.12.0/tests/fixed_data/test_visibility.py +474 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/test_web_collections_one_collection.py +15 -11
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/test_auth.py +12 -2
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_annotations.py +5 -5
- geovisio-2.12.0/tests/test_utils_users.py +99 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_annotation.py +113 -3
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_collections.py +261 -81
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_configuration.py +16 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_items.py +257 -69
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_map.py +348 -39
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_pages.py +20 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_prepare.py +15 -14
- geovisio-2.12.0/tests/test_web_queryables.py +44 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_reports.py +52 -6
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_upload_set.py +297 -25
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_users.py +188 -8
- geovisio-2.12.0/uv.lock +3065 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/yoyo.ini +1 -1
- geovisio-2.10.0/.pre-commit-config.yaml +0 -5
- geovisio-2.10.0/bin/post_compile +0 -5
- geovisio-2.10.0/bin/run_production_api.sh +0 -11
- geovisio-2.10.0/docs/install/update.md +0 -8
- geovisio-2.10.0/geovisio/templates/main.html +0 -93
- geovisio-2.10.0/geovisio/translations/da/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/eo/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.10.0/geovisio/utils/link.py +0 -15
- geovisio-2.10.0/images/big_picture.png +0 -0
- geovisio-2.10.0/images/big_picture.svg +0 -436
- geovisio-2.10.0/images/favicon.ico +0 -0
- geovisio-2.10.0/images/favicon.svg +0 -82
- geovisio-2.10.0/images/logo.png +0 -0
- geovisio-2.10.0/images/logo.svg +0 -156
- geovisio-2.10.0/images/logo_full.png +0 -0
- geovisio-2.10.0/images/logo_full.svg +0 -191
- geovisio-2.10.0/migrations/20221201_02_ZG8AR-camera-information.py +0 -49
- geovisio-2.10.0/migrations/data/readme.md +0 -7
- geovisio-2.10.0/migrations/data/sensor_data.json +0 -3711
- geovisio-2.10.0/runtime.txt +0 -1
- {geovisio-2.10.0 → geovisio-2.12.0}/.flaskenv +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/CODE_OF_CONDUCT.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/LICENSE +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/Makefile +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/Procfile +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/README.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/babel.cfg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-compose-blurring.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-compose-full-linux.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-compose-keycloak.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/docker-compose-minio.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/env.example +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-keycloak-auth/robots.txt +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-osm-auth/env.example +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/full-osm-auth/robots.txt +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker/keycloak-realm.json +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docker-compose.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/api/openapi.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/dev/releases.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/images/geovisio-architecture-simple.png +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/images/geovisio_authentication_flow.svg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/index.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/deep_dive/blur_api.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/deep_dive/excluded_areas.md +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/docs/install/tutorials/osm_oauth_client.png +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/cleanup.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/default_account_tokens.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/reorder_sequences.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/admin_cli/sequence_heading.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/errors.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230324_01_ba9WA-status.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240409_01_jnhra-pictures-grid.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240507_02_dzVET-picture-grid-public.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_DOqmf-reports.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20240912_01_dAALm-account-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241004_01_d1zfe-pictures-grid-360.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241011_01_e1j5C-pic-quality.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_GuOjF-pic-quality-update.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241017_01_RiFlm-pictures-to-delete.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241104_01_yhRVu-rejection-details.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241128_01_ugthx-job-queue-args.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241128_01_ugthx-job-queue-args.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20241224_01_xuN6n-delete-upload-set-on-last-picture-trg-statement.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250102_01_EElhA-rm-cameras.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250102_01_EElhA-rm-cameras.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250107_01_EQN9v-tags-tables.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250107_01_EQN9v-tags-tables.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250109_01_4OOP4-pages.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250109_01_4OOP4-pages.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250114_01_ABaaL-collaborative-metadata-editing.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250123_01_Ececu-tos-acceptance.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250123_01_Ececu-tos-acceptance.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250206_01_PjrEL-annotation-semantics.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250206_01_PjrEL-annotation-semantics.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250306_01_58oju-semantics-views.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250306_01_58oju-semantics-views.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250318_01_pANl1-semantics-functions.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250318_01_pANl1-semantics-functions.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250331_01_kRKjo-store-detections-id.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250331_01_kRKjo-store-detections-id.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250424_01_RBGXC-semantics-indexes.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250424_01_RBGXC-semantics-indexes.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250502_01_ZNmkU-job-task-read-metadata.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250502_01_ZNmkU-job-task-read-metadata.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_kMatW-deactivate-upload-set-split-dedup.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_s3hYk-semantic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250509_01_s3hYk-semantic-delete-cascade.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250513_01_8WkZC-upload-sets-default-config.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250513_01_8WkZC-upload-sets-default-config.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250523_01_b11eW-picture-update-index.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250523_01_b11eW-picture-update-index.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250523_02_5ZXXh-update-picture-updated-at.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250523_02_5ZXXh-update-picture-updated-at.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250624_01_SETp6-job-warnings.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250624_01_SETp6-job-warnings.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250701_01_kr371-upload-set-semantics.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250701_01_kr371-upload-set-semantics.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250703_01_p2WVV-sequence-upload-set-link.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250703_01_p2WVV-sequence-upload-set-link.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250703_02_q0s3D-sequence-upload-set-fill.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250703_02_q0s3D-sequence-upload-set-fill.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250716_01_f8tcJ-check-empty-annotation-late.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250716_01_f8tcJ-check-empty-annotation-late.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250728_01_2zgur-upload-set-relative-heading.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250728_01_2zgur-upload-set-relative-heading.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.rollback.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0/geovisio}/migrations/20250825_01_nCgkN-file-deletion-after-delete-no-dup.sql +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ar/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ar/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/br/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/br/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/el/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/es/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/fi/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/hu/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ja/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ko/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/pl/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/pl/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ti/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/ti/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/translations/zh_Hant/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/db.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/excluded_areas.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/extent.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/fields.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/filesystems.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/items.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/loggers.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/model_query.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/params.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/pic_shape.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/reports.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/semantics.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/sentry.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/tags.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/time.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/tokens.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/utils/website.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/auth.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/excluded_areas.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/reports.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/rss.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/web/tokens.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/workers/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/geovisio/workers/runner_pictures.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/images/sponsors.png +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/1.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/1_blurred.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/2.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/3.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/4.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/5.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/b1.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/b2.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/c1.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/crop.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/d1.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e1.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e1_artist.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e1_without_exif.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e2.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e3.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e4.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/e5.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/focal_zero.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/invalid_exif.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/data/xpcomment.jpg +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/conftest.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/test_api_conformance.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/fixed_data/test_many_sequences_different_insertion_date.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/__init__.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/conftest.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/docker-compose-auth-test.yml +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/test_s3.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/integration/test_tokens.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_admin_cli_cleanup.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_db_migrations.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_factory.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_model_query.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_auth.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_cql2.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_filesystems.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_items.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_pictures.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_reports.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_semantics.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_sequences.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_tags.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_utils_upload_set.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_excluded_areas.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_params.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_pictures.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_web_stac.py +0 -0
- {geovisio-2.10.0 → geovisio-2.12.0}/tests/test_workers_runner_pictures.py +0 -0
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
!/geovisio/**/*.pot
|
|
12
12
|
!/docker/docker-entrypoint.sh
|
|
13
13
|
!/images/*
|
|
14
|
-
!/migrations/*.sql
|
|
15
|
-
!/migrations/*.py
|
|
16
|
-
!/migrations/data/*.json
|
|
14
|
+
!/geovisio/migrations/*.sql
|
|
15
|
+
!/geovisio/migrations/*.py
|
|
16
|
+
!/geovisio/migrations/data/*.json
|
|
17
17
|
|
|
18
18
|
/**/__pycache__
|
|
@@ -19,9 +19,9 @@ code-fmt:
|
|
|
19
19
|
stage: test
|
|
20
20
|
only:
|
|
21
21
|
- merge_requests
|
|
22
|
-
image: python:3.
|
|
22
|
+
image: python:3.13-alpine
|
|
23
23
|
script:
|
|
24
|
-
- pip install
|
|
24
|
+
- pip install --group format
|
|
25
25
|
- black --fast --check .
|
|
26
26
|
|
|
27
27
|
test-in-docker:
|
|
@@ -67,7 +67,7 @@ test-in-docker:
|
|
|
67
67
|
--network=host
|
|
68
68
|
--volume ./tests:/opt/geovisio/tests
|
|
69
69
|
$TMP_CI_IMAGE
|
|
70
|
-
-c 'pip install -e .
|
|
70
|
+
-c 'pip install --upgrade pip && pip install -e . --group dev && /home/geovisio/.local/bin/pytest -m "not skipci"'
|
|
71
71
|
after_script:
|
|
72
72
|
- docker rmi $TMP_CI_IMAGE || true # accept failure, as image creation can fail
|
|
73
73
|
|
|
@@ -79,7 +79,7 @@ test:
|
|
|
79
79
|
- when: on_success
|
|
80
80
|
|
|
81
81
|
stage: test
|
|
82
|
-
image: python:3.
|
|
82
|
+
image: python:3.13
|
|
83
83
|
services:
|
|
84
84
|
- postgis/postgis:15-3.4
|
|
85
85
|
variables:
|
|
@@ -95,10 +95,17 @@ test:
|
|
|
95
95
|
script:
|
|
96
96
|
- apt update && apt install -y gettext
|
|
97
97
|
- mkdir -p /tmp/geovisio_test/tmp /tmp/geovisio_test/derivates /tmp/geovisio_test/permanent
|
|
98
|
-
- pip install -e .
|
|
98
|
+
- pip install -e . --group dev
|
|
99
99
|
- make i18n-po2code
|
|
100
100
|
- pytest -vv -m "not skipci"
|
|
101
101
|
|
|
102
|
+
dependencies-lock:
|
|
103
|
+
stage: test
|
|
104
|
+
image: ghcr.io/astral-sh/uv:0.9.2-python3.11-bookworm-slim
|
|
105
|
+
script:
|
|
106
|
+
# enforce that the lock file is up to date.
|
|
107
|
+
# Updating this lock file is important to ensure the production servers will use the right versions
|
|
108
|
+
- uv lock --check
|
|
102
109
|
|
|
103
110
|
publish-develop:
|
|
104
111
|
rules:
|
|
@@ -142,7 +149,7 @@ publish-develop:
|
|
|
142
149
|
--network=host
|
|
143
150
|
--volume ./tests:/opt/geovisio/tests
|
|
144
151
|
"$DOCKER_IMAGE_NAME:develop"
|
|
145
|
-
-c 'pip install -e .
|
|
152
|
+
-c 'pip install --upgrade pip && pip install -e . --group dev && /home/geovisio/.local/bin/pytest -vv -m "not skipci"'
|
|
146
153
|
|
|
147
154
|
# publish image to dockerhub with the develop tag
|
|
148
155
|
- docker push "$DOCKER_IMAGE_NAME:develop"
|
|
@@ -188,7 +195,7 @@ publish-tag-and-latest:
|
|
|
188
195
|
--network=host
|
|
189
196
|
--volume ./tests:/opt/geovisio/tests
|
|
190
197
|
"$DOCKER_IMAGE_NAME:latest"
|
|
191
|
-
-c 'pip install -e .
|
|
198
|
+
-c 'pip install --upgrade pip && pip install -e . --group dev && ~/.local/bin/pytest -vv -m "not skipci"'
|
|
192
199
|
|
|
193
200
|
# publish image to dockerhub
|
|
194
201
|
- docker push $DOCKER_IMAGE_NAME:$CI_COMMIT_REF_NAME
|
|
@@ -198,9 +205,9 @@ publish-on-pypi:
|
|
|
198
205
|
only:
|
|
199
206
|
- tags
|
|
200
207
|
stage: deploy
|
|
201
|
-
image: python:3.
|
|
208
|
+
image: python:3.13
|
|
202
209
|
script:
|
|
203
210
|
- apt update && apt install -y gettext
|
|
204
|
-
- pip install
|
|
211
|
+
- pip install --group build
|
|
205
212
|
- make i18n-po2code
|
|
206
213
|
- flit publish # use [flit](https://flit.pypa.io/) and FLIT_USERNAME/FLIT_PASSWORD env var
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/psf/black
|
|
3
|
+
rev: 25.1.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: black
|
|
6
|
+
|
|
7
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
8
|
+
# ensure the uv.lock file is up to date, it's important to update it when a dependency is updated
|
|
9
|
+
# by running `uv lock`
|
|
10
|
+
rev: 0.9.2
|
|
11
|
+
hooks:
|
|
12
|
+
- id: uv-lock
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -9,6 +9,53 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [2.12.0] - 2025-02-04
|
|
13
|
+
|
|
14
|
+
⚠️ Breaking change to install development dependencies ⚠️
|
|
15
|
+
|
|
16
|
+
To install development dependencies, you need to run `pip install -e . --group dev` instead of `pip install -e .[dev]`.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Add HATEOAS links to show permissions on collections/items/upload_sets. See https://docs.panoramax.fr/backend/api/api/#permissions for more details.
|
|
21
|
+
- Add a `panoramax_backend` command to the Python package, as an alias to the `flask --app geovisio` command.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Fix bug on python3.13 where running a command could hang with logs like "couldn't stop thread 'pool-1-worker-0' within 5.0 seconds"
|
|
26
|
+
- Nearby picture (`related` link type) was not returned if picture heading was greater than current picture one.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- The `migrations` folder has now been moved to the root of the package, so it is available when installing the package using pypi.
|
|
31
|
+
- The default web pages are more up-to-date (viewer v4, Panoramax logos, links to docs.panoramax.fr)
|
|
32
|
+
- The python dependencies are now managed using [dependency groups](https://flit.pypa.io/en/latest/pyproject_toml.html#dependency-groups) instead of the `[project.optional-dependencies]` section. So you need to install the dependencies using `pip install -e . --group dev` instead of `pip install -e .[dev]`, and the `dev`/`format`/`docs`/`build` groups are available, but not part of the released package. This also means that `pip` minimal version is now `25.1` (only for development). Run `pip install --upgrade pip` to upgrade your pip version.
|
|
33
|
+
- Update dependencies to support Python 3.14 🥧
|
|
34
|
+
|
|
35
|
+
## [2.11.0] - 2025-12-12
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- A way to delete an annotation (via `DELETE /api/annotations/<uuid:annotationId>` or `DELETE /api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`). Anyone authenticated can delete an annotation (and the changes are tracked in the history).
|
|
40
|
+
- Added a new way to restrict who can view a sequence/picture, instead of the old `hidden` mechanism, we can now set a `visibility` field at the sequence/picture/upload_set level. This parameter can have (for the moment) the values:
|
|
41
|
+
- `anyone`: the sequence is visible to anyone
|
|
42
|
+
- `owner-only`: the sequence is visible to the owner and administrator only
|
|
43
|
+
- `logged-only`: the sequence is visible to logged users only
|
|
44
|
+
A default `visibility` can also be set at the `account` or instance level.
|
|
45
|
+
- Change the permissions, now an instance administrator (and account that has the `admin` role), can see, edit and delete all sequences and pictures.
|
|
46
|
+
- Display the collection semantics in the `/api/collections/<uuid:collectionId>/items` endpoint, to make it easier to be crawled by the metacatalog.
|
|
47
|
+
- Add a new search capability with the query `/api/search?filter=semantics IS NOT NULL` to search for all items with some semantics (be it linked to the picture, its sequence or an annotation in the picture).
|
|
48
|
+
- Add a way to know that the terms of service have been updated, and the users have read the latest changes.
|
|
49
|
+
- Add an admin cli command to delete all the pictures of a user (`user <ACCOUNT_ID_OR_NAME> --delete-data`).
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
- ⚠️ API breaking change ⚠️: we do not support anymore the `status` filter (and especially the `status='deleted'` filter) when querying the sequences, since it could leak information about some sequences with restricted visibility (since we treated those sequences as `deleted` to tell potential crawlers not to consider them anymore). This parameter is now replaced by a new `show_deleted` boolean parameter that makes the API return collections with only an `id` and a `deleted` status, without additional fields. Note that thus, when using this parameter, the response does no longer follow the STAC format for deleted collections.
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Use fully qualified path for the pictures_grid materialized view to avoid the `relation "pictures" does not exist` issue on some server.
|
|
58
|
+
|
|
12
59
|
## [2.10.0] - 2025-08-27
|
|
13
60
|
|
|
14
61
|
### Added
|
|
@@ -17,12 +64,13 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
17
64
|
- Add an `updated` field in all the items's responses.
|
|
18
65
|
- Add an `sortby` parameter in search to sort the results (and it can use the new `updated` field).
|
|
19
66
|
- 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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
67
|
+
- Added route aliases to get annotations.
|
|
68
|
+
- The route `/api/annotations/<uuid:annotationId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>/annotations/<uuid:annotationId>`
|
|
69
|
+
- The route `/api/picture/<uuid:pictureId>` is now an alias of `/api/collections/<uuid:collectionId>/items/<uuid:itemId>`
|
|
70
|
+
- 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
71
|
- 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
72
|
- 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.
|
|
73
|
+
- Add a `/api/queryables` route to list the queryables for search and `/api/collections/queryables` to list the queryables for collection search.
|
|
26
74
|
|
|
27
75
|
### Changed
|
|
28
76
|
|
|
@@ -678,7 +726,9 @@ FLASK_APP="src" flask process-sequences
|
|
|
678
726
|
- Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
|
|
679
727
|
- Dockerfile for easy server setup
|
|
680
728
|
|
|
681
|
-
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.
|
|
729
|
+
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.12.0...develop
|
|
730
|
+
[2.12.0]: https://gitlab.com/panoramax/server/api/-/compare/2.11.0...2.12.0
|
|
731
|
+
[2.11.0]: https://gitlab.com/panoramax/server/api/-/compare/2.10.0...2.11.0
|
|
682
732
|
[2.10.0]: https://gitlab.com/panoramax/server/api/-/compare/2.9.0...2.10.0
|
|
683
733
|
[2.9.0]: https://gitlab.com/panoramax/server/api/-/compare/2.8.1...2.9.0
|
|
684
734
|
[2.8.1]: https://gitlab.com/panoramax/server/api/-/compare/2.8.0...2.8.1
|
|
@@ -5,7 +5,7 @@ LABEL org.opencontainers.image.title="GeoVisio API"
|
|
|
5
5
|
LABEL org.opencontainers.image.description="Panoramax is a digital resource for sharing and using field photos. GeoVisio API is the backend part of the ecosystem."
|
|
6
6
|
LABEL org.opencontainers.image.authors="Adrien PAVIE <panieravide@riseup.net>"
|
|
7
7
|
LABEL org.opencontainers.image.source="https://gitlab.com/panoramax/server/api.git"
|
|
8
|
-
LABEL org.opencontainers.image.documentation="https://docs.panoramax.fr/
|
|
8
|
+
LABEL org.opencontainers.image.documentation="https://docs.panoramax.fr/backend/"
|
|
9
9
|
LABEL org.opencontainers.image.vendor="Panoramax"
|
|
10
10
|
LABEL org.opencontainers.image.licenses="MIT"
|
|
11
11
|
LABEL org.opencontainers.image.url="https://panoramax.fr/"
|
|
@@ -14,7 +14,7 @@ LABEL org.opencontainers.image.url="https://panoramax.fr/"
|
|
|
14
14
|
# and create a `geovisio` user, to run the app as non root user
|
|
15
15
|
RUN apt update \
|
|
16
16
|
&& apt install -y git gettext make \
|
|
17
|
-
&& pip install waitress
|
|
17
|
+
&& pip install waitress Babel \
|
|
18
18
|
&& rm -rf /var/lib/apt/lists/* \
|
|
19
19
|
&& mkdir -p /opt/geovisio /data/geovisio \
|
|
20
20
|
&& groupadd --gid 1000 geovisio \
|
|
@@ -33,7 +33,6 @@ RUN pip install -e . --user
|
|
|
33
33
|
COPY ./images ./images/
|
|
34
34
|
COPY ./docker/docker-entrypoint.sh ./
|
|
35
35
|
COPY ./geovisio ./geovisio
|
|
36
|
-
COPY ./migrations ./migrations
|
|
37
36
|
COPY ./Makefile ./
|
|
38
37
|
|
|
39
38
|
# Generate i18n compiled files
|
|
@@ -46,6 +45,7 @@ ARG GIT_DESCRIBE
|
|
|
46
45
|
LABEL org.opencontainers.image.revision=$GIT_DESCRIBE
|
|
47
46
|
|
|
48
47
|
# Environment variables
|
|
48
|
+
ENV PATH="~/.local/bin/:$PATH"
|
|
49
49
|
ENV FLASK_APP=geovisio
|
|
50
50
|
ENV FS_URL="/data/geovisio"
|
|
51
51
|
ENV API_GIT_VERSION=$GIT_DESCRIBE
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geovisio
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.12.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 ~= 3.1
|
|
11
|
-
Requires-Dist: psycopg[pool] ~= 3.
|
|
10
|
+
Requires-Dist: Flask ~= 3.1.2
|
|
11
|
+
Requires-Dist: psycopg[pool] ~= 3.3
|
|
12
12
|
Requires-Dist: flasgger ~= 0.9.7
|
|
13
13
|
Requires-Dist: Pillow ~= 11.1
|
|
14
14
|
Requires-Dist: Flask-Cors ~= 6.0
|
|
@@ -17,45 +17,26 @@ Requires-Dist: fs-s3fs-forked ~= 1.1.4
|
|
|
17
17
|
Requires-Dist: flask-compress ~= 1.14
|
|
18
18
|
Requires-Dist: requests ~= 2.31
|
|
19
19
|
Requires-Dist: yoyo-migrations ~= 9.0
|
|
20
|
-
Requires-Dist: psycopg-binary ~= 3.
|
|
21
|
-
Requires-Dist: python-dotenv ~= 1.
|
|
20
|
+
Requires-Dist: psycopg-binary ~= 3.3
|
|
21
|
+
Requires-Dist: python-dotenv ~= 1.2
|
|
22
22
|
Requires-Dist: authlib ~= 1.6
|
|
23
23
|
Requires-Dist: Flask-Executor ~= 1.0
|
|
24
|
-
Requires-Dist: geopic-tag-reader[write-exif] ~= 1.8.
|
|
24
|
+
Requires-Dist: geopic-tag-reader[write-exif] ~= 1.8.2
|
|
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
|
|
28
28
|
Requires-Dist: python-dateutil ~= 2.9.0
|
|
29
29
|
Requires-Dist: tzdata ~= 2025.2
|
|
30
30
|
Requires-Dist: croniter ~= 6.0.0
|
|
31
|
-
Requires-Dist: pydantic ~= 2.
|
|
31
|
+
Requires-Dist: pydantic ~= 2.12
|
|
32
32
|
Requires-Dist: pydantic-extra-types ~= 2.7
|
|
33
33
|
Requires-Dist: flask-babel ~= 4.0.0
|
|
34
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
|
-
Requires-Dist:
|
|
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
|
-
Requires-Dist: pystac ~= 1.9 ; extra == "dev"
|
|
42
|
-
Requires-Dist: pytest ~= 8.4 ; extra == "dev"
|
|
43
|
-
Requires-Dist: pytest-datafiles ~= 3.0 ; extra == "dev"
|
|
44
|
-
Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
|
|
45
|
-
Requires-Dist: testcontainers ~= 4.10 ; extra == "dev"
|
|
46
|
-
Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
|
|
47
|
-
Requires-Dist: black ~= 25.1 ; extra == "dev"
|
|
48
|
-
Requires-Dist: pre-commit ~= 4.2 ; extra == "dev"
|
|
49
|
-
Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
|
|
50
|
-
Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
|
|
51
|
-
Requires-Dist: stac-api-validator ~= 0.6.4 ; extra == "dev"
|
|
52
|
-
Requires-Dist: mkdocs-material ~= 9.6.14 ; extra == "docs"
|
|
53
|
-
Requires-Dist: mkdocs-swagger-ui-tag ~= 0.7.1 ; extra == "docs"
|
|
37
|
+
Requires-Dist: gunicorn ~= 23.0.0
|
|
54
38
|
Project-URL: Home, https://gitlab.com/panoramax/server/api
|
|
55
39
|
Project-URL: Source Code, https://gitlab.com/panoramax/server/api
|
|
56
|
-
Provides-Extra: build
|
|
57
|
-
Provides-Extra: dev
|
|
58
|
-
Provides-Extra: docs
|
|
59
40
|
|
|
60
41
|
#  Panoramax
|
|
61
42
|
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
usage() {
|
|
4
4
|
echo "./docker-entrypoint.sh <COMMAND>: "
|
|
5
|
-
echo -e "\tThis script simplifies running
|
|
5
|
+
echo -e "\tThis script simplifies running Panoramax backend in a certain mode"
|
|
6
6
|
echo "Commands: "
|
|
7
7
|
echo -e "\tapi (default): Starts web API for production on port 5000 by default"
|
|
8
8
|
echo -e "\tdev-api: Starts web API for development on port 5000 by default"
|
|
9
9
|
echo -e "\tpicture-worker: Starts an independant background worker to process pictures"
|
|
10
|
-
echo -e "\tcleanup: Cleans database and remove
|
|
10
|
+
echo -e "\tcleanup: Cleans database and remove Panoramax derivated files (it doesn't delete your original pictures)"
|
|
11
11
|
echo -e "\tdb-upgrade: Upgrade the database schema"
|
|
12
12
|
echo -e "\tdb-refresh: Refresh all materialized views in the database"
|
|
13
13
|
}
|
|
@@ -23,7 +23,7 @@ case $command in
|
|
|
23
23
|
python3 -m waitress --port 5000 --threads=${NB_API_THREADS:-4} --call 'geovisio:create_app'
|
|
24
24
|
;;
|
|
25
25
|
"gunicorn-api")
|
|
26
|
-
gunicorn --workers ${NB_API_WORKERS:-5} --threads ${NB_API_THREADS:-4} -b :5000 'geovisio:create_app()'
|
|
26
|
+
python3 -m gunicorn --workers ${NB_API_WORKERS:-5} --threads ${NB_API_THREADS:-4} -b :5000 'geovisio:create_app()'
|
|
27
27
|
;;
|
|
28
28
|
"ssl-api")
|
|
29
29
|
python3 -m waitress --port 5000 --threads=${NB_API_THREADS:-4} --url-scheme=https --trusted-proxy '*' --trusted-proxy-headers 'X-Forwarded-For X-Forwarded-Host X-Forwarded-Port X-Forwarded-Proto' --log-untrusted-proxy-headers --clear-untrusted-proxy-headers --call 'geovisio:create_app'
|
|
@@ -109,7 +109,7 @@ services:
|
|
|
109
109
|
NB_API_THREADS: 10
|
|
110
110
|
INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
|
|
111
111
|
# API SUMMARY regroup many metadata about the instance
|
|
112
|
-
# check the documentation on how translations are handled: https://docs.panoramax.fr/
|
|
112
|
+
# check the documentation on how translations are handled: https://docs.panoramax.fr/backend/install/settings/#metadata
|
|
113
113
|
API_SUMMARY: >-
|
|
114
114
|
{
|
|
115
115
|
"color": "#abcdef",
|
|
@@ -25,6 +25,7 @@ http {
|
|
|
25
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
|
+
proxy_set_header X-Forwarded-Host $host;
|
|
28
29
|
|
|
29
30
|
# Limit the files that can be sent to 100M
|
|
30
31
|
client_max_body_size 100M;
|
|
@@ -53,7 +54,6 @@ http {
|
|
|
53
54
|
# add X-forward- headers for keycloak to know it's canonical host
|
|
54
55
|
# force https
|
|
55
56
|
proxy_set_header X-Forwarded-Proto https;
|
|
56
|
-
proxy_set_header X-Forwarded-Host $host;
|
|
57
57
|
|
|
58
58
|
proxy_redirect default;
|
|
59
59
|
}
|
|
@@ -53,7 +53,7 @@ services:
|
|
|
53
53
|
NB_API_THREADS: 10
|
|
54
54
|
INFRA_NB_PROXIES: ${INFRA_NB_PROXIES:-1}
|
|
55
55
|
# API SUMMARY regroup many metadata about the instance
|
|
56
|
-
# check the documentation on how translations are handled: https://docs.panoramax.fr/
|
|
56
|
+
# check the documentation on how translations are handled: https://docs.panoramax.fr/backend/install/settings/#metadata
|
|
57
57
|
API_SUMMARY: >-
|
|
58
58
|
{
|
|
59
59
|
"color": "#abcdef",
|
|
@@ -21,6 +21,7 @@ http {
|
|
|
21
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
|
+
proxy_set_header X-Forwarded-Host $host;
|
|
24
25
|
|
|
25
26
|
# Limit the files that can be sent to 100M
|
|
26
27
|
client_max_body_size 100M;
|
|
@@ -179,6 +179,55 @@ This calls needs to be logged, another token (or even the same one) can be used.
|
|
|
179
179
|
http -A bearer -a eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnZW92aXNpbyIsInN1YiI6ImVlNjQ5MjM1LWJmMTAtNGIwNC1hMDlhLTY0YjE2NjN DELETE https://my-panoramax.fr/api/users/me/tokens/ee649235-bf10-4b04-a09a-64b1663af6f8
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
+
### ⚖️ Permissions
|
|
183
|
+
|
|
184
|
+
The API checks permissions on each route, and returns a:
|
|
185
|
+
|
|
186
|
+
* 401 if authentication is required
|
|
187
|
+
* 403 error if the user is not allowed to access the route
|
|
188
|
+
|
|
189
|
+
The API also adds HATEAOS links to show the permissions of the current user on the queried object. It might be handy for client to use those links to show what actions are allowed. It might, for example, be used to disable a delete button if the user cannot delete the object.
|
|
190
|
+
|
|
191
|
+
This only works for access by ID (eg, in endpoints like `/api/collections/:id` and not `/api/collections` or `/api/search`) and only for authenticated calls (since no edit is possible without authentication).
|
|
192
|
+
|
|
193
|
+
The links have a `method` attribute to define the HTTP method to use for this permission, and might have an `attributes` attribute for the `edit` links,to tell which fields can be patched by the user.
|
|
194
|
+
|
|
195
|
+
Example:
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
"links": [
|
|
199
|
+
...
|
|
200
|
+
{
|
|
201
|
+
"rel": "edit",
|
|
202
|
+
"type": "application/json",
|
|
203
|
+
"method": "PATCH", // <-- HTTP verb to use to call the endpoint
|
|
204
|
+
"href": "https://my_panoramax.org/api/collections/some_id", // <-- api endpoint
|
|
205
|
+
"attributes": ["relative_heading", "semantics", "sortby", "title", "visibility"], // <-- the user can patch those fields
|
|
206
|
+
},
|
|
207
|
+
]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
The `rel` attribute should be used to identify the permission.
|
|
211
|
+
|
|
212
|
+
#### Links on sequences (collections)
|
|
213
|
+
|
|
214
|
+
The available `rel` links are:
|
|
215
|
+
|
|
216
|
+
* `edit` to patch the collection. An additional field `attributes` is provided to tell which fields can be patched by the user.
|
|
217
|
+
* `delete` to delete the collection
|
|
218
|
+
|
|
219
|
+
#### Links on upload_sets
|
|
220
|
+
|
|
221
|
+
* `edit` to patch the upload_set. An additional field `attributes` is provided to tell which fields can be patched by the user.
|
|
222
|
+
* `delete` to delete the upload_set
|
|
223
|
+
* `add_files` to add files to the upload_set
|
|
224
|
+
* `complete` to complete the upload_set
|
|
225
|
+
|
|
226
|
+
#### Links on pictures (items)
|
|
227
|
+
|
|
228
|
+
* `edit` to patch the picture. An additional field `attributes` is provided to tell which fields can be patched by the user.
|
|
229
|
+
* `delete` to delete the picture
|
|
230
|
+
* `add_annotation` to add an annotation on the picture
|
|
182
231
|
|
|
183
232
|
## :octicons-upload-16: Upload
|
|
184
233
|
|
|
@@ -322,4 +371,4 @@ Enjoy your brand-new uploaded pictures by browsing the map or querying the assoc
|
|
|
322
371
|
|
|
323
372
|
```bash
|
|
324
373
|
http https://my-panoramax.fr/api/upload_sets/60d94628-8098-42cc-b684-ffb9aa9d35a7
|
|
325
|
-
```
|
|
374
|
+
```
|