geovisio 2.7.0__tar.gz → 2.7.1__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.7.0 → geovisio-2.7.1}/CHANGELOG.md +28 -2
- {geovisio-2.7.0 → geovisio-2.7.1}/PKG-INFO +2 -2
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/docker-compose-full.yml +1 -1
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/api/open_api.json +171 -14
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/dev/STAC_compatibility.md +3 -1
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/dev/develop_server.md +18 -27
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/running.md +9 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/__init__.py +2 -2
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/cleanup.py +2 -2
- geovisio-2.7.1/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/de/LC_MESSAGES/messages.po +139 -2
- {geovisio-2.7.0/geovisio/translations/nl → geovisio-2.7.1/geovisio/translations/el}/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.0/geovisio/translations/messages.pot → geovisio-2.7.1/geovisio/translations/el/LC_MESSAGES/messages.po +3 -4
- geovisio-2.7.1/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/en/LC_MESSAGES/messages.po +126 -118
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/fr/LC_MESSAGES/messages.po +1 -1
- geovisio-2.7.1/geovisio/translations/hu/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/hu/LC_MESSAGES/messages.po +773 -0
- geovisio-2.7.1/geovisio/translations/messages.pot +694 -0
- geovisio-2.7.1/geovisio/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/nl/LC_MESSAGES/messages.po +24 -16
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/pictures.py +18 -20
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/sequences.py +21 -23
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/upload_set.py +40 -52
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/collections.py +19 -3
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/docs.py +35 -1
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/items.py +15 -6
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/map.py +86 -18
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/upload_set.py +9 -6
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/workers/runner_pictures.py +19 -33
- geovisio-2.7.1/migrations/20241004_01_d1zfe-pictures-grid-360.rollback.sql +22 -0
- geovisio-2.7.1/migrations/20241004_01_d1zfe-pictures-grid-360.sql +24 -0
- geovisio-2.7.1/migrations/20241011_01_e1j5C-pic-quality.rollback.sql +21 -0
- geovisio-2.7.1/migrations/20241011_01_e1j5C-pic-quality.sql +247 -0
- geovisio-2.7.1/migrations/20241017_01_GuOjF-pic-quality-update.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20241017_01_GuOjF-pic-quality-update.sql +61 -0
- geovisio-2.7.1/migrations/20241017_01_RiFlm-pictures-to-delete.rollback.sql +43 -0
- geovisio-2.7.1/migrations/20241017_01_RiFlm-pictures-to-delete.sql +75 -0
- geovisio-2.7.1/migrations/20241104_01_yhRVu-rejection-details.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20241104_01_yhRVu-rejection-details.sql +4 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/conftest.py +82 -0
- geovisio-2.7.1/tests/data/focal_zero.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/fixed_data/test_web_collections_one_collection.py +1 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/test_s3.py +5 -1
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_collections.py +21 -11
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_excluded_areas.py +8 -7
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_items.py +65 -26
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_map.py +64 -7
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_upload_set.py +130 -134
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_workers_runner_pictures.py +14 -14
- geovisio-2.7.0/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.0/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/.dockerignore +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/.flaskenv +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/.gitignore +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/.gitlab-ci.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/.pre-commit-config.yaml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/CODE_OF_CONDUCT.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/Dockerfile +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/LICENSE +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/Makefile +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/Procfile +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/README.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/babel.cfg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/bin/post_compile +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/bin/run_production_api.sh +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/docker-compose-blurring.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/docker-compose-keycloak.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/docker-compose-minio.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/docker-entrypoint.sh +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/1-init-keycloak-db.sh +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/Dockerfile.keycloak +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/docker-compose.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/env.example +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/keycloak-realm.json +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/nginx.conf +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-keycloak-auth/robots.txt +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-osm-auth/docker-compose.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-osm-auth/env.example +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-osm-auth/nginx.conf +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/full-osm-auth/robots.txt +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker/keycloak-realm.json +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docker-compose.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/api/api.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/api/openapi.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/dev/releases.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/images/geovisio-architecture-simple.excalidraw +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/images/geovisio-architecture-simple.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/images/geovisio_authentication_flow.svg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/index.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/cli.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/database_setup.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/deep_dive/blur_api.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/deep_dive/excluded_areas.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/deep_dive/external_Identity_Providers.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/deep_dive/pictures_processing.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/install.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/settings.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/tutorials/osm_oauth_client.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/tutorials/running_docker_keycloak.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/tutorials/running_docker_osm_auth.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/docs/install/update.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/db.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/default_account_tokens.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/reorder_sequences.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/admin_cli/sequence_heading.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/config_app.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/db_migrations.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/errors.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/templates/main.html +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/templates/viewer.html +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/es/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/fi/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/ko/LC_MESSAGES/messages.mo +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/translations/ko/LC_MESSAGES/messages.po +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/auth.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/db.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/excluded_areas.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/extent.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/fields.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/filesystems.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/link.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/params.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/reports.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/sentry.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/time.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/utils/tokens.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/auth.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/configuration.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/excluded_areas.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/params.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/pictures.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/reports.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/rss.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/stac.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/tokens.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/users.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/web/utils.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/geovisio/workers/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/big_picture.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/big_picture.svg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/favicon.ico +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/favicon.svg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/logo.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/logo.svg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/logo_full.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/logo_full.svg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/images/sponsors.png +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20221201_02_ZG8AR-camera-information.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230324_01_ba9WA-status.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240409_01_jnhra-pictures-grid.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240507_02_dzVET-picture-grid-public.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240611_01_jftHn-content-md5.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240611_01_jftHn-content-md5.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240612_01_yNcuE-upload-set.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240612_01_yNcuE-upload-set.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240708_01_Xn7IH-job-queue.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240715_01_Hca9V-upload-set-metadata.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240723_01_ePGFe-upload-set-files.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240729_01_HALjj-upload-set-sort.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240730_02_aRymN-rejection-status.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240730_02_aRymN-rejection-status.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240801_01_DOqmf-reports.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240801_01_DOqmf-reports.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240820_01_aB2ZK-exclusion-zones.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240902_01_MDqSj-user-agent.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240902_01_MDqSj-user-agent.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240904_01_gFjlV-files-rejection-msg.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240905_01_C8F6U-conflicts.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240905_01_C8F6U-conflicts.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240905_01_E5Ki0-upload-set-delete.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240909_01_Muc22-unique-grid-index.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240912_01_dAALm-account-index.rollback.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/20240912_01_dAALm-account-index.sql +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/data/readme.md +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/migrations/data/sensor_data.json +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/mkdocs.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/pyproject.toml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/runtime.txt +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/1.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/1_blurred.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/2.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/3.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/4.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/5.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/b1.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/b2.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/c1.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/crop.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/d1.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e1.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e1_artist.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e1_without_exif.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e2.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e3.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e4.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/e5.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/data/invalid_exif.jpg +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/fixed_data/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/fixed_data/conftest.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/fixed_data/test_api_conformance.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/fixed_data/test_many_sequences.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/__init__.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/conftest.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/docker-compose-auth-test.yml +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/test_auth.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/integration/test_tokens.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_admin_cli_cleanup.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_db_migrations.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_factory.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_utils_auth.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_utils_filesystems.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_utils_pictures.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_utils_reports.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_utils_upload_set.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_configuration.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_params.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_pictures.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_reports.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_stac.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/tests/test_web_users.py +0 -0
- {geovisio-2.7.0 → geovisio-2.7.1}/yoyo.ini +0 -0
|
@@ -9,6 +9,31 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [2.7.1] - 2024-11-15
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Routes returning items/pictures have the `pers:interior_orientation/sensor_array_dimensions` property set, letting users know about original picture dimensions (width/height).
|
|
17
|
+
- Add number and coefficient of 360° pictures to the pictures grid. This will makes it possible to display a grid of only 360° pictures.
|
|
18
|
+
- Add `missing_fields` list to the `/api/upload_sets/:id/files` response detailling the missing fields from a rejected uploaded picture.
|
|
19
|
+
- Details about picture quality are now offered for display and filtering:
|
|
20
|
+
- 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).
|
|
21
|
+
- In vector tiles: `gps_accuracy` and `h_pixel_density` (for __sequences and pictures__ layers, not available on grid layer)
|
|
22
|
+
- 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.
|
|
23
|
+
- Translations in Spanish 🇪🇸 and Hungarian 🇭🇺.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- In vector tiles, grid layer is now returning circles instead of polygons. Map style is also adapted for a smoother transition on low zooms (for a heatmap-like effect).
|
|
28
|
+
- More EXIF tags are stripped out of database, to reduce used disk space: all keys containing hexadecimal sub-keys are removed (like `Exif.Sony.0x1234`). These fields are still available in original pictures files. A database migration removes them from existing pictures stock in your database (and could possibly take a bit of time to run...). After migration, you may want to run a little `VACUUM` to reclaim disk space.
|
|
29
|
+
- Add number and coefficient of 360° pictures to the pictures grid. This will makes it possible to display a grid of only 360° pictures.
|
|
30
|
+
- Change the way deleted pictures/upload_sets are handled, objects are removed from the database sooner than before, without needing a flag to tell that the underlying files needed deletion.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- The rejection reason of duplicate files is now `file_duplicate` instead of `invalid_metadata`.
|
|
35
|
+
- Fix a bug when loading a picture with a focal length of 0.
|
|
36
|
+
|
|
12
37
|
## [2.7.0] - 2024-10-10
|
|
13
38
|
|
|
14
39
|
⚠️ The minimal supported Python version is now 3.10. Note that you can run it with newer python versions as some might bring better performance. ⚠
|
|
@@ -25,7 +50,7 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
25
50
|
- Support of cropped panorama, with new values in `pers:interior_orientation` in picture properties: `visible_area`, `sensor_array_dimensions` following [proposed definition in STAC](https://github.com/stac-extensions/perspective-imagery/issues/10).
|
|
26
51
|
- Routes `/api` and `/api/configuration` return API version in a `geovisio_version` attribute (example: `2.6.0-12-ab12cd34`).
|
|
27
52
|
- Routes returning collections display a `geovisio:upload-software` property showing which client has been used to create the collection (for meta-catalog statistics).
|
|
28
|
-
-
|
|
53
|
+
- Handle user agent `GeoVisioCli` and `PanoramaxCli` as the same `cli` software.
|
|
29
54
|
|
|
30
55
|
### Changed
|
|
31
56
|
|
|
@@ -547,7 +572,8 @@ FLASK_APP="src" flask process-sequences
|
|
|
547
572
|
- Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
|
|
548
573
|
- Dockerfile for easy server setup
|
|
549
574
|
|
|
550
|
-
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.7.
|
|
575
|
+
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.7.1...develop
|
|
576
|
+
[2.7.1]: https://gitlab.com/panoramax/server/api/-/compare/2.7.0...2.7.1
|
|
551
577
|
[2.7.0]: https://gitlab.com/panoramax/server/api/-/compare/2.6.0...2.7.0
|
|
552
578
|
[2.6.0]: https://gitlab.com/panoramax/server/api/-/compare/2.5.0...2.6.0
|
|
553
579
|
[2.5.0]: https://gitlab.com/panoramax/server/api/-/compare/2.4.0...2.5.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"info": {
|
|
3
3
|
"title": "geovisio",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.7.0",
|
|
5
5
|
"description": "#  Panoramax\n\n__Panoramax__ is a digital resource for sharing and using \ud83d\udccd\ud83d\udcf7 field photos. Anyone can take photographs of places visible from the public streets and contribute them to the Panoramax database. This data is then freely accessible and reusable by all. More information available at [gitlab.com/panoramax](https://gitlab.com/panoramax) and [panoramax.fr](https://panoramax.fr/).\n\n\n# \ud83c\udf10 Panoramax API\n\nThis repository only contains __the backend and web API__ of a Panoramax instance.\n\n## Features\n\n* A __web API__ to search and upload pictures collections\n * Search pictures by ID, date, location\n * Compatible with [SpatioTemporal Asset Catalog](https://stacspec.org/) and [OGC WFS 3](https://github.com/opengeospatial/WFS_FES) specifications\n * Upload your pictures and sequences\n* An easy-to-use __backend__\n * Generates automatically thumbnail, small and tiled versions of your pictures\n * Compatible with various filesystems (classic, S3, FTP...)\n * Authentication and blurring API can be plugged-in for production-ready use\n\n\n## Install & run\n\nOur [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs) will help you install, configure and run a Panoramax instance.\n\nIf at some point you're lost or need help, you can contact us through [issues](https://gitlab.com/panoramax/server/api/-/issues) or by [email](mailto:panieravide@riseup.net).\n\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an [issue](https://gitlab.com/panoramax/server/api/-/issues) first to discuss what you would like to change.\n\nMore information about developing is available in [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs).\n\n\n## \u2696\ufe0f License\n\nCopyright (c) Panoramax team 2022-2024, [released under MIT license](https://gitlab.com/panoramax/server/api/-/blob/develop/LICENSE).\n\n",
|
|
6
6
|
"contact": {
|
|
7
7
|
"name": "Adrien PAVIE",
|
|
@@ -1008,7 +1008,7 @@
|
|
|
1008
1008
|
"/api/map/{z}/{x}/{y}.{format}": {
|
|
1009
1009
|
"get": {
|
|
1010
1010
|
"summary": "Get pictures and sequences as vector tiles",
|
|
1011
|
-
"description": "<br/>Vector tiles contains different layers based on zoom level : sequences, pictures or grid.<br/><br/>Layer \"sequences\":<br/> - Available on zoom levels >= 6<br/> - Available properties:<br/> - id (sequence ID)<br/> - account_id<br/> - model (camera make and model)<br/> - type (flat or equirectangular)<br/> - date (capture date, as YYYY-MM-DD)<br/><br/>Layer \"pictures\":<br/> - Available on zoom levels >= 13<br/> - Available properties:<br/> - id (picture ID)<br/> - account_id<br/> - ts (picture date/time)<br/> - heading (picture heading in degrees)<br/> - sequences (list of sequences ID this pictures belongs to)<br/> - type (flat or equirectangular)<br/> - model (camera make and model)<br/><br/>Layer \"grid\":<br/> - Available on zoom levels 0 to 5 (included)<br/> - Available properties:<br/> - id<br/> - nb_pictures<br/> - coef (value from 0 to 1, relative quantity of available pictures)<br/><br/>",
|
|
1011
|
+
"description": "<br/>Vector tiles contains different layers based on zoom level : sequences, pictures or grid.<br/><br/>Layer \"sequences\":<br/> - Available on zoom levels >= 6<br/> - Available properties:<br/> - id (sequence ID)<br/> - account_id<br/> - model (camera make and model)<br/> - type (flat or equirectangular)<br/> - date (capture date, as YYYY-MM-DD)<br/> - gps_accuracy (95% confidence interval of GPS position precision, in meters)<br/> - h_pixel_density (number of pixels on horizon per field of view degree)<br/><br/>Layer \"pictures\":<br/> - Available on zoom levels >= 13<br/> - Available properties:<br/> - id (picture ID)<br/> - account_id<br/> - ts (picture date/time)<br/> - heading (picture heading in degrees)<br/> - sequences (list of sequences ID this pictures belongs to)<br/> - type (flat or equirectangular)<br/> - model (camera make and model)<br/> - gps_accuracy (95% confidence interval of GPS position precision, in meters)<br/> - h_pixel_density (number of pixels on horizon per field of view degree)<br/><br/>Layer \"grid\":<br/> - Available on zoom levels 0 to 5 (included)<br/> - Available properties:<br/> - id<br/> - nb_pictures<br/> - nb_360_pictures (number of 360\u00b0 pictures)<br/> - nb_flat_pictures (number of flat pictures)<br/> - coef (value from 0 to 1, relative quantity of available pictures)<br/> - coef_360_pictures (value from 0 to 1, relative quantity of available 360\u00b0 pictures)<br/> - coef_flat_pictures (value from 0 to 1, relative quantity of available flat pictures)<br/><br/>",
|
|
1012
1012
|
"responses": {
|
|
1013
1013
|
"200": {
|
|
1014
1014
|
"description": "Sequences vector tile",
|
|
@@ -3602,6 +3602,72 @@
|
|
|
3602
3602
|
},
|
|
3603
3603
|
"GeoVisioUploadSetFile": {
|
|
3604
3604
|
"$defs": {
|
|
3605
|
+
"FileRejection": {
|
|
3606
|
+
"description": "Details about a file rejection",
|
|
3607
|
+
"properties": {
|
|
3608
|
+
"reason": {
|
|
3609
|
+
"title": "Reason",
|
|
3610
|
+
"type": "string"
|
|
3611
|
+
},
|
|
3612
|
+
"severity": {
|
|
3613
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFile/$defs/FileRejectionStatusSeverity"
|
|
3614
|
+
},
|
|
3615
|
+
"message": {
|
|
3616
|
+
"anyOf": [
|
|
3617
|
+
{
|
|
3618
|
+
"type": "string"
|
|
3619
|
+
},
|
|
3620
|
+
{
|
|
3621
|
+
"type": "null"
|
|
3622
|
+
}
|
|
3623
|
+
],
|
|
3624
|
+
"title": "Message"
|
|
3625
|
+
},
|
|
3626
|
+
"details": {
|
|
3627
|
+
"anyOf": [
|
|
3628
|
+
{
|
|
3629
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFile/$defs/FileRejectionDetails"
|
|
3630
|
+
},
|
|
3631
|
+
{
|
|
3632
|
+
"type": "null"
|
|
3633
|
+
}
|
|
3634
|
+
]
|
|
3635
|
+
}
|
|
3636
|
+
},
|
|
3637
|
+
"required": [
|
|
3638
|
+
"reason",
|
|
3639
|
+
"severity",
|
|
3640
|
+
"message",
|
|
3641
|
+
"details"
|
|
3642
|
+
],
|
|
3643
|
+
"title": "FileRejection",
|
|
3644
|
+
"type": "object"
|
|
3645
|
+
},
|
|
3646
|
+
"FileRejectionDetails": {
|
|
3647
|
+
"properties": {
|
|
3648
|
+
"missing_fields": {
|
|
3649
|
+
"items": {
|
|
3650
|
+
"type": "string"
|
|
3651
|
+
},
|
|
3652
|
+
"title": "Missing Fields",
|
|
3653
|
+
"type": "array"
|
|
3654
|
+
}
|
|
3655
|
+
},
|
|
3656
|
+
"required": [
|
|
3657
|
+
"missing_fields"
|
|
3658
|
+
],
|
|
3659
|
+
"title": "FileRejectionDetails",
|
|
3660
|
+
"type": "object"
|
|
3661
|
+
},
|
|
3662
|
+
"FileRejectionStatusSeverity": {
|
|
3663
|
+
"enum": [
|
|
3664
|
+
"error",
|
|
3665
|
+
"warning",
|
|
3666
|
+
"info"
|
|
3667
|
+
],
|
|
3668
|
+
"title": "FileRejectionStatusSeverity",
|
|
3669
|
+
"type": "string"
|
|
3670
|
+
},
|
|
3605
3671
|
"FileType": {
|
|
3606
3672
|
"const": "picture",
|
|
3607
3673
|
"description": "Type of uploadedfile",
|
|
@@ -3718,14 +3784,13 @@
|
|
|
3718
3784
|
"rejected": {
|
|
3719
3785
|
"anyOf": [
|
|
3720
3786
|
{
|
|
3721
|
-
"
|
|
3787
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFile/$defs/FileRejection"
|
|
3722
3788
|
},
|
|
3723
3789
|
{
|
|
3724
3790
|
"type": "null"
|
|
3725
3791
|
}
|
|
3726
3792
|
],
|
|
3727
|
-
"readOnly": true
|
|
3728
|
-
"title": "Rejected"
|
|
3793
|
+
"readOnly": true
|
|
3729
3794
|
}
|
|
3730
3795
|
},
|
|
3731
3796
|
"required": [
|
|
@@ -3739,6 +3804,72 @@
|
|
|
3739
3804
|
},
|
|
3740
3805
|
"GeoVisioUploadSetFiles": {
|
|
3741
3806
|
"$defs": {
|
|
3807
|
+
"FileRejection": {
|
|
3808
|
+
"description": "Details about a file rejection",
|
|
3809
|
+
"properties": {
|
|
3810
|
+
"reason": {
|
|
3811
|
+
"title": "Reason",
|
|
3812
|
+
"type": "string"
|
|
3813
|
+
},
|
|
3814
|
+
"severity": {
|
|
3815
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFiles/$defs/FileRejectionStatusSeverity"
|
|
3816
|
+
},
|
|
3817
|
+
"message": {
|
|
3818
|
+
"anyOf": [
|
|
3819
|
+
{
|
|
3820
|
+
"type": "string"
|
|
3821
|
+
},
|
|
3822
|
+
{
|
|
3823
|
+
"type": "null"
|
|
3824
|
+
}
|
|
3825
|
+
],
|
|
3826
|
+
"title": "Message"
|
|
3827
|
+
},
|
|
3828
|
+
"details": {
|
|
3829
|
+
"anyOf": [
|
|
3830
|
+
{
|
|
3831
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFiles/$defs/FileRejectionDetails"
|
|
3832
|
+
},
|
|
3833
|
+
{
|
|
3834
|
+
"type": "null"
|
|
3835
|
+
}
|
|
3836
|
+
]
|
|
3837
|
+
}
|
|
3838
|
+
},
|
|
3839
|
+
"required": [
|
|
3840
|
+
"reason",
|
|
3841
|
+
"severity",
|
|
3842
|
+
"message",
|
|
3843
|
+
"details"
|
|
3844
|
+
],
|
|
3845
|
+
"title": "FileRejection",
|
|
3846
|
+
"type": "object"
|
|
3847
|
+
},
|
|
3848
|
+
"FileRejectionDetails": {
|
|
3849
|
+
"properties": {
|
|
3850
|
+
"missing_fields": {
|
|
3851
|
+
"items": {
|
|
3852
|
+
"type": "string"
|
|
3853
|
+
},
|
|
3854
|
+
"title": "Missing Fields",
|
|
3855
|
+
"type": "array"
|
|
3856
|
+
}
|
|
3857
|
+
},
|
|
3858
|
+
"required": [
|
|
3859
|
+
"missing_fields"
|
|
3860
|
+
],
|
|
3861
|
+
"title": "FileRejectionDetails",
|
|
3862
|
+
"type": "object"
|
|
3863
|
+
},
|
|
3864
|
+
"FileRejectionStatusSeverity": {
|
|
3865
|
+
"enum": [
|
|
3866
|
+
"error",
|
|
3867
|
+
"warning",
|
|
3868
|
+
"info"
|
|
3869
|
+
],
|
|
3870
|
+
"title": "FileRejectionStatusSeverity",
|
|
3871
|
+
"type": "string"
|
|
3872
|
+
},
|
|
3742
3873
|
"FileType": {
|
|
3743
3874
|
"const": "picture",
|
|
3744
3875
|
"description": "Type of uploadedfile",
|
|
@@ -3855,14 +3986,13 @@
|
|
|
3855
3986
|
"rejected": {
|
|
3856
3987
|
"anyOf": [
|
|
3857
3988
|
{
|
|
3858
|
-
"
|
|
3989
|
+
"$ref": "#/components/schemas/GeoVisioUploadSetFiles/$defs/FileRejection"
|
|
3859
3990
|
},
|
|
3860
3991
|
{
|
|
3861
3992
|
"type": "null"
|
|
3862
3993
|
}
|
|
3863
3994
|
],
|
|
3864
|
-
"readOnly": true
|
|
3865
|
-
"title": "Rejected"
|
|
3995
|
+
"readOnly": true
|
|
3866
3996
|
}
|
|
3867
3997
|
},
|
|
3868
3998
|
"required": [
|
|
@@ -4085,11 +4215,33 @@
|
|
|
4085
4215
|
"geovisio:length_km": {
|
|
4086
4216
|
"$ref": "#/components/schemas/GeoVisioLengthKm"
|
|
4087
4217
|
},
|
|
4218
|
+
"quality:horizontal_accuracy": {
|
|
4219
|
+
"type": "number",
|
|
4220
|
+
"title": "Estimated GPS position precision (in meters)"
|
|
4221
|
+
},
|
|
4222
|
+
"quality:horizontal_accuracy_type": {
|
|
4223
|
+
"type": "string",
|
|
4224
|
+
"title": "Estimation process for GPS precision",
|
|
4225
|
+
"example": "95% confidence interval"
|
|
4226
|
+
},
|
|
4088
4227
|
"providers": {
|
|
4089
4228
|
"type": "array",
|
|
4090
4229
|
"items": {
|
|
4091
4230
|
"$ref": "#/components/schemas/GeoVisioProvider"
|
|
4092
4231
|
}
|
|
4232
|
+
},
|
|
4233
|
+
"summaries": {
|
|
4234
|
+
"type": "object",
|
|
4235
|
+
"properties": {
|
|
4236
|
+
"panoramax:horizontal_pixel_density": {
|
|
4237
|
+
"type": "array",
|
|
4238
|
+
"title": "Number of pixels on horizon per field of view degree (as a list with a single value for STAC conformance)",
|
|
4239
|
+
"items": {
|
|
4240
|
+
"type": "integer",
|
|
4241
|
+
"minimum": 0
|
|
4242
|
+
}
|
|
4243
|
+
}
|
|
4244
|
+
}
|
|
4093
4245
|
}
|
|
4094
4246
|
}
|
|
4095
4247
|
}
|
|
@@ -4238,6 +4390,15 @@
|
|
|
4238
4390
|
"original_file:name": {
|
|
4239
4391
|
"type": "string",
|
|
4240
4392
|
"title": "Original file name"
|
|
4393
|
+
},
|
|
4394
|
+
"panoramax:horizontal_pixel_density": {
|
|
4395
|
+
"type": "integer",
|
|
4396
|
+
"minimum": 0,
|
|
4397
|
+
"title": "Number of pixels on horizon per field of view degree"
|
|
4398
|
+
},
|
|
4399
|
+
"quality:horizontal_accuracy": {
|
|
4400
|
+
"type": "number",
|
|
4401
|
+
"title": "Estimated GPS position precision (in meters)"
|
|
4241
4402
|
}
|
|
4242
4403
|
}
|
|
4243
4404
|
}
|
|
@@ -4336,7 +4497,7 @@
|
|
|
4336
4497
|
},
|
|
4337
4498
|
"isBlurred": {
|
|
4338
4499
|
"type": "string",
|
|
4339
|
-
"description": "Is picture blurred",
|
|
4500
|
+
"description": "Is picture blurred. If set to 'true', the server will not apply the face blurring algorithm but will publish the image as it is",
|
|
4340
4501
|
"enum": [
|
|
4341
4502
|
"true",
|
|
4342
4503
|
"false",
|
|
@@ -4476,11 +4637,7 @@
|
|
|
4476
4637
|
"description": "Parameters used to create a Report",
|
|
4477
4638
|
"properties": {
|
|
4478
4639
|
"issue": {
|
|
4479
|
-
"
|
|
4480
|
-
{
|
|
4481
|
-
"$ref": "#/components/schemas/GeoVisioPostReport/$defs/ReportType"
|
|
4482
|
-
}
|
|
4483
|
-
],
|
|
4640
|
+
"$ref": "#/components/schemas/GeoVisioPostReport/$defs/ReportType",
|
|
4484
4641
|
"description": "Nature of the issue you want to report"
|
|
4485
4642
|
},
|
|
4486
4643
|
"picture_id": {
|
|
@@ -54,7 +54,7 @@ This route doesn't exist in STAC, and is used here to provide information about
|
|
|
54
54
|
|
|
55
55
|
According to processing status, HTTP response code can be 102 (under process) or 200 (ready). If picture is under process, some of its assets or metadata can be partial or not available at the moment.
|
|
56
56
|
|
|
57
|
-
###
|
|
57
|
+
### Custom properties
|
|
58
58
|
|
|
59
59
|
Many properties are added in the response (for clients not able to read info outside of GeoJSON `properties` object):
|
|
60
60
|
|
|
@@ -68,6 +68,8 @@ Many properties are added in the response (for clients not able to read info out
|
|
|
68
68
|
- `geovisio:thumbnail`
|
|
69
69
|
- `original_file:size`
|
|
70
70
|
- `original_file:name`
|
|
71
|
+
- `panoramax:horizontal_pixel_density`
|
|
72
|
+
- `quality:horizontal_accuracy`
|
|
71
73
|
|
|
72
74
|
Note: `original_file:size` is similar to the size defined by the STAC extension [file](https://github.com/stac-extensions/file), but it cannot be associated to an asset, since the original file has no associated asset (since it will be blurred).
|
|
73
75
|
|
|
@@ -219,18 +219,18 @@ So when possible, the migration of a column should be written in batch (and as a
|
|
|
219
219
|
The migration of pictures table can for example be written like:
|
|
220
220
|
|
|
221
221
|
```sql
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
-- transactional: false
|
|
223
|
+
-- The comment above is essential for Yoyo migration to skip creating a transaction
|
|
224
|
+
-- Disable triggers temporarily (for better performance)
|
|
225
|
+
SET session_replication_role = replica;
|
|
226
|
+
|
|
227
|
+
CREATE OR REPLACE PROCEDURE update_all_pictures_with_important_stuff() AS $$
|
|
224
228
|
DECLARE
|
|
225
|
-
|
|
229
|
+
last_inserted_at TIMESTAMPTZ;
|
|
226
230
|
BEGIN
|
|
227
231
|
SELECT min(inserted_at) - INTERVAL '1 minute' FROM pictures INTO last_inserted_at;
|
|
228
232
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
-- Temporary removal of all update triggers that needs to be removed, be sure to check all the update trigger, and see which should be deactivated
|
|
232
|
-
DROP TRIGGER pictures_update_sequences_trg ON pictures;
|
|
233
|
-
DROP TRIGGER pictures_updates_on_sequences_trg ON pictures;
|
|
233
|
+
WHILE last_inserted_at IS NOT NULL LOOP
|
|
234
234
|
|
|
235
235
|
WITH
|
|
236
236
|
-- get a batch of 100 000 pictures to update
|
|
@@ -244,31 +244,22 @@ BEGIN
|
|
|
244
244
|
)
|
|
245
245
|
SELECT MAX(inserted_at) FROM pic_to_update INTO last_inserted_at;
|
|
246
246
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
-- Restore all deactivated triggers
|
|
251
|
-
CREATE TRIGGER pictures_updates_on_sequences_trg
|
|
252
|
-
AFTER UPDATE ON pictures
|
|
253
|
-
REFERENCING NEW TABLE AS pictures_after
|
|
254
|
-
FOR EACH STATEMENT
|
|
255
|
-
EXECUTE FUNCTION pictures_updates_on_sequences();
|
|
247
|
+
RAISE NOTICE 'max insertion date is now %', last_inserted_at;
|
|
256
248
|
|
|
257
|
-
|
|
258
|
-
AFTER UPDATE ON pictures
|
|
259
|
-
REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
|
|
260
|
-
FOR EACH STATEMENT EXECUTE FUNCTION pictures_update_sequence();
|
|
261
|
-
|
|
262
|
-
-- commit transaction (as a procedure is in an implicit transaction, it will start a new transaction after this)
|
|
249
|
+
-- commit transaction (as a procedure is in an implicit transaction, it will start a new transaction after this)
|
|
263
250
|
COMMIT;
|
|
264
|
-
|
|
265
|
-
|
|
251
|
+
|
|
252
|
+
END LOOP;
|
|
253
|
+
RAISE NOTICE 'update finished';
|
|
266
254
|
END
|
|
267
|
-
$$
|
|
255
|
+
$$ LANGUAGE plpgsql;
|
|
268
256
|
|
|
257
|
+
-- Actually run the update
|
|
269
258
|
CALL update_all_pictures_with_important_stuff();
|
|
270
|
-
DROP PROCEDURE update_all_pictures_with_important_stuff;
|
|
271
259
|
|
|
260
|
+
-- Set back triggers and remove update procedure
|
|
261
|
+
SET session_replication_role = DEFAULT;
|
|
262
|
+
DROP PROCEDURE update_all_pictures_with_important_stuff;
|
|
272
263
|
```
|
|
273
264
|
|
|
274
265
|
The migrations [`pictures-exiv2`](https://gitlab.com/panoramax/server/api/-/blob/main/migrations/20231018_01_4G3YE-pictures-exiv2.sql) and [`jobs-error`](https://gitlab.com/panoramax/server/api/-/blob/main/migrations/20231110_01_3p070-jobs-error.sql) are real case examples of this.
|
|
@@ -82,10 +82,19 @@ This command starts the HTTP API to serve pictures & sequences to users.
|
|
|
82
82
|
=== ":magic_wand: Development API"
|
|
83
83
|
|
|
84
84
|
With this you can have hot reload for better development experience.
|
|
85
|
+
|
|
85
86
|
```bash
|
|
86
87
|
flask --debug run
|
|
87
88
|
```
|
|
88
89
|
|
|
90
|
+
Note that you can also run with another `env` file if you test over many setups:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
FLASK_SKIP_DOTENV=1 flask --env-file myconf.env run
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
In that case, your `env` file may contain the `FLASK_APP=geovisio` variable to properly start.
|
|
97
|
+
|
|
89
98
|
## Background worker
|
|
90
99
|
|
|
91
100
|
This command starts the 1 picture worker, used to process uploaded pictures in the background.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""GeoVisio API - Main"""
|
|
2
2
|
|
|
3
|
-
__version__ = "2.7.
|
|
3
|
+
__version__ = "2.7.1"
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
6
|
from flask import Flask, jsonify, stream_template, send_from_directory, redirect, request
|
|
@@ -60,7 +60,7 @@ dictConfig(LOGGING_CONFIG)
|
|
|
60
60
|
# Init i18n
|
|
61
61
|
def get_locale():
|
|
62
62
|
try:
|
|
63
|
-
return request.accept_languages.best_match(["de", "fr", "en"]) or "en"
|
|
63
|
+
return request.accept_languages.best_match(["de", "fr", "en", "es", "hu"]) or "en"
|
|
64
64
|
except:
|
|
65
65
|
return "en"
|
|
66
66
|
|
|
@@ -60,12 +60,12 @@ def cleanup(sequences=[], full=False, database=False, cache=False, permanentPics
|
|
|
60
60
|
if database:
|
|
61
61
|
log.info("Cleaning up database...")
|
|
62
62
|
if allSequences:
|
|
63
|
-
conn.execute("DELETE FROM
|
|
63
|
+
conn.execute("DELETE FROM job_queue")
|
|
64
64
|
conn.execute("DELETE FROM sequences_pictures")
|
|
65
65
|
conn.execute("DELETE FROM sequences")
|
|
66
66
|
conn.execute("DELETE FROM pictures")
|
|
67
67
|
else:
|
|
68
|
-
conn.execute("DELETE FROM
|
|
68
|
+
conn.execute("DELETE FROM job_queue WHERE picture_id = ANY(%s)", [pics])
|
|
69
69
|
conn.execute("DELETE FROM sequences_pictures WHERE seq_id = ANY(%s)", [sequences])
|
|
70
70
|
conn.execute("DELETE FROM sequences WHERE id = ANY(%s)", [sequences])
|
|
71
71
|
conn.execute("DELETE FROM pictures WHERE id = ANY(%s)", [pics])
|
|
Binary file
|
|
@@ -8,8 +8,8 @@ msgstr ""
|
|
|
8
8
|
"Project-Id-Version: PROJECT VERSION\n"
|
|
9
9
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
10
10
|
"POT-Creation-Date: 2024-07-10 14:10+0200\n"
|
|
11
|
-
"PO-Revision-Date: 2024-
|
|
12
|
-
"Last-Translator:
|
|
11
|
+
"PO-Revision-Date: 2024-11-10 08:10+0000\n"
|
|
12
|
+
"Last-Translator: mcliquid <weblate@mcliquid.de>\n"
|
|
13
13
|
"Language-Team: German <http://weblate.panoramax.xyz/projects/panoramax/api/"
|
|
14
14
|
"de/>\n"
|
|
15
15
|
"Language: de\n"
|
|
@@ -665,3 +665,140 @@ msgstr ""
|
|
|
665
665
|
#: geovisio/web/upload_set.py:460
|
|
666
666
|
msgid "You're not authorized to add picture to this upload set"
|
|
667
667
|
msgstr "Sie sind nicht authorisiert Fotos zu diesem Set hinzuzufügen"
|
|
668
|
+
|
|
669
|
+
#: geovisio/utils/upload_set.py:158
|
|
670
|
+
msgid ""
|
|
671
|
+
"The picture is too similar to another one (nearby and taken almost at the "
|
|
672
|
+
"same time)"
|
|
673
|
+
msgstr ""
|
|
674
|
+
"Das Foto ist zu ähnlich mit einem anderen (in der Nähe und zur gleichen Zeit "
|
|
675
|
+
"aufgenommen)"
|
|
676
|
+
|
|
677
|
+
#: geovisio/utils/upload_set.py:161
|
|
678
|
+
msgid "The sent file is not a valid JPEG"
|
|
679
|
+
msgstr "Die gesendete Datei ist kein valides JPEG"
|
|
680
|
+
|
|
681
|
+
#: geovisio/utils/upload_set.py:164
|
|
682
|
+
msgid ""
|
|
683
|
+
"The picture has invalid EXIF or XMP metadata, making it impossible to use"
|
|
684
|
+
msgstr ""
|
|
685
|
+
"Das Foto hat invalide EXIF oder XMP Metadaten, sodass es unmöglich ist es zu "
|
|
686
|
+
"nutzen"
|
|
687
|
+
|
|
688
|
+
#: geovisio/utils/excluded_areas.py:82
|
|
689
|
+
msgid "Impossible to find excluded area"
|
|
690
|
+
msgstr "Unmöglich, den ausgeschlossenen Bereich zu finden"
|
|
691
|
+
|
|
692
|
+
#: geovisio/utils/upload_set.py:167
|
|
693
|
+
msgid "Something went very wrong, but not due to the picture itself"
|
|
694
|
+
msgstr "Etwas ist sehr schief gelaufen, aber nicht wegen des Bildes selbst"
|
|
695
|
+
|
|
696
|
+
#: geovisio/web/items.py:1095 geovisio/web/upload_set.py:620
|
|
697
|
+
msgid "Picture has invalid metadata"
|
|
698
|
+
msgstr "Bild hat ungültige Metadaten"
|
|
699
|
+
|
|
700
|
+
#: geovisio/web/reports.py:352
|
|
701
|
+
msgid "You're not authorized to list reports"
|
|
702
|
+
msgstr "Du bist nicht berechtigt, Berichte aufzulisten"
|
|
703
|
+
|
|
704
|
+
#: geovisio/web/excluded_areas.py:133
|
|
705
|
+
msgid "You must be logged-in as admin to access all excluded areas"
|
|
706
|
+
msgstr ""
|
|
707
|
+
"Du musst als Administrator eingeloggt sein, um auf alle ausgeschlossenen "
|
|
708
|
+
"Bereiche zugreifen zu können"
|
|
709
|
+
|
|
710
|
+
#: geovisio/web/reports.py:144
|
|
711
|
+
msgid "Only authenticated users can access reports"
|
|
712
|
+
msgstr "Nur authentifizierte Benutzer können auf Berichte zugreifen"
|
|
713
|
+
|
|
714
|
+
#: geovisio/web/reports.py:148 geovisio/web/reports.py:266
|
|
715
|
+
msgid "Report doesn't exist"
|
|
716
|
+
msgstr "Der Bericht existiert nicht"
|
|
717
|
+
|
|
718
|
+
#: geovisio/web/reports.py:157
|
|
719
|
+
msgid "You're not authorized to access this report"
|
|
720
|
+
msgstr "Du bist nicht berechtigt, auf diesen Bericht zuzugreifen"
|
|
721
|
+
|
|
722
|
+
#: geovisio/web/excluded_areas.py:135
|
|
723
|
+
msgid "You're not authorized to access all excluded areas"
|
|
724
|
+
msgstr ""
|
|
725
|
+
"Du bist nicht berechtigt, auf alle ausgeschlossenen Bereiche zuzugreifen"
|
|
726
|
+
|
|
727
|
+
#: geovisio/web/reports.py:89 geovisio/web/reports.py:99
|
|
728
|
+
msgid "Impossible to create a Report"
|
|
729
|
+
msgstr "Erstellung eines Berichts nicht möglich"
|
|
730
|
+
|
|
731
|
+
#: geovisio/web/reports.py:91
|
|
732
|
+
msgid "Parameter for creating a Report should be a valid JSON"
|
|
733
|
+
msgstr ""
|
|
734
|
+
"Parameter für die Erstellung eines Berichts sollte ein gültiges JSON sein"
|
|
735
|
+
|
|
736
|
+
#: geovisio/web/reports.py:284
|
|
737
|
+
msgid "Impossible to edit the Report"
|
|
738
|
+
msgstr "Bearbeitung des Berichts nicht möglich"
|
|
739
|
+
|
|
740
|
+
#: geovisio/web/excluded_areas.py:174 geovisio/web/excluded_areas.py:338
|
|
741
|
+
msgid "Parameter for creating an Excluded Area should be a valid JSON"
|
|
742
|
+
msgstr ""
|
|
743
|
+
"Der Parameter für die Erstellung einer Excluded Area sollte ein gültiges "
|
|
744
|
+
"JSON sein"
|
|
745
|
+
|
|
746
|
+
#: geovisio/web/reports.py:277
|
|
747
|
+
msgid "You're not authorized to edit this Report"
|
|
748
|
+
msgstr "Du bist nicht berechtigt, diesen Bericht zu bearbeiten"
|
|
749
|
+
|
|
750
|
+
#: geovisio/web/excluded_areas.py:177 geovisio/web/excluded_areas.py:235
|
|
751
|
+
msgid "You must be logged-in as admin to edit excluded areas"
|
|
752
|
+
msgstr ""
|
|
753
|
+
"Du musst als Administrator eingeloggt sein, um ausgeschlossene Bereiche zu "
|
|
754
|
+
"bearbeiten"
|
|
755
|
+
|
|
756
|
+
#: geovisio/web/excluded_areas.py:230 geovisio/web/excluded_areas.py:242
|
|
757
|
+
msgid "Impossible to replace all Excluded Areas"
|
|
758
|
+
msgstr "Unmöglich, alle ausgeschlossenen Bereiche zu ersetzen"
|
|
759
|
+
|
|
760
|
+
#: geovisio/web/excluded_areas.py:232
|
|
761
|
+
msgid "Parameter for replacing all Excluded Areas should be a valid JSON"
|
|
762
|
+
msgstr ""
|
|
763
|
+
"Der Parameter zum Ersetzen aller ausgeschlossenen Bereiche sollte ein "
|
|
764
|
+
"gültiges JSON sein"
|
|
765
|
+
|
|
766
|
+
#: geovisio/web/items.py:1061
|
|
767
|
+
msgid "The collection has been deleted, impossible to add pictures to it"
|
|
768
|
+
msgstr "Die Sammlung wurde gelöscht, es ist unmöglich, ihr Bilder hinzuzufügen"
|
|
769
|
+
|
|
770
|
+
#: geovisio/web/upload_set.py:216
|
|
771
|
+
msgid "You're not authorized to list pictures in this upload set"
|
|
772
|
+
msgstr "Du bist nicht berechtigt, Bilder in diesem Upload-Set aufzulisten"
|
|
773
|
+
|
|
774
|
+
#: geovisio/web/upload_set.py:628
|
|
775
|
+
msgid ""
|
|
776
|
+
"Impossible to open file as image. The only supported image format is jpg."
|
|
777
|
+
msgstr ""
|
|
778
|
+
"Es ist nicht möglich, die Datei als Bild zu öffnen. Das einzige unterstützte "
|
|
779
|
+
"Bildformat ist jpg."
|
|
780
|
+
|
|
781
|
+
#: geovisio/web/upload_set.py:759
|
|
782
|
+
msgid "You're not authorized to delete this upload set"
|
|
783
|
+
msgstr "Du bist nicht berechtigt, dieses Upload-Set zu löschen"
|
|
784
|
+
|
|
785
|
+
#: geovisio/web/items.py:1052
|
|
786
|
+
#, python-format
|
|
787
|
+
msgid "Collection %(s)s wasn't found in database"
|
|
788
|
+
msgstr "Sammlung %(s)s wurde nicht in der Datenbank gefunden"
|
|
789
|
+
|
|
790
|
+
#: geovisio/web/excluded_areas.py:172 geovisio/web/excluded_areas.py:182
|
|
791
|
+
#: geovisio/web/excluded_areas.py:336 geovisio/web/excluded_areas.py:343
|
|
792
|
+
msgid "Impossible to create an Excluded Area"
|
|
793
|
+
msgstr "Es ist nicht möglich, einen Ausgeschlossenen Bereich zu erstellen"
|
|
794
|
+
|
|
795
|
+
#: geovisio/web/excluded_areas.py:272
|
|
796
|
+
msgid "You must be logged-in as admin to delete excluded areas"
|
|
797
|
+
msgstr ""
|
|
798
|
+
"Du musst als Administrator eingeloggt sein, um ausgeschlossene Bereiche zu "
|
|
799
|
+
"löschen"
|
|
800
|
+
|
|
801
|
+
#: geovisio/web/reports.py:286
|
|
802
|
+
msgid "Parameter for editing the Report should be a valid JSON"
|
|
803
|
+
msgstr ""
|
|
804
|
+
"Parameter für die Bearbeitung des Berichts sollte ein gültiges JSON sein"
|