geovisio 2.6.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.6.0 → geovisio-2.7.1}/.dockerignore +3 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/.gitignore +1 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/.gitlab-ci.yml +16 -63
- {geovisio-2.6.0 → geovisio-2.7.1}/CHANGELOG.md +74 -2
- geovisio-2.7.1/Dockerfile +55 -0
- geovisio-2.7.1/Makefile +35 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/PKG-INFO +17 -14
- {geovisio-2.6.0 → geovisio-2.7.1}/Procfile +1 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/README.md +3 -3
- geovisio-2.7.1/babel.cfg +2 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/bin/post_compile +1 -0
- geovisio-2.7.1/bin/run_production_api.sh +11 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/docker-compose-blurring.yml +1 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/docker-compose-full.yml +8 -4
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/docker-compose-keycloak.yml +1 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/docker-compose-minio.yml +2 -2
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/docker-entrypoint.sh +3 -0
- geovisio-2.7.1/docker/full-keycloak-auth/1-init-keycloak-db.sh +10 -0
- geovisio-2.7.1/docker/full-keycloak-auth/Dockerfile.keycloak +21 -0
- geovisio-2.7.1/docker/full-keycloak-auth/docker-compose.yml +213 -0
- geovisio-2.7.1/docker/full-keycloak-auth/env.example +34 -0
- geovisio-2.7.1/docker/full-keycloak-auth/keycloak-realm.json +2218 -0
- geovisio-2.7.1/docker/full-keycloak-auth/nginx.conf +94 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/full-osm-auth/docker-compose.yml +7 -8
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/full-osm-auth/env.example +3 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/full-osm-auth/nginx.conf +5 -0
- geovisio-2.7.1/docker-compose.yml +113 -0
- geovisio-2.7.1/docs/api/api.md +325 -0
- geovisio-2.7.1/docs/api/open_api.json +7012 -0
- geovisio-2.7.1/docs/api/openapi.md +3 -0
- geovisio-2.6.0/docs/80_STAC_Compatibility.md → geovisio-2.7.1/docs/dev/STAC_compatibility.md +19 -4
- geovisio-2.6.0/docs/19_Develop_server.md → geovisio-2.7.1/docs/dev/develop_server.md +104 -42
- geovisio-2.7.1/docs/dev/releases.md +21 -0
- geovisio-2.7.1/docs/images/geovisio-architecture-simple.excalidraw +2961 -0
- geovisio-2.7.1/docs/images/geovisio-architecture-simple.png +0 -0
- geovisio-2.7.1/docs/index.md +70 -0
- geovisio-2.7.1/docs/install/cli.md +241 -0
- geovisio-2.6.0/docs/07_Database_setup.md → geovisio-2.7.1/docs/install/database_setup.md +15 -11
- geovisio-2.6.0/docs/17_Blur_API.md → geovisio-2.7.1/docs/install/deep_dive/blur_api.md +3 -8
- geovisio-2.7.1/docs/install/deep_dive/excluded_areas.md +97 -0
- geovisio-2.7.1/docs/install/deep_dive/external_Identity_Providers.md +73 -0
- geovisio-2.6.0/docs/13_Pictures_processing.md → geovisio-2.7.1/docs/install/deep_dive/pictures_processing.md +22 -26
- geovisio-2.7.1/docs/install/install.md +99 -0
- geovisio-2.7.1/docs/install/running.md +135 -0
- geovisio-2.6.0/docs/11_Server_settings.md → geovisio-2.7.1/docs/install/settings.md +130 -36
- geovisio-2.7.1/docs/install/tutorials/running_docker_keycloak.md +150 -0
- geovisio-2.6.0/docker/full-osm-auth/readme.md → geovisio-2.7.1/docs/install/tutorials/running_docker_osm_auth.md +36 -22
- geovisio-2.7.1/docs/install/update.md +8 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/__init__.py +36 -7
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/cleanup.py +2 -2
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/db.py +1 -4
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/config_app.py +40 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/db_migrations.py +24 -3
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/templates/main.html +13 -13
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/templates/viewer.html +3 -3
- geovisio-2.7.1/geovisio/translations/de/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/de/LC_MESSAGES/messages.po +804 -0
- geovisio-2.7.1/geovisio/translations/el/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/el/LC_MESSAGES/messages.po +685 -0
- geovisio-2.7.1/geovisio/translations/en/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/en/LC_MESSAGES/messages.po +738 -0
- geovisio-2.7.1/geovisio/translations/es/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/es/LC_MESSAGES/messages.po +778 -0
- geovisio-2.7.1/geovisio/translations/fi/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/fi/LC_MESSAGES/messages.po +589 -0
- geovisio-2.7.1/geovisio/translations/fr/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/fr/LC_MESSAGES/messages.po +814 -0
- 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/ko/LC_MESSAGES/messages.mo +0 -0
- geovisio-2.7.1/geovisio/translations/ko/LC_MESSAGES/messages.po +685 -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.1/geovisio/translations/nl/LC_MESSAGES/messages.po +602 -0
- geovisio-2.7.1/geovisio/utils/__init__.py +1 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/auth.py +50 -11
- geovisio-2.7.1/geovisio/utils/db.py +65 -0
- geovisio-2.7.1/geovisio/utils/excluded_areas.py +83 -0
- geovisio-2.7.1/geovisio/utils/extent.py +30 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/fields.py +1 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/filesystems.py +0 -1
- geovisio-2.7.1/geovisio/utils/link.py +14 -0
- geovisio-2.7.1/geovisio/utils/params.py +20 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/pictures.py +110 -88
- geovisio-2.7.1/geovisio/utils/reports.py +171 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/sequences.py +262 -126
- geovisio-2.7.1/geovisio/utils/tokens.py +92 -0
- geovisio-2.7.1/geovisio/utils/upload_set.py +642 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/auth.py +37 -37
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/collections.py +304 -304
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/configuration.py +14 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/docs.py +276 -15
- geovisio-2.7.1/geovisio/web/excluded_areas.py +377 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/items.py +169 -112
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/map.py +104 -36
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/params.py +69 -26
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/pictures.py +14 -31
- geovisio-2.7.1/geovisio/web/reports.py +399 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/rss.py +13 -7
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/stac.py +129 -134
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/tokens.py +98 -109
- geovisio-2.7.1/geovisio/web/upload_set.py +771 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/users.py +100 -73
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/web/utils.py +28 -9
- geovisio-2.7.1/geovisio/workers/runner_pictures.py +514 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20221201_02_ZG8AR-camera-information.py +0 -1
- geovisio-2.7.1/migrations/20240611_01_jftHn-content-md5.rollback.sql +5 -0
- geovisio-2.7.1/migrations/20240611_01_jftHn-content-md5.sql +7 -0
- geovisio-2.7.1/migrations/20240612_01_yNcuE-upload-set.rollback.sql +6 -0
- geovisio-2.7.1/migrations/20240612_01_yNcuE-upload-set.sql +46 -0
- geovisio-2.7.1/migrations/20240617_01_tKtlx-md5-concurrent-index.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20240617_01_tKtlx-md5-concurrent-index.sql +8 -0
- geovisio-2.7.1/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.rollback.sql +30 -0
- geovisio-2.7.1/migrations/20240625_01_XMZ24-fix-sequence-stat-on-pic-insertion.sql +31 -0
- geovisio-2.7.1/migrations/20240708_01_Xn7IH-job-queue.rollback.sql +31 -0
- geovisio-2.7.1/migrations/20240708_01_Xn7IH-job-queue.sql +104 -0
- geovisio-2.7.1/migrations/20240715_01_Hca9V-upload-set-metadata.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20240715_01_Hca9V-upload-set-metadata.sql +5 -0
- geovisio-2.7.1/migrations/20240723_01_ePGFe-upload-set-files.rollback.sql +7 -0
- geovisio-2.7.1/migrations/20240723_01_ePGFe-upload-set-files.sql +29 -0
- geovisio-2.7.1/migrations/20240729_01_HALjj-upload-set-sort.rollback.sql +18 -0
- geovisio-2.7.1/migrations/20240729_01_HALjj-upload-set-sort.sql +18 -0
- geovisio-2.7.1/migrations/20240730_01_2BaCy-improve-deletion-triggers.rollback.sql +34 -0
- geovisio-2.7.1/migrations/20240730_01_2BaCy-improve-deletion-triggers.sql +53 -0
- geovisio-2.7.1/migrations/20240730_02_aRymN-rejection-status.rollback.sql +10 -0
- geovisio-2.7.1/migrations/20240730_02_aRymN-rejection-status.sql +16 -0
- geovisio-2.7.1/migrations/20240801_01_DOqmf-reports.rollback.sql +11 -0
- geovisio-2.7.1/migrations/20240801_01_DOqmf-reports.sql +100 -0
- geovisio-2.7.1/migrations/20240801_01_uKqPo-remove-files-delete-cascade.rollback.sql +13 -0
- geovisio-2.7.1/migrations/20240801_01_uKqPo-remove-files-delete-cascade.sql +13 -0
- geovisio-2.7.1/migrations/20240813_01_T1XkO-sequences-geom-splits.rollback.sql +42 -0
- geovisio-2.7.1/migrations/20240813_01_T1XkO-sequences-geom-splits.sql +56 -0
- geovisio-2.7.1/migrations/20240820_01_aB2ZK-exclusion-zones.rollback.sql +6 -0
- geovisio-2.7.1/migrations/20240820_01_aB2ZK-exclusion-zones.sql +49 -0
- geovisio-2.7.1/migrations/20240902_01_MDqSj-user-agent.rollback.sql +5 -0
- geovisio-2.7.1/migrations/20240902_01_MDqSj-user-agent.sql +10 -0
- geovisio-2.7.1/migrations/20240904_01_gFjlV-files-rejection-msg.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20240904_01_gFjlV-files-rejection-msg.sql +4 -0
- geovisio-2.7.1/migrations/20240905_01_C8F6U-conflicts.rollback.sql +13 -0
- geovisio-2.7.1/migrations/20240905_01_C8F6U-conflicts.sql +6 -0
- geovisio-2.7.1/migrations/20240905_01_E5Ki0-upload-set-delete.rollback.sql +5 -0
- geovisio-2.7.1/migrations/20240905_01_E5Ki0-upload-set-delete.sql +30 -0
- geovisio-2.7.1/migrations/20240909_01_Muc22-unique-grid-index.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20240909_01_Muc22-unique-grid-index.sql +5 -0
- geovisio-2.7.1/migrations/20240912_01_dAALm-account-index.rollback.sql +4 -0
- geovisio-2.7.1/migrations/20240912_01_dAALm-account-index.sql +4 -0
- 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.1/mkdocs.yml +73 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/pyproject.toml +17 -11
- geovisio-2.7.1/runtime.txt +1 -0
- geovisio-2.7.1/tests/__init__.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/conftest.py +249 -65
- geovisio-2.7.1/tests/data/crop.jpg +0 -0
- geovisio-2.7.1/tests/data/focal_zero.jpg +0 -0
- geovisio-2.7.1/tests/fixed_data/__init__.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/fixed_data/conftest.py +1 -1
- geovisio-2.7.1/tests/fixed_data/test_api_conformance.py +121 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/fixed_data/test_many_sequences.py +76 -53
- geovisio-2.7.1/tests/fixed_data/test_web_collections_one_collection.py +490 -0
- geovisio-2.7.1/tests/integration/__init__.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/integration/conftest.py +7 -5
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/integration/docker-compose-auth-test.yml +0 -1
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/integration/test_auth.py +54 -3
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/integration/test_s3.py +34 -38
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/integration/test_tokens.py +8 -9
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_admin_cli_cleanup.py +7 -13
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_db_migrations.py +15 -23
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_factory.py +64 -12
- geovisio-2.7.1/tests/test_utils_auth.py +31 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_utils_pictures.py +19 -21
- geovisio-2.7.1/tests/test_utils_reports.py +34 -0
- geovisio-2.7.1/tests/test_utils_upload_set.py +210 -0
- geovisio-2.7.1/tests/test_web_collections.py +1861 -0
- geovisio-2.7.1/tests/test_web_configuration.py +73 -0
- geovisio-2.7.1/tests/test_web_excluded_areas.py +410 -0
- geovisio-2.7.1/tests/test_web_items.py +2487 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_web_map.py +251 -199
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_web_pictures.py +33 -50
- geovisio-2.7.1/tests/test_web_reports.py +485 -0
- geovisio-2.7.1/tests/test_web_stac.py +151 -0
- geovisio-2.7.1/tests/test_web_upload_set.py +2739 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_web_users.py +56 -10
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_workers_runner_pictures.py +236 -240
- geovisio-2.6.0/Dockerfile +0 -35
- geovisio-2.6.0/Makefile +0 -12
- geovisio-2.6.0/docker-compose.yml +0 -37
- geovisio-2.6.0/docs/10_Install_Classic.md +0 -32
- geovisio-2.6.0/docs/10_Install_Scalingo.md +0 -9
- geovisio-2.6.0/docs/12_External_Identity_Providers.md +0 -82
- geovisio-2.6.0/docs/14_Running_Classic.md +0 -129
- geovisio-2.6.0/docs/14_Running_Docker.md +0 -123
- geovisio-2.6.0/docs/15_Pictures_requirements.md +0 -27
- geovisio-2.6.0/docs/16_Using_API.md +0 -206
- geovisio-2.6.0/docs/90_Releases.md +0 -25
- geovisio-2.6.0/docs/index.md +0 -7
- geovisio-2.6.0/geovisio/utils/__init__.py +0 -1
- geovisio-2.6.0/geovisio/utils/tokens.py +0 -97
- geovisio-2.6.0/geovisio/workers/runner_pictures.py +0 -480
- geovisio-2.6.0/mkdocs.yml +0 -60
- geovisio-2.6.0/runtime.txt +0 -1
- geovisio-2.6.0/tests/test_api_conformance.sh +0 -115
- geovisio-2.6.0/tests/test_web_collections.py +0 -2125
- geovisio-2.6.0/tests/test_web_configuration.py +0 -28
- geovisio-2.6.0/tests/test_web_items.py +0 -2374
- geovisio-2.6.0/tests/test_web_stac.py +0 -149
- {geovisio-2.6.0 → geovisio-2.7.1}/.flaskenv +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/.pre-commit-config.yaml +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/CODE_OF_CONDUCT.md +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/LICENSE +0 -0
- {geovisio-2.6.0/docker/full-osm-auth → geovisio-2.7.1/docker/full-keycloak-auth}/pictures_storage/.gitkeep +0 -0
- /geovisio-2.6.0/geovisio/web/__init__.py → /geovisio-2.7.1/docker/full-keycloak-auth/robots.txt +0 -0
- /geovisio-2.6.0/geovisio/workers/__init__.py → /geovisio-2.7.1/docker/full-osm-auth/pictures_storage/.gitkeep +0 -0
- /geovisio-2.6.0/tests/__init__.py → /geovisio-2.7.1/docker/full-osm-auth/robots.txt +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/docker/keycloak-realm.json +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/docs/images/geovisio_authentication_flow.svg +0 -0
- {geovisio-2.6.0/docker/full-osm-auth → geovisio-2.7.1/docs/install/tutorials}/osm_oauth_client.png +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/__init__.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/default_account_tokens.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/reorder_sequences.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/admin_cli/sequence_heading.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/errors.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/sentry.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/geovisio/utils/time.py +0 -0
- {geovisio-2.6.0/tests/fixed_data → geovisio-2.7.1/geovisio/web}/__init__.py +0 -0
- {geovisio-2.6.0/tests/integration → geovisio-2.7.1/geovisio/workers}/__init__.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/big_picture.png +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/big_picture.svg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/favicon.ico +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/favicon.svg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/logo.png +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/logo.svg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/logo_full.png +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/logo_full.svg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/images/sponsors.png +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20221201_01_wpCGc-initial-schema.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20221201_01_wpCGc-initial-schema.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20221222_01_fsB6f-add-account.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20221222_01_fsB6f-add-account.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230113_01_0co97-rm-metadata-duplicates.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230113_01_0co97-rm-metadata-duplicates.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230116_01_9PkjZ-add-oauth-provider.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230116_01_9PkjZ-add-oauth-provider.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230117_01_K71Pd-pictures-ts-index.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230117_01_K71Pd-pictures-ts-index.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230130_01_VRIv2-sequences-account.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230130_01_VRIv2-sequences-account.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230324_01_ba9WA-status.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230324_01_ba9WA-status.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230324_02_efgI6-picture-process.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230324_02_efgI6-picture-process.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230407_01_wofh1-computed-headings.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230407_01_wofh1-computed-headings.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230417_01_ZgLMY-add-exif-metadata-column-for-pictures.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230420_01_elaN3-remove-picture-and-sequence-file-paths.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230425_01_gYP77-pictures-edits-triggers.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230425_01_gYP77-pictures-edits-triggers.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230427_01_k5e5w-timestamps.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230427_01_k5e5w-timestamps.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230511_01_TdpKo-tokens.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230511_01_TdpKo-tokens.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230615_01_u7aRf-pic-delete-cascade.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230615_01_u7aRf-pic-delete-cascade.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230623_01_y1SiQ-pic-deletion-task.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230623_01_y1SiQ-pic-deletion-task.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230629_01_ZdB3i-compute-heading-0.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230711_01_JGSPB-inserted-at-index.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230711_01_JGSPB-inserted-at-index.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230720_01_EyQ0e-sequences-summary.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230720_01_EyQ0e-sequences-summary.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230803_01_aXusm-fix-sequence-computed.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20230803_01_aXusm-fix-sequence-computed.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231018_01_4G3YE-pictures-exiv2.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231018_01_4G3YE-pictures-exiv2.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231103_01_ZVKEm-update-seq-on-pic-change.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231110_01_3p070-jobs-error.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231110_01_3p070-jobs-error.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231121_01_v6oBF-more-specific-triggers.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231121_01_v6oBF-more-specific-triggers.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231121_02_1uZXT-deleted-tag.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20231121_02_1uZXT-deleted-tag.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240115_01_FatLR-token-delete-cascade.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240115_01_FatLR-token-delete-cascade.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240220_01_9wZs0-sequence-current-sort.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240220_01_9wZs0-sequence-current-sort.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240223_01_LsMHB-remove-binary-fields.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240226_01_8iXl1-track-changes.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240226_01_8iXl1-track-changes.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240229_01_SgfQY-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240308_01_aF0Jb-migrate-sequence-geom-multi-linestring.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240409_01_jnhra-pictures-grid.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240409_01_jnhra-pictures-grid.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240416_01_FpyGs-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240416_02_A5KzC-fill-pictures-stats-on-sequences.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240507_01_eBfqZ-refresh-table.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240507_01_eBfqZ-refresh-table.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240507_02_dzVET-picture-grid-public.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240507_02_dzVET-picture-grid-public.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240514_01_IT7DD-picture-delete-cascade.rollback.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/20240514_01_IT7DD-picture-delete-cascade.sql +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/data/readme.md +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/migrations/data/sensor_data.json +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/1.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/1_blurred.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/2.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/3.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/4.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/5.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/b1.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/b2.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/c1.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/d1.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e1.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e1_artist.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e1_without_exif.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e2.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e3.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e4.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/e5.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/data/invalid_exif.jpg +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_utils_filesystems.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/tests/test_web_params.py +0 -0
- {geovisio-2.6.0 → geovisio-2.7.1}/yoyo.ini +0 -0
|
@@ -2,7 +2,7 @@ variables:
|
|
|
2
2
|
DOCKER_BUILDKIT: 1 # use buildkit for better performance
|
|
3
3
|
DOCKER_DRIVER: overlay2 # better docker driver to avoid copying too many files on each run
|
|
4
4
|
GITLAB_REGISTRY: registry.gitlab.com # We use docker.io for official images and gitlab's registry to store temporary images
|
|
5
|
-
DOCKER_IMAGE_NAME:
|
|
5
|
+
DOCKER_IMAGE_NAME: panoramax/api
|
|
6
6
|
REPO_NAME: panoramax/server/api
|
|
7
7
|
CI_IMAGE_CACHE: $GITLAB_REGISTRY/$REPO_NAME:build_cache
|
|
8
8
|
DOCKER_TLS_CERTDIR: ""
|
|
@@ -19,7 +19,7 @@ code-fmt:
|
|
|
19
19
|
stage: test
|
|
20
20
|
only:
|
|
21
21
|
- merge_requests
|
|
22
|
-
image: python:3.
|
|
22
|
+
image: python:3.10-alpine
|
|
23
23
|
script:
|
|
24
24
|
- pip install black
|
|
25
25
|
- black --fast --check .
|
|
@@ -35,7 +35,7 @@ test-in-docker:
|
|
|
35
35
|
image: docker:latest
|
|
36
36
|
services:
|
|
37
37
|
- docker:dind
|
|
38
|
-
- postgis/postgis:
|
|
38
|
+
- postgis/postgis:15-3.4
|
|
39
39
|
variables:
|
|
40
40
|
POSTGRES_DB: geovisio_test
|
|
41
41
|
POSTGRES_USER: geovisio
|
|
@@ -79,9 +79,9 @@ test:
|
|
|
79
79
|
- when: on_success
|
|
80
80
|
|
|
81
81
|
stage: test
|
|
82
|
-
image: python:3.
|
|
82
|
+
image: python:3.10
|
|
83
83
|
services:
|
|
84
|
-
- postgis/postgis:
|
|
84
|
+
- postgis/postgis:15-3.4
|
|
85
85
|
variables:
|
|
86
86
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
87
87
|
POSTGRES_DB: geovisio_test
|
|
@@ -93,38 +93,13 @@ test:
|
|
|
93
93
|
FS_PERMANENT_URL: "/tmp/geovisio_test/permanent/"
|
|
94
94
|
FS_DERIVATES_URL: "/tmp/geovisio_test/derivates/"
|
|
95
95
|
script:
|
|
96
|
+
- apt update && apt install -y gettext
|
|
96
97
|
- mkdir -p /tmp/geovisio_test/tmp /tmp/geovisio_test/derivates /tmp/geovisio_test/permanent
|
|
97
98
|
- pip install -e .[dev]
|
|
99
|
+
- make i18n-po2code
|
|
98
100
|
- pytest -vv -m "not skipci"
|
|
99
101
|
|
|
100
102
|
|
|
101
|
-
test-api-conformance:
|
|
102
|
-
rules:
|
|
103
|
-
- if: $CI_COMMIT_TAG
|
|
104
|
-
when: never
|
|
105
|
-
- when: on_success
|
|
106
|
-
|
|
107
|
-
stage: test
|
|
108
|
-
image: python:3.10
|
|
109
|
-
services:
|
|
110
|
-
- postgis/postgis:latest
|
|
111
|
-
variables:
|
|
112
|
-
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
113
|
-
POSTGRES_DB: geovisio_test
|
|
114
|
-
POSTGRES_USER: geovisio
|
|
115
|
-
POSTGRES_PASSWORD: geovisiopass
|
|
116
|
-
POSTGRES_HOST_AUTH_METHOD: trust
|
|
117
|
-
DB_URL: "postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgis-postgis/$POSTGRES_DB"
|
|
118
|
-
FS_TMP_URL: "/tmp/geovisio_test/tmp/"
|
|
119
|
-
FS_PERMANENT_URL: "/tmp/geovisio_test/permanent/"
|
|
120
|
-
FS_DERIVATES_URL: "/tmp/geovisio_test/derivates/"
|
|
121
|
-
script:
|
|
122
|
-
- apt update && apt install -y wget jq
|
|
123
|
-
- mkdir -p /tmp/geovisio_test/tmp /tmp/geovisio_test/derivates /tmp/geovisio_test/permanent
|
|
124
|
-
- pip install .[dev,api-conformance]
|
|
125
|
-
- ./tests/test_api_conformance.sh
|
|
126
|
-
|
|
127
|
-
|
|
128
103
|
publish-develop:
|
|
129
104
|
rules:
|
|
130
105
|
# run job only for fork that have the credentials to pull images from the gitlab-registry
|
|
@@ -136,7 +111,7 @@ publish-develop:
|
|
|
136
111
|
image: docker:latest
|
|
137
112
|
services:
|
|
138
113
|
- docker:dind
|
|
139
|
-
- postgis/postgis:
|
|
114
|
+
- postgis/postgis:15-3.4
|
|
140
115
|
variables:
|
|
141
116
|
POSTGRES_DB: geovisio_test
|
|
142
117
|
POSTGRES_USER: geovisio
|
|
@@ -155,10 +130,8 @@ publish-develop:
|
|
|
155
130
|
--cache-from "type=registry,ref=$CI_IMAGE_CACHE"
|
|
156
131
|
--cache-to "type=registry,mode=max,ref=$CI_IMAGE_CACHE"
|
|
157
132
|
--tag "$DOCKER_IMAGE_NAME:develop"
|
|
158
|
-
--
|
|
159
|
-
--
|
|
160
|
-
--label "org.opencontainers.image.created=$CI_JOB_STARTED_AT"
|
|
161
|
-
--label "org.opencontainers.image.revision=$CI_COMMIT_SHORT_SHA"
|
|
133
|
+
--build-arg GIT_DESCRIBE=$GIT_DESCRIBE
|
|
134
|
+
--build-arg BUILD_DATE=$CI_JOB_STARTED_AT
|
|
162
135
|
--load
|
|
163
136
|
--progress=plain
|
|
164
137
|
.
|
|
@@ -183,7 +156,7 @@ publish-tag-and-latest:
|
|
|
183
156
|
image: docker:latest
|
|
184
157
|
services:
|
|
185
158
|
- docker:dind
|
|
186
|
-
- postgis/postgis:
|
|
159
|
+
- postgis/postgis:15-3.4
|
|
187
160
|
variables:
|
|
188
161
|
POSTGRES_DB: geovisio_test
|
|
189
162
|
POSTGRES_USER: geovisio
|
|
@@ -203,10 +176,8 @@ publish-tag-and-latest:
|
|
|
203
176
|
--cache-to "type=registry,mode=max,ref=$CI_IMAGE_CACHE"
|
|
204
177
|
--tag "$DOCKER_IMAGE_NAME:$CI_COMMIT_REF_NAME"
|
|
205
178
|
--tag "$DOCKER_IMAGE_NAME:latest"
|
|
206
|
-
--
|
|
207
|
-
--
|
|
208
|
-
--label "org.opencontainers.image.created=$CI_JOB_STARTED_AT"
|
|
209
|
-
--label "org.opencontainers.image.revision=$GIT_DESCRIBE"
|
|
179
|
+
--build-arg GIT_DESCRIBE=$GIT_DESCRIBE
|
|
180
|
+
--build-arg BUILD_DATE=$CI_JOB_STARTED_AT
|
|
210
181
|
--load
|
|
211
182
|
--progress=plain
|
|
212
183
|
.
|
|
@@ -227,27 +198,9 @@ publish-on-pypi:
|
|
|
227
198
|
only:
|
|
228
199
|
- tags
|
|
229
200
|
stage: deploy
|
|
230
|
-
image: python:3.
|
|
201
|
+
image: python:3.10
|
|
231
202
|
script:
|
|
203
|
+
- apt update && apt install -y gettext
|
|
232
204
|
- pip install .[build]
|
|
205
|
+
- make i18n-po2code
|
|
233
206
|
- flit publish # use [flit](https://flit.pypa.io/) and FLIT_USERNAME/FLIT_PASSWORD env var
|
|
234
|
-
|
|
235
|
-
pages:
|
|
236
|
-
stage: deploy
|
|
237
|
-
only:
|
|
238
|
-
- develop
|
|
239
|
-
image: python:3.9
|
|
240
|
-
variables:
|
|
241
|
-
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
242
|
-
cache:
|
|
243
|
-
paths:
|
|
244
|
-
- $PIP_CACHE_DIR
|
|
245
|
-
variables:
|
|
246
|
-
CI: 1
|
|
247
|
-
script:
|
|
248
|
-
- pip install -e .[docs]
|
|
249
|
-
- mkdocs build --strict
|
|
250
|
-
artifacts:
|
|
251
|
-
paths:
|
|
252
|
-
- site
|
|
253
|
-
publish: site
|
|
@@ -9,7 +9,77 @@ Before _1.6.0_, [Viewer](https://gitlab.com/panoramax/clients/web-viewer) was em
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
-
## [2.
|
|
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
|
+
|
|
37
|
+
## [2.7.0] - 2024-10-10
|
|
38
|
+
|
|
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. ⚠
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- The API and picture workers now use connection pool to reduce the load on the database and improve the performances. The connection pool can be configured using `DB_MIN_CNX`/`DB_MAX_CNX`.
|
|
44
|
+
- Add a way to use Gunicorn instead of waitress as WSGI server. Gunicorn can use processes instead of threads, which can result in better performance for high load usage.
|
|
45
|
+
- The ID of the associated accounts are now returned in the STAC response in an `id` field in the `providers` field.
|
|
46
|
+
- Add a whole new way of uploading pictures, using the new `/api/upload_sets` APIs. The pictures added to the uploaded will be dispatched to one or more collection on completion.
|
|
47
|
+
- You can create and manage _Reports_ (issues with pictures or sequences) through `/api/reports` routes. Reports can be created anonymously or by authenticated users, can automatically hide faulty pictures or sequences, and be tracked over time for statistics. **Note** that reports management (beyond creation, which can be done through _web viewer_) is only available through HTTP API as now, no CLI or front-end is offered as now.
|
|
48
|
+
- You can create and manage _Excluded areas_ (areas where people should not upload pictures) through `/api/configuration/excluded_areas` and `/api/users/me/excluded_areas` routes. Excluded areas can be defined for everyone, or by user, for fine management. **Note** that this is only manageable through HTTP API, no CLI or front-end is offered as now.
|
|
49
|
+
- An user account can be marked with an `admin` role in database to enable some features (access to all reports, edit excluded areas).
|
|
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).
|
|
51
|
+
- Routes `/api` and `/api/configuration` return API version in a `geovisio_version` attribute (example: `2.6.0-12-ab12cd34`).
|
|
52
|
+
- Routes returning collections display a `geovisio:upload-software` property showing which client has been used to create the collection (for meta-catalog statistics).
|
|
53
|
+
- Handle user agent `GeoVisioCli` and `PanoramaxCli` as the same `cli` software.
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- Flask session has been set to `permanent`, thus the session cookie will have the lifetime defined by `FLASK_PERMANENT_SESSION_LIFETIME` (default to 7 days).
|
|
58
|
+
- Reject duplicates pictures (same md5). A configuration `API_ACCEPT_DUPLICATE` can make the instance accepts duplicates as before.
|
|
59
|
+
- The background jobs have been changed, it should be transparent for the administrator, but they now rely on the new `job_queue` table, and can handle more types of async jobs.
|
|
60
|
+
- More metadata can be set on API (name, description, logo and main color) in `API_SUMMARY` setting. This is served through `/api/configuration` and `/api` routes for client-side display.
|
|
61
|
+
- Maximum authorized distance between two consecutive pictures in a same segment of a sequence is now 75 meters (distance at 135km/h during two seconds). This only changes map rendering, to avoid sequences cuts over motorways.
|
|
62
|
+
- Sequences and Upload Sets creation now stores `User-Agent` HTTP requests headers.
|
|
63
|
+
- Minimal required PostGIS version is now 3.4 with PostgreSQL 12.
|
|
64
|
+
- Almost all database queries now have a statement timeout (default to 5mn).
|
|
65
|
+
- Updated Geopic Tag Reader to 1.3.0 to solve various issues related to pictures timestamps.
|
|
66
|
+
- In vector tiles style, `interpolate-hcl` expression for grid colouring has been replaced into `interpolate` for broader compatibility with QGIS versions.
|
|
67
|
+
- A new `geovisio:length_km` property is available on `/api/collections/:id`, `/api/users/:id/collection` and `/api/users/me/collection` route, giving the length of sequence in kilometers.
|
|
68
|
+
- ⚠️ The docker images are now `panoramax/api` instead of `geovisio/api`.
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
|
|
72
|
+
- RSS feed was producing invalid viewer links (missing coordinates) since sequences are represented as MultiLineString in database.
|
|
73
|
+
- Fix a bug where we could add pictures to an already deleted sequence.
|
|
74
|
+
- Fix a bug where the `pictures_grid` view was refreshed too frequently (and the computation can be expensive for the database).
|
|
75
|
+
|
|
76
|
+
### Removed
|
|
77
|
+
|
|
78
|
+
- The `test-api-conformance.sh` are now regular python tests
|
|
79
|
+
- Removed on-the-fly JPEG to WebP conversion (too slow). WebP might do an unexpected come-back in the future 😉
|
|
80
|
+
- The list of users has been removed from the API entrypoint (`/`) as the list is ever growning, but it can still be accessed through the `/users` endpoint.
|
|
81
|
+
|
|
82
|
+
## [2.6.0] - 2024-05-17
|
|
13
83
|
|
|
14
84
|
⚠️ Important Note: This version add several quite long migrations. After the migration are run, you should run as a database administrator:
|
|
15
85
|
|
|
@@ -502,7 +572,9 @@ FLASK_APP="src" flask process-sequences
|
|
|
502
572
|
- Viewer based on Photo Sphere Viewer automatically calling API to search and retrieve pictures
|
|
503
573
|
- Dockerfile for easy server setup
|
|
504
574
|
|
|
505
|
-
[Unreleased]: https://gitlab.com/panoramax/server/api/-/compare/2.
|
|
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
|
|
577
|
+
[2.7.0]: https://gitlab.com/panoramax/server/api/-/compare/2.6.0...2.7.0
|
|
506
578
|
[2.6.0]: https://gitlab.com/panoramax/server/api/-/compare/2.5.0...2.6.0
|
|
507
579
|
[2.5.0]: https://gitlab.com/panoramax/server/api/-/compare/2.4.0...2.5.0
|
|
508
580
|
[2.4.0]: https://gitlab.com/panoramax/server/api/-/compare/2.3.1...2.4.0
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
FROM python:3.11-slim
|
|
2
|
+
|
|
3
|
+
# Stable metadata
|
|
4
|
+
LABEL org.opencontainers.image.title="GeoVisio API"
|
|
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
|
+
LABEL org.opencontainers.image.authors="Adrien PAVIE <panieravide@riseup.net>"
|
|
7
|
+
LABEL org.opencontainers.image.source="https://gitlab.com/panoramax/server/api.git"
|
|
8
|
+
LABEL org.opencontainers.image.documentation="https://docs.panoramax.fr/api/"
|
|
9
|
+
LABEL org.opencontainers.image.vendor="Panoramax"
|
|
10
|
+
LABEL org.opencontainers.image.licenses="MIT"
|
|
11
|
+
LABEL org.opencontainers.image.url="https://panoramax.fr/"
|
|
12
|
+
|
|
13
|
+
# Install system dependencies
|
|
14
|
+
# and create a `geovisio` user, to run the app as non root user
|
|
15
|
+
RUN apt update \
|
|
16
|
+
&& apt install -y git gettext make \
|
|
17
|
+
&& pip install waitress gunicorn Babel \
|
|
18
|
+
&& rm -rf /var/lib/apt/lists/* \
|
|
19
|
+
&& mkdir -p /opt/geovisio /data/geovisio \
|
|
20
|
+
&& groupadd --gid 1000 geovisio \
|
|
21
|
+
&& useradd --uid 1000 --gid 1000 -m geovisio \
|
|
22
|
+
&& chown -R geovisio:geovisio /opt/geovisio /data/geovisio
|
|
23
|
+
|
|
24
|
+
WORKDIR /opt/geovisio
|
|
25
|
+
USER geovisio
|
|
26
|
+
|
|
27
|
+
# Install Python dependencies
|
|
28
|
+
COPY ./README.md ./LICENSE ./pyproject.toml ./
|
|
29
|
+
COPY ./geovisio/__init__.py ./geovisio/
|
|
30
|
+
RUN pip install -e . --user
|
|
31
|
+
|
|
32
|
+
# Add source files
|
|
33
|
+
COPY ./images ./images/
|
|
34
|
+
COPY ./docker/docker-entrypoint.sh ./
|
|
35
|
+
COPY ./geovisio ./geovisio
|
|
36
|
+
COPY ./migrations ./migrations
|
|
37
|
+
COPY ./Makefile ./
|
|
38
|
+
|
|
39
|
+
# Generate i18n compiled files
|
|
40
|
+
USER root
|
|
41
|
+
RUN make i18n-po2code
|
|
42
|
+
USER geovisio
|
|
43
|
+
|
|
44
|
+
# Retrieve build metadata
|
|
45
|
+
ARG GIT_DESCRIBE
|
|
46
|
+
LABEL org.opencontainers.image.revision=$GIT_DESCRIBE
|
|
47
|
+
|
|
48
|
+
# Environment variables
|
|
49
|
+
ENV FLASK_APP=geovisio
|
|
50
|
+
ENV FS_URL="/data/geovisio"
|
|
51
|
+
ENV API_GIT_VERSION=$GIT_DESCRIBE
|
|
52
|
+
|
|
53
|
+
# Expose service
|
|
54
|
+
EXPOSE 5000
|
|
55
|
+
ENTRYPOINT ["./docker-entrypoint.sh"]
|
geovisio-2.7.1/Makefile
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
.DEFAULT_GOAL := help
|
|
2
|
+
|
|
3
|
+
.PHONY: run-all-compose
|
|
4
|
+
|
|
5
|
+
run-all-compose: ## Run all services with docker compose
|
|
6
|
+
docker-compose -f docker/docker-compose-full.yml up
|
|
7
|
+
|
|
8
|
+
fmt: ## Run code formatting
|
|
9
|
+
black .
|
|
10
|
+
|
|
11
|
+
generate-swagger: ## Generate swagger documentation
|
|
12
|
+
FS_URL=/tmp flask -e test.env generate-api-schema > docs/api/open_api.json
|
|
13
|
+
|
|
14
|
+
generate-doc: generate-swagger ## Generate mkdocs documentation
|
|
15
|
+
mkdocs build --strict
|
|
16
|
+
|
|
17
|
+
serve-doc: generate-swagger ## Serve mkdocs documentation
|
|
18
|
+
mkdocs serve
|
|
19
|
+
|
|
20
|
+
help: ## Print this help message
|
|
21
|
+
@grep -E '^[a-zA-Z_-]+:.*## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
22
|
+
|
|
23
|
+
i18n-code2pot:
|
|
24
|
+
pybabel extract -F babel.cfg -o geovisio/translations/messages.pot geovisio/
|
|
25
|
+
msginit --locale=en --no-translator --input=geovisio/translations/messages.pot --output=geovisio/translations/en/LC_MESSAGES/messages.po
|
|
26
|
+
|
|
27
|
+
i18n-po2code:
|
|
28
|
+
pybabel compile -d geovisio/translations/
|
|
29
|
+
|
|
30
|
+
build-docker:
|
|
31
|
+
docker buildx build \
|
|
32
|
+
--build-arg GIT_DESCRIBE=`git describe` \
|
|
33
|
+
--label=org.opencontainers.image.created=`date -u +'%Y-%m-%dT%H:%M:%SZ'` \
|
|
34
|
+
--label=org.opencontainers.image.version=`cat geovisio/__init__.py | grep -e '^__version__' | cut -d \" -f 2` \
|
|
35
|
+
-t panoramax/api:develop .
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: geovisio
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.1
|
|
4
4
|
Summary: GeoVisio API - Main
|
|
5
5
|
Author-email: Adrien PAVIE <panieravide@riseup.net>, Antoine Desbordes <antoine.desbordes@gmail.com>
|
|
6
|
-
Requires-Python: >=3.
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: License :: OSI Approved :: MIT License
|
|
9
9
|
Requires-Dist: Flask ~= 2.3
|
|
@@ -20,43 +20,46 @@ Requires-Dist: psycopg-binary ~= 3.1
|
|
|
20
20
|
Requires-Dist: python-dotenv ~= 0.21
|
|
21
21
|
Requires-Dist: authlib ~= 1.2
|
|
22
22
|
Requires-Dist: Flask-Executor ~= 1.0
|
|
23
|
-
Requires-Dist: geopic-tag-reader[write-exif]
|
|
23
|
+
Requires-Dist: geopic-tag-reader[write-exif] == 1.3.1
|
|
24
24
|
Requires-Dist: rfeed ~= 1.1.1
|
|
25
25
|
Requires-Dist: sentry-sdk[flask] ~= 1.31
|
|
26
|
-
Requires-Dist: pygeofilter[backend-native] ~= 0.2.
|
|
26
|
+
Requires-Dist: pygeofilter[backend-native] ~= 0.2.4
|
|
27
27
|
Requires-Dist: python-dateutil ~= 2.8.2
|
|
28
28
|
Requires-Dist: tzdata ~= 2024.1
|
|
29
29
|
Requires-Dist: croniter ~= 2.0.5
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
30
|
+
Requires-Dist: pydantic ~= 2.7
|
|
31
|
+
Requires-Dist: pydantic-extra-types ~= 2.7
|
|
32
|
+
Requires-Dist: flask-babel ~= 4.0.0
|
|
33
|
+
Requires-Dist: geojson-pydantic ~= 1.1.0
|
|
33
34
|
Requires-Dist: flit ~= 3.9.0 ; extra == "build"
|
|
34
35
|
Requires-Dist: coverage ~= 6.5 ; extra == "dev"
|
|
35
36
|
Requires-Dist: protobuf ~= 4.21 ; extra == "dev"
|
|
36
37
|
Requires-Dist: mapbox-vector-tile ~= 2.0 ; extra == "dev"
|
|
37
38
|
Requires-Dist: pystac ~= 1.9 ; extra == "dev"
|
|
38
|
-
Requires-Dist: pytest ~=
|
|
39
|
+
Requires-Dist: pytest ~= 8.3 ; extra == "dev"
|
|
39
40
|
Requires-Dist: pytest-datafiles ~= 2.0 ; extra == "dev"
|
|
40
|
-
Requires-Dist: pyexiv2 ~= 2.
|
|
41
|
+
Requires-Dist: pyexiv2 ~= 2.15 ; extra == "dev"
|
|
41
42
|
Requires-Dist: testcontainers ~= 4.1 ; extra == "dev"
|
|
42
43
|
Requires-Dist: requests-mock ~= 1.11 ; extra == "dev"
|
|
43
44
|
Requires-Dist: black ~= 24.1 ; extra == "dev"
|
|
44
45
|
Requires-Dist: pre-commit ~= 3.3 ; extra == "dev"
|
|
45
46
|
Requires-Dist: pyyaml ~= 6.0 ; extra == "dev"
|
|
47
|
+
Requires-Dist: openapi-spec-validator ~= 0.7 ; extra == "dev"
|
|
48
|
+
Requires-Dist: stac-api-validator ~= 0.6.3 ; extra == "dev"
|
|
46
49
|
Requires-Dist: mkdocs-material ~= 9.5.21 ; extra == "docs"
|
|
50
|
+
Requires-Dist: mkdocs-swagger-ui-tag ~= 0.6.10 ; extra == "docs"
|
|
47
51
|
Project-URL: Home, https://gitlab.com/panoramax/server/api
|
|
48
52
|
Project-URL: Source Code, https://gitlab.com/panoramax/server/api
|
|
49
|
-
Provides-Extra: api-conformance
|
|
50
53
|
Provides-Extra: build
|
|
51
54
|
Provides-Extra: dev
|
|
52
55
|
Provides-Extra: docs
|
|
53
56
|
|
|
54
57
|
#  Panoramax
|
|
55
58
|
|
|
56
|
-
__Panoramax__ is a digital resource for sharing and
|
|
59
|
+
__Panoramax__ is a digital resource for sharing and using 📍📷 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/).
|
|
57
60
|
|
|
58
61
|
|
|
59
|
-
# 🌐
|
|
62
|
+
# 🌐 Panoramax API
|
|
60
63
|
|
|
61
64
|
This repository only contains __the backend and web API__ of a Panoramax instance.
|
|
62
65
|
|
|
@@ -74,7 +77,7 @@ This repository only contains __the backend and web API__ of a Panoramax instanc
|
|
|
74
77
|
|
|
75
78
|
## Install & run
|
|
76
79
|
|
|
77
|
-
Our [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs) will help you install, configure and run a
|
|
80
|
+
Our [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs) will help you install, configure and run a Panoramax instance.
|
|
78
81
|
|
|
79
82
|
If 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).
|
|
80
83
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
web:
|
|
1
|
+
web: bin/run_production_api.sh
|
|
2
2
|
|
|
3
3
|
# After having poped the API, we upgrade the database schema
|
|
4
4
|
# If the postdeploy fails, scalingo will not expose the new app, and will keep the old one
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#  Panoramax
|
|
2
2
|
|
|
3
|
-
__Panoramax__ is a digital resource for sharing and
|
|
3
|
+
__Panoramax__ is a digital resource for sharing and using 📍📷 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/).
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
# 🌐
|
|
6
|
+
# 🌐 Panoramax API
|
|
7
7
|
|
|
8
8
|
This repository only contains __the backend and web API__ of a Panoramax instance.
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ This repository only contains __the backend and web API__ of a Panoramax instanc
|
|
|
21
21
|
|
|
22
22
|
## Install & run
|
|
23
23
|
|
|
24
|
-
Our [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs) will help you install, configure and run a
|
|
24
|
+
Our [documentation](https://gitlab.com/panoramax/server/api/-/tree/develop/docs) will help you install, configure and run a Panoramax instance.
|
|
25
25
|
|
|
26
26
|
If 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).
|
|
27
27
|
|
geovisio-2.7.1/babel.cfg
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# script called by the Scalingo Procfile
|
|
4
|
+
# use the `USE_GUNICORN` env var to chose between gunicorn and waitress
|
|
5
|
+
|
|
6
|
+
if [ "${USE_GUNICORN}" == "1" ]; then
|
|
7
|
+
DB_CHECK_SCHEMA=false gunicorn --workers "${NB_API_WORKERS:-5}" --threads "${NB_API_THREADS:-4}" -b ":$PORT" 'geovisio:create_app()'
|
|
8
|
+
else
|
|
9
|
+
# use waitress
|
|
10
|
+
DB_CHECK_SCHEMA=false python3 -m waitress --port "$PORT" --url-scheme=https --threads="${NB_API_THREADS:-4}" --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'
|
|
11
|
+
fi
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
# This docker-compose needs to be used alongside a docker containing geovisio API
|
|
6
6
|
# For instance with docker-compose-full.yml
|
|
7
7
|
# docker compose -f docker/docker-compose-full.yml -f docker/docker-compose-blurring.yml up
|
|
8
|
-
version: "3"
|
|
9
8
|
services:
|
|
10
9
|
blurring:
|
|
11
10
|
image: geovisio/blurring:develop
|
|
@@ -23,6 +22,7 @@ services:
|
|
|
23
22
|
retries: 10
|
|
24
23
|
extra_hosts:
|
|
25
24
|
- "localhost:host-gateway"
|
|
25
|
+
restart: always
|
|
26
26
|
|
|
27
27
|
# Add a configuration to the API/workers to tell them the location of the blurring API
|
|
28
28
|
api:
|
|
@@ -28,9 +28,10 @@ services:
|
|
|
28
28
|
- 8182:8182
|
|
29
29
|
volumes:
|
|
30
30
|
- ./keycloak-realm.json:/opt/keycloak/data/import/geovisio_realm.json
|
|
31
|
+
restart: always
|
|
31
32
|
|
|
32
33
|
migrations:
|
|
33
|
-
image:
|
|
34
|
+
image: panoramax/api:latest
|
|
34
35
|
build:
|
|
35
36
|
context: ..
|
|
36
37
|
dockerfile: Dockerfile
|
|
@@ -44,7 +45,7 @@ services:
|
|
|
44
45
|
condition: service_healthy
|
|
45
46
|
|
|
46
47
|
api:
|
|
47
|
-
image:
|
|
48
|
+
image: panoramax/api:latest
|
|
48
49
|
build:
|
|
49
50
|
context: ..
|
|
50
51
|
dockerfile: Dockerfile
|
|
@@ -76,14 +77,16 @@ services:
|
|
|
76
77
|
- pic_data:/data/geovisio
|
|
77
78
|
extra_hosts:
|
|
78
79
|
- "localhost:host-gateway"
|
|
80
|
+
restart: always
|
|
79
81
|
|
|
80
82
|
website:
|
|
81
|
-
image:
|
|
83
|
+
image: panoramax/website:latest
|
|
82
84
|
environment:
|
|
83
85
|
VITE_INSTANCE_NAME: GeoVisio Docker
|
|
84
86
|
VITE_API_URL: http://localhost:5000/
|
|
85
87
|
ports:
|
|
86
88
|
- 3000:3000
|
|
89
|
+
restart: always
|
|
87
90
|
|
|
88
91
|
# Background workers used to process pictures in the background
|
|
89
92
|
# calling the blur API and generating derivates (SD picture and tiles for faster rendering in photosphereviewer)
|
|
@@ -91,7 +94,7 @@ services:
|
|
|
91
94
|
# Note: the blurring is done only if API_BLUR_URL is configured, and it's not the case in this docker compose
|
|
92
95
|
# To have blurring, the docker-compose-blurring.yml file needs to be added (cf documentation in this docker compose file)
|
|
93
96
|
background-worker:
|
|
94
|
-
image:
|
|
97
|
+
image: panoramax/api:latest
|
|
95
98
|
build:
|
|
96
99
|
context: ..
|
|
97
100
|
dockerfile: Dockerfile
|
|
@@ -132,6 +135,7 @@ services:
|
|
|
132
135
|
- 5445:5432
|
|
133
136
|
volumes:
|
|
134
137
|
- postgres_data:/var/lib/postgresql/data/
|
|
138
|
+
restart: always
|
|
135
139
|
|
|
136
140
|
volumes:
|
|
137
141
|
postgres_data:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
services:
|
|
2
2
|
minio:
|
|
3
|
-
image: quay.io/minio/minio:RELEASE.
|
|
3
|
+
image: quay.io/minio/minio:RELEASE.2024-05-28T17-19-04Z
|
|
4
4
|
command: server --console-address ":9001" /mnt/data
|
|
5
5
|
ports:
|
|
6
6
|
- 9000
|
|
@@ -15,6 +15,7 @@ services:
|
|
|
15
15
|
interval: 2s
|
|
16
16
|
timeout: 5s
|
|
17
17
|
retries: 3
|
|
18
|
+
restart: always
|
|
18
19
|
|
|
19
20
|
create-minio-buckets:
|
|
20
21
|
image: minio/mc
|
|
@@ -27,7 +28,6 @@ services:
|
|
|
27
28
|
/usr/bin/mc mb myminio/panoramax-public;
|
|
28
29
|
/usr/bin/mc mb myminio/panoramax-private;
|
|
29
30
|
/usr/bin/mc anonymous set download myminio/panoramax-public;
|
|
30
|
-
exit 0;
|
|
31
31
|
"
|
|
32
32
|
|
|
33
33
|
volumes:
|
|
@@ -22,6 +22,9 @@ case $command in
|
|
|
22
22
|
"api")
|
|
23
23
|
python3 -m waitress --port 5000 --threads=${NB_API_THREADS:-4} --call 'geovisio:create_app'
|
|
24
24
|
;;
|
|
25
|
+
"gunicorn-api")
|
|
26
|
+
gunicorn --workers ${NB_API_WORKERS:-5} --threads ${NB_API_THREADS:-4} -b :5000 'geovisio:create_app()'
|
|
27
|
+
;;
|
|
25
28
|
"ssl-api")
|
|
26
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'
|
|
27
30
|
;;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
# create a custom schema for keycloak
|
|
5
|
+
|
|
6
|
+
psql -v ON_ERROR_STOP=1 --dbname $POSTGRES_DB <<-EOSQL
|
|
7
|
+
CREATE USER keycloak_user WITH PASSWORD 'keycloak_password';
|
|
8
|
+
CREATE SCHEMA IF NOT EXISTS keycloak AUTHORIZATION keycloak_user;
|
|
9
|
+
EOSQL
|
|
10
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
FROM quay.io/keycloak/keycloak:24.0.4 as builder
|
|
2
|
+
|
|
3
|
+
# Enable health and metrics support
|
|
4
|
+
ENV KC_HEALTH_ENABLED=true
|
|
5
|
+
ENV KC_METRICS_ENABLED=true
|
|
6
|
+
# tell keycloak it will be behind a /oauth prefix in nginx
|
|
7
|
+
ENV KC_HTTP_RELATIVE_PATH=/oauth
|
|
8
|
+
|
|
9
|
+
# Configure a database vendor
|
|
10
|
+
ENV KC_DB=postgres
|
|
11
|
+
|
|
12
|
+
WORKDIR /opt/keycloak
|
|
13
|
+
|
|
14
|
+
# for demonstration purposes only, please make sure to use proper certificates in production instead
|
|
15
|
+
RUN keytool -genkeypair -storepass password -storetype PKCS12 -keyalg RSA -keysize 2048 -dname "CN=server" -alias server -ext "SAN:c=DNS:localhost,IP:127.0.0.1" -keystore conf/server.keystore
|
|
16
|
+
RUN /opt/keycloak/bin/kc.sh build
|
|
17
|
+
|
|
18
|
+
FROM quay.io/keycloak/keycloak:24.0.4
|
|
19
|
+
COPY --from=builder /opt/keycloak/ /opt/keycloak/
|
|
20
|
+
|
|
21
|
+
ENTRYPOINT ["/opt/keycloak/bin/kc.sh"]
|