c2cgeoportal-geoportal 2.5.0.100__py2.py3-none-any.whl → 2.7.1.83__py2.py3-none-any.whl
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.
- c2cgeoportal_geoportal/__init__.py +261 -130
- c2cgeoportal_geoportal/lib/__init__.py +72 -120
- c2cgeoportal_geoportal/lib/authentication.py +170 -21
- c2cgeoportal_geoportal/lib/bashcolor.py +17 -13
- c2cgeoportal_geoportal/lib/cacheversion.py +19 -11
- c2cgeoportal_geoportal/lib/caching.py +66 -160
- c2cgeoportal_geoportal/lib/check_collector.py +17 -10
- c2cgeoportal_geoportal/lib/checker.py +62 -64
- c2cgeoportal_geoportal/lib/common_headers.py +170 -0
- c2cgeoportal_geoportal/lib/dbreflection.py +70 -31
- c2cgeoportal_geoportal/lib/filter_capabilities.py +124 -96
- c2cgeoportal_geoportal/lib/fulltextsearch.py +50 -0
- c2cgeoportal_geoportal/lib/functionality.py +36 -21
- c2cgeoportal_geoportal/lib/headers.py +14 -5
- c2cgeoportal_geoportal/lib/i18n.py +39 -0
- c2cgeoportal_geoportal/lib/layers.py +29 -10
- c2cgeoportal_geoportal/lib/lingua_extractor.py +408 -211
- c2cgeoportal_geoportal/lib/loader.py +18 -16
- c2cgeoportal_geoportal/lib/metrics.py +29 -18
- c2cgeoportal_geoportal/lib/oauth2.py +1036 -0
- c2cgeoportal_geoportal/lib/wmstparsing.py +115 -90
- c2cgeoportal_geoportal/lib/xsd.py +29 -19
- c2cgeoportal_geoportal/resources.py +15 -9
- c2cgeoportal_geoportal/scaffolds/advance_create/ci/config.yaml +26 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.dockerignore +6 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/.eslintrc.yaml +19 -0
- c2cgeoportal_geoportal/scaffolds/{create/+dot+prospector.yaml → advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml} +8 -4
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/Dockerfile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Dockerfile} +24 -15
- c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/alembic.ini +1 -0
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/alembic.yaml_tmpl → advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml} +1 -1
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/development.ini_tmpl → advance_create/{{cookiecutter.project}}/geoportal/development.ini} +34 -15
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +104 -0
- c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-client.cfg +1 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/production.ini +38 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/requirements.txt +2 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/setup.py +25 -0
- c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/tools/extract-messages.js +8 -6
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/tsconfig.json +8 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +75 -0
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/webpack.apps.js_tmpl → advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js} +31 -28
- c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.commons.js +3 -7
- c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/webpack.config.js +4 -4
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py +47 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/authentication.py +10 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/dev.py +14 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/models.py +8 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/multi_organization.py +7 -0
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/resources.py +4 -3
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/api/index.js +12 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static-ngeo/js/{{cookiecutter.package}}module.js +25 -0
- c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal/subscribers.py_tmpl → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py} +3 -6
- c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/{update/geoportal/CONST_Makefile_tmpl → advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile} +32 -20
- c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
- c2cgeoportal_geoportal/scaffolds/create/{+dot+editorconfig → {{cookiecutter.project}}/.editorconfig} +4 -8
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +43 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +46 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +65 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
- c2cgeoportal_geoportal/scaffolds/create/{Dockerfile_tmpl → {{cookiecutter.project}}/Dockerfile} +34 -24
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +14 -0
- c2cgeoportal_geoportal/scaffolds/create/{README.rst_tmpl → {{cookiecutter.project}}/README.rst} +4 -4
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +158 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml +25 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +1 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml +474 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +66 -0
- c2cgeoportal_geoportal/scaffolds/create/{docker-compose.yaml → {{cookiecutter.project}}/docker-compose.yaml} +43 -18
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default +82 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project +60 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml +396 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/mobile.css +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-blue.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-gold.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker-green.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/markers/marker.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/Readme.txt +1 -1
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
- c2cgeoportal_geoportal/scaffolds/create/{mapserver/mapserver.map.tmpl_tmpl → {{cookiecutter.project}}/mapserver/mapserver.map.tmpl} +7 -15
- c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Landscape.jrxml +17 -9
- c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A3_Portrait.jrxml +17 -9
- c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Landscape.jrxml +17 -9
- c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/A4_Portrait.jrxml +17 -9
- c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/config.yaml.tmpl +30 -27
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/legend.jrxml +109 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation.properties +4 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/localisation_fr.properties +4 -0
- c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml} +6 -6
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml +3 -0
- c2cgeoportal_geoportal/scaffolds/create/{qgisserver/pg_service.conf.tmpl_tmpl → {{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl} +2 -2
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +107 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +111 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg +7 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +3 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tilegeneration/config.yaml.tmpl +195 -0
- c2cgeoportal_geoportal/scaffolds/update/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/.upgrade.yaml +191 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +1153 -0
- c2cgeoportal_geoportal/scaffolds/update/{geoportal → {{cookiecutter.project}}/geoportal}/CONST_config-schema.yaml +99 -47
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml +1412 -0
- c2cgeoportal_geoportal/scripts/__init__.py +17 -33
- c2cgeoportal_geoportal/scripts/c2cupgrade.py +295 -200
- c2cgeoportal_geoportal/scripts/create_demo_theme.py +5 -6
- c2cgeoportal_geoportal/scripts/manage_users.py +34 -37
- c2cgeoportal_geoportal/scripts/pcreate.py +312 -0
- c2cgeoportal_geoportal/scripts/theme2fts.py +92 -25
- c2cgeoportal_geoportal/scripts/urllogin.py +23 -17
- c2cgeoportal_geoportal/templates/login.html +88 -84
- c2cgeoportal_geoportal/templates/notlogin.html +62 -0
- c2cgeoportal_geoportal/templates/testi18n.html +6 -8
- c2cgeoportal_geoportal/views/__init__.py +23 -4
- c2cgeoportal_geoportal/views/dev.py +9 -7
- c2cgeoportal_geoportal/views/dynamic.py +70 -40
- c2cgeoportal_geoportal/views/entry.py +93 -24
- c2cgeoportal_geoportal/views/fulltextsearch.py +36 -29
- c2cgeoportal_geoportal/views/geometry_processing.py +15 -7
- c2cgeoportal_geoportal/views/i18n.py +91 -9
- c2cgeoportal_geoportal/views/layers.py +173 -134
- c2cgeoportal_geoportal/views/login.py +206 -87
- c2cgeoportal_geoportal/views/mapserverproxy.py +59 -35
- c2cgeoportal_geoportal/views/memory.py +13 -13
- c2cgeoportal_geoportal/views/ogcproxy.py +48 -30
- c2cgeoportal_geoportal/views/pdfreport.py +31 -27
- c2cgeoportal_geoportal/views/printproxy.py +67 -53
- c2cgeoportal_geoportal/views/profile.py +25 -24
- c2cgeoportal_geoportal/views/proxy.py +97 -68
- c2cgeoportal_geoportal/views/raster.py +47 -29
- c2cgeoportal_geoportal/views/resourceproxy.py +13 -11
- c2cgeoportal_geoportal/views/shortener.py +31 -24
- c2cgeoportal_geoportal/views/theme.py +475 -365
- c2cgeoportal_geoportal/views/tinyowsproxy.py +46 -39
- c2cgeoportal_geoportal/views/vector_tiles.py +80 -0
- {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/METADATA +16 -11
- c2cgeoportal_geoportal-2.7.1.83.dist-info/RECORD +185 -0
- {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/WHEEL +1 -1
- {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/entry_points.txt +3 -1
- tests/__init__.py +24 -3
- tests/test_cachebuster.py +1 -3
- tests/test_caching.py +19 -26
- tests/test_checker.py +2 -3
- tests/test_decimaljson.py +4 -4
- tests/test_headerstween.py +0 -3
- tests/test_i18n.py +31 -0
- tests/test_init.py +12 -27
- tests/test_locale_negociator.py +6 -6
- tests/test_mapserverproxy_route_predicate.py +0 -2
- tests/test_raster.py +18 -5
- tests/test_wmstparsing.py +7 -8
- c2cgeoportal_geoportal/scaffolds/__init__.py +0 -226
- c2cgeoportal_geoportal/scaffolds/create/+dot+dockerignore_tmpl +0 -11
- c2cgeoportal_geoportal/scaffolds/create/+dot+github/workflows/ci.yaml_tmpl +0 -56
- c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +0 -12
- c2cgeoportal_geoportal/scaffolds/create/build_tmpl +0 -144
- c2cgeoportal_geoportal/scaffolds/create/docker-compose-lib.yaml_tmpl +0 -302
- c2cgeoportal_geoportal/scaffolds/create/docker-compose.override.sample.yaml_tmpl +0 -54
- c2cgeoportal_geoportal/scaffolds/create/env.default_tmpl +0 -49
- c2cgeoportal_geoportal/scaffolds/create/env.project_tmpl +0 -39
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+dockerignore_tmpl +0 -5
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+dot+eslintrc_tmpl +0 -19
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/__init__.py_tmpl +0 -48
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/models.py_tmpl +0 -10
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/images/favicon.ico +0 -0
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static/robot.txt +0 -3
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static-ngeo/api/index.js_tmpl +0 -37
- c2cgeoportal_geoportal/scaffolds/create/geoportal/+package+_geoportal/static-ngeo/js/+package+module.js_tmpl +0 -22
- c2cgeoportal_geoportal/scaffolds/create/geoportal/production.ini_tmpl +0 -106
- c2cgeoportal_geoportal/scaffolds/create/geoportal/requirements.txt +0 -2
- c2cgeoportal_geoportal/scaffolds/create/geoportal/setup.py_tmpl +0 -18
- c2cgeoportal_geoportal/scaffolds/create/geoportal/tsconfig.json_tmpl +0 -9
- c2cgeoportal_geoportal/scaffolds/create/geoportal/vars.yaml_tmpl +0 -224
- c2cgeoportal_geoportal/scaffolds/create/geoportal/webpack.api.js_tmpl +0 -71
- c2cgeoportal_geoportal/scaffolds/create/mapserver/demo.map.tmpl_tmpl +0 -262
- c2cgeoportal_geoportal/scaffolds/create/mapserver/tinyows.xml +0 -36
- c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/config.yaml +0 -166
- c2cgeoportal_geoportal/scaffolds/create/print/print-apps/+package+/legend.jrxml +0 -27
- c2cgeoportal_geoportal/scaffolds/create/qgisserver/geomapfish.yaml.tmpl_tmpl +0 -29
- c2cgeoportal_geoportal/scaffolds/create/scripts/publish-docker +0 -124
- c2cgeoportal_geoportal/scaffolds/create/setup.cfg_tmpl +0 -3
- c2cgeoportal_geoportal/scaffolds/create/spell-ignore-words.txt +0 -1
- c2cgeoportal_geoportal/scaffolds/create/tilegeneration/config.yaml.tmpl_tmpl +0 -169
- c2cgeoportal_geoportal/scaffolds/create/yamllint.yaml +0 -11
- c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl +0 -171
- c2cgeoportal_geoportal/scaffolds/update/CONST_CHANGELOG.txt_tmpl +0 -64
- c2cgeoportal_geoportal/scaffolds/update/geoportal/CONST_vars.yaml_tmpl +0 -783
- c2cgeoportal_geoportal/templates/dynamic.js +0 -21
- c2cgeoportal_geoportal-2.5.0.100.dist-info/RECORD +0 -162
- tests/test_get_url.py +0 -96
- tests/test_lib.py +0 -77
- /c2cgeoportal_geoportal/{scaffolds/create/geoportal/+package+_geoportal/static/css/desktop.css → py.typed} +0 -0
- /c2cgeoportal_geoportal/scaffolds/{create/geoportal/Makefile_tmpl → advance_create/{{cookiecutter.project}}/geoportal/Makefile} +0 -0
- /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/language_mapping +0 -0
- /c2cgeoportal_geoportal/scaffolds/{create → advance_create/{{cookiecutter.project}}}/geoportal/lingua-server.cfg +0 -0
- /c2cgeoportal_geoportal/scaffolds/{create/geoportal/+package+_geoportal → advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/views/__init__.py +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/locale/en/LC_MESSAGES/+package+_geoportal-client.po → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po} +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/iframe_api.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css} +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal/static/css/mobile.css → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css} +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_left.png +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/banner_right.png +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/images/blank.png +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{geoportal/+package+_geoportal → {{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal}/static/robot.txt.tmpl +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/data/TM_EUROPE_BORDERS-0.3.sql +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arial.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbd.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Arialbi.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Ariali.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Bold.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-BoldItalic.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Italic.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/NotoSans-Regular.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdana.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanab.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanai.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts/Verdanaz.ttf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/fonts.conf +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{mapserver → {{cookiecutter.project}}/mapserver}/tinyows.xml.tmpl +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/logo.png +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/north.svg +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{print/print-apps/+package+ → {{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}}/results.jrxml +0 -0
- /c2cgeoportal_geoportal/scaffolds/create/{run_alembic.sh → {{cookiecutter.project}}/run_alembic.sh} +0 -0
- {c2cgeoportal_geoportal-2.5.0.100.dist-info → c2cgeoportal_geoportal-2.7.1.83.dist-info}/top_level.txt +0 -0
@@ -2,10 +2,13 @@
|
|
2
2
|
|
3
3
|
throwErrorOnExtraParameters: true
|
4
4
|
defaultToSvg: true
|
5
|
+
resourceBundle: localisation
|
5
6
|
|
6
|
-
allowedReferers:
|
7
|
-
- !hostnameMatch
|
8
|
-
|
7
|
+
allowedReferers: &allowedHosts
|
8
|
+
${DISABLE_MUTUALIZED_PRINT}- !hostnameMatch
|
9
|
+
${DISABLE_MUTUALIZED_PRINT} host: ${MUTUALIZED_PRINT_URL}
|
10
|
+
${DISABLE_LOCAL_PRINT}- !hostnameMatch
|
11
|
+
${DISABLE_LOCAL_PRINT} host: ${VISIBLE_WEB_HOST}
|
9
12
|
- !localMatch {}
|
10
13
|
|
11
14
|
templates:
|
@@ -42,6 +45,9 @@ templates:
|
|
42
45
|
height: 20
|
43
46
|
default:
|
44
47
|
fontSize: 8
|
48
|
+
timezone:
|
49
|
+
!string &timezone
|
50
|
+
default: "Europe/Zurich"
|
45
51
|
datasource:
|
46
52
|
!datasource &datasource
|
47
53
|
attributes:
|
@@ -53,26 +59,23 @@ templates:
|
|
53
59
|
directory: '.'
|
54
60
|
- !configureHttpRequests &configureHttpRequests
|
55
61
|
httpProcessors:
|
56
|
-
## For internal print
|
57
|
-
## - !mapUri
|
58
|
-
## mapping:
|
59
|
-
## https?://${VISIBLE_WEB_HOST_RE_ESCAPED}${VISIBLE_ENTRY_POINT_RE_ESCAPED}tiles(.*): "${TILECLOUDCHAIN_INTERNAL_URL}${VISIBLE_ENTRY_POINT}tiles$1"
|
60
|
-
## - !mapUri
|
61
|
-
## mapping:
|
62
|
-
## https?://${VISIBLE_WEB_HOST_RE_ESCAPED}${VISIBLE_ENTRY_POINT_RE_ESCAPED}(.*): "${GEOPORTAL_INTERNAL_URL}${VISIBLE_ENTRY_POINT}$1"
|
63
|
-
## - !forwardHeaders
|
64
|
-
## matchers:
|
65
|
-
## - !hostnameMatch
|
66
|
-
## host: ${GEOPORTAL_INTERNAL_HOST}
|
67
|
-
## port: ${GEOPORTAL_INTERNAL_PORT}
|
68
62
|
- !forwardHeaders
|
69
|
-
matchers:
|
70
|
-
- !hostnameMatch
|
71
|
-
host: ${VISIBLE_WEB_HOST}
|
72
|
-
port: ${VISIBLE_WEB_PORT}
|
63
|
+
matchers: *allowedHosts
|
73
64
|
headers:
|
74
65
|
- Cookie
|
75
|
-
|
66
|
+
## For internal print
|
67
|
+
${DISABLE_LOCAL_PRINT}- !mapUri
|
68
|
+
${DISABLE_LOCAL_PRINT} mapping:
|
69
|
+
${DISABLE_LOCAL_PRINT} https?://${VISIBLE_WEB_HOST_RE_ESCAPED}${VISIBLE_ENTRY_POINT_RE_ESCAPED}tiles(.*): "${TILECLOUDCHAIN_INTERNAL_URL}${VISIBLE_ENTRY_POINT}tiles$1"
|
70
|
+
${DISABLE_LOCAL_PRINT}- !mapUri
|
71
|
+
${DISABLE_LOCAL_PRINT} mapping:
|
72
|
+
${DISABLE_LOCAL_PRINT} https?://${VISIBLE_WEB_HOST_RE_ESCAPED}${VISIBLE_ENTRY_POINT_RE_ESCAPED}(.*): "${GEOPORTAL_INTERNAL_URL}${VISIBLE_ENTRY_POINT}$1"
|
73
|
+
${DISABLE_LOCAL_PRINT}- !forwardHeaders
|
74
|
+
${DISABLE_LOCAL_PRINT} matchers:
|
75
|
+
${DISABLE_LOCAL_PRINT} - !hostnameMatch
|
76
|
+
${DISABLE_LOCAL_PRINT} host: ${GEOPORTAL_INTERNAL_HOST}
|
77
|
+
${DISABLE_LOCAL_PRINT} port: ${GEOPORTAL_INTERNAL_PORT}
|
78
|
+
## End for internal print
|
76
79
|
- !forwardHeaders
|
77
80
|
headers:
|
78
81
|
- Referer
|
@@ -82,13 +85,10 @@ templates:
|
|
82
85
|
matchers:
|
83
86
|
- !localMatch
|
84
87
|
reject: true
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
## - !hostnameMatch
|
90
|
-
## host: ${TILECLOUDCHAIN_INTERNAL_HOST}
|
91
|
-
## port: ${TILECLOUDCHAIN_INTERNAL_PORT}
|
88
|
+
- !hostnameMatch
|
89
|
+
host: geoportal
|
90
|
+
- !hostnameMatch
|
91
|
+
host: tilecloudchain
|
92
92
|
- !ipMatch
|
93
93
|
ip: 10.0.0.0
|
94
94
|
mask: 255.0.0.0
|
@@ -130,6 +130,7 @@ templates:
|
|
130
130
|
height: 441
|
131
131
|
northArrow: *northArrow
|
132
132
|
scalebar: *scalebar
|
133
|
+
timezone: *timezone
|
133
134
|
datasource: *datasource
|
134
135
|
processors: *processors
|
135
136
|
|
@@ -146,6 +147,7 @@ templates:
|
|
146
147
|
height: 1000
|
147
148
|
northArrow: *northArrow
|
148
149
|
scalebar: *scalebar
|
150
|
+
timezone: *timezone
|
149
151
|
datasource: *datasource
|
150
152
|
processors: *processors
|
151
153
|
|
@@ -162,5 +164,6 @@ templates:
|
|
162
164
|
height: 673
|
163
165
|
northArrow: *northArrow
|
164
166
|
scalebar: *scalebar
|
167
|
+
timezone: *timezone
|
165
168
|
datasource: *datasource
|
166
169
|
processors: *processors
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="legend" columnCount="3" pageWidth="555" pageHeight="102" columnWidth="185" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="6b65086b-74e0-4bec-834b-1b74d5ae2d31">
|
3
|
+
<field name="name" class="java.lang.String"/>
|
4
|
+
<field name="report" class="java.lang.String"/>
|
5
|
+
<field name="icon" class="java.awt.Image"/>
|
6
|
+
<field name="level" class="java.lang.Integer"/>
|
7
|
+
<detail>
|
8
|
+
<!-- Always the same content except the x value (indent) per level and bold, for first level
|
9
|
+
text. Level 0 empty and ignored-->
|
10
|
+
<!--Level 1-->
|
11
|
+
<band height="15" splitType="Stretch">
|
12
|
+
<printWhenExpression><![CDATA[!$F{name}.equals("") && $F{level} <= 1]]></printWhenExpression>
|
13
|
+
<textField textAdjust="StretchHeight">
|
14
|
+
<reportElement x="0" y="0" width="185" height="15"/>
|
15
|
+
<box topPadding="10"/>
|
16
|
+
<textElement>
|
17
|
+
<font isBold="true"/>
|
18
|
+
</textElement>
|
19
|
+
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
|
20
|
+
</textField>
|
21
|
+
</band>
|
22
|
+
<band height="15" splitType="Stretch">
|
23
|
+
<printWhenExpression><![CDATA[!$F{report}.equals("") && $F{level} <= 1]]></printWhenExpression>
|
24
|
+
<subreport>
|
25
|
+
<reportElement x="0" y="0" width="185" height="15" uuid="fa145068-76a5-4834-98ed-ce65b1976b3d">
|
26
|
+
<property name="local_mesure_unitheight" value="pixel"/>
|
27
|
+
<property name="com.jaspersoft.studio.unit.height" value="px"/>
|
28
|
+
</reportElement>
|
29
|
+
<subreportExpression><![CDATA[$F{report}]]></subreportExpression>
|
30
|
+
</subreport>
|
31
|
+
</band>
|
32
|
+
<!--Level 2-->
|
33
|
+
<band height="15" splitType="Stretch">
|
34
|
+
<printWhenExpression><![CDATA[!$F{name}.equals("") && $F{level} == 2]]></printWhenExpression>
|
35
|
+
<textField textAdjust="StretchHeight">
|
36
|
+
<reportElement x="10" y="0" width="185" height="15"/>
|
37
|
+
<box topPadding="10"/>
|
38
|
+
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
|
39
|
+
</textField>
|
40
|
+
</band>
|
41
|
+
<band height="15" splitType="Stretch">
|
42
|
+
<printWhenExpression><![CDATA[!$F{report}.equals("") && $F{level} == 2]]></printWhenExpression>
|
43
|
+
<subreport>
|
44
|
+
<reportElement x="10" y="0" width="185" height="15" uuid="fa145068-76a5-4834-98ed-ce65b1976b3d">
|
45
|
+
<property name="local_mesure_unitheight" value="pixel"/>
|
46
|
+
<property name="com.jaspersoft.studio.unit.height" value="px"/>
|
47
|
+
</reportElement>
|
48
|
+
<subreportExpression><![CDATA[$F{report}]]></subreportExpression>
|
49
|
+
</subreport>
|
50
|
+
</band>
|
51
|
+
<!--Level 3-->
|
52
|
+
<band height="15" splitType="Stretch">
|
53
|
+
<printWhenExpression><![CDATA[!$F{name}.equals("") && $F{level} == 3]]></printWhenExpression>
|
54
|
+
<textField textAdjust="StretchHeight">
|
55
|
+
<reportElement x="20" y="0" width="185" height="15"/>
|
56
|
+
<box topPadding="10"/>
|
57
|
+
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
|
58
|
+
</textField>
|
59
|
+
</band>
|
60
|
+
<band height="15" splitType="Stretch">
|
61
|
+
<printWhenExpression><![CDATA[!$F{report}.equals("") && $F{level} == 3]]></printWhenExpression>
|
62
|
+
<subreport>
|
63
|
+
<reportElement x="20" y="0" width="185" height="15" uuid="fa145068-76a5-4834-98ed-ce65b1976b3d">
|
64
|
+
<property name="local_mesure_unitheight" value="pixel"/>
|
65
|
+
<property name="com.jaspersoft.studio.unit.height" value="px"/>
|
66
|
+
</reportElement>
|
67
|
+
<subreportExpression><![CDATA[$F{report}]]></subreportExpression>
|
68
|
+
</subreport>
|
69
|
+
</band>
|
70
|
+
<!--Level 4-->
|
71
|
+
<band height="15" splitType="Stretch">
|
72
|
+
<printWhenExpression><![CDATA[!$F{name}.equals("") && $F{level} == 4]]></printWhenExpression>
|
73
|
+
<textField textAdjust="StretchHeight">
|
74
|
+
<reportElement x="30" y="0" width="185" height="15"/>
|
75
|
+
<box topPadding="10"/>
|
76
|
+
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
|
77
|
+
</textField>
|
78
|
+
</band>
|
79
|
+
<band height="15" splitType="Stretch">
|
80
|
+
<printWhenExpression><![CDATA[!$F{report}.equals("") && $F{level} == 4]]></printWhenExpression>
|
81
|
+
<subreport>
|
82
|
+
<reportElement x="30" y="0" width="185" height="15" uuid="fa145068-76a5-4834-98ed-ce65b1976b3d">
|
83
|
+
<property name="local_mesure_unitheight" value="pixel"/>
|
84
|
+
<property name="com.jaspersoft.studio.unit.height" value="px"/>
|
85
|
+
</reportElement>
|
86
|
+
<subreportExpression><![CDATA[$F{report}]]></subreportExpression>
|
87
|
+
</subreport>
|
88
|
+
</band>
|
89
|
+
<!--Level 5-->
|
90
|
+
<band height="15" splitType="Stretch">
|
91
|
+
<printWhenExpression><![CDATA[!$F{name}.equals("") && $F{level} >= 5]]></printWhenExpression>
|
92
|
+
<textField textAdjust="StretchHeight">
|
93
|
+
<reportElement x="40" y="0" width="185" height="15"/>
|
94
|
+
<box topPadding="10"/>
|
95
|
+
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
|
96
|
+
</textField>
|
97
|
+
</band>
|
98
|
+
<band height="15" splitType="Stretch">
|
99
|
+
<printWhenExpression><![CDATA[!$F{report}.equals("") && $F{level} >= 5]]></printWhenExpression>
|
100
|
+
<subreport>
|
101
|
+
<reportElement x="40" y="0" width="185" height="15" uuid="fa145068-76a5-4834-98ed-ce65b1976b3d">
|
102
|
+
<property name="local_mesure_unitheight" value="pixel"/>
|
103
|
+
<property name="com.jaspersoft.studio.unit.height" value="px"/>
|
104
|
+
</reportElement>
|
105
|
+
<subreportExpression><![CDATA[$F{report}]]></subreportExpression>
|
106
|
+
</subreport>
|
107
|
+
</band>
|
108
|
+
</detail>
|
109
|
+
</jasperReport>
|
c2cgeoportal_geoportal/scaffolds/create/{project.yaml_tmpl → {{cookiecutter.project}}/project.yaml}
RENAMED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
|
-
project_folder: {{project}}
|
3
|
-
project_package: {{package}}
|
2
|
+
project_folder: {{cookiecutter.project}}
|
3
|
+
project_package: {{cookiecutter.package}}
|
4
4
|
application_url: https://localhost:8484/
|
5
5
|
checker_url: https://172.17.0.1:8484/c2c/health_check?max_level=9
|
6
6
|
managed_files: []
|
7
7
|
unmanaged_files: []
|
8
8
|
template_vars:
|
9
|
-
package: {{package}}
|
10
|
-
srid: {{srid}}
|
11
|
-
extent: {{extent}}
|
12
|
-
authtkt_secret: {{authtkt_secret}}
|
9
|
+
package: {{cookiecutter.package}}
|
10
|
+
srid: {{cookiecutter.srid}}
|
11
|
+
extent: {{cookiecutter.extent}}
|
12
|
+
authtkt_secret: {{cookiecutter.authtkt_secret}}
|
13
13
|
env:
|
14
14
|
files:
|
15
15
|
- env.default
|
@@ -1,4 +1,4 @@
|
|
1
|
-
[{{package}}]
|
1
|
+
[{{cookiecutter.package}}]
|
2
2
|
host=${PGHOST_SLAVE}
|
3
3
|
port=${PGPORT_SLAVE}
|
4
4
|
#sslmode=${PGSSLMODE}
|
@@ -6,7 +6,7 @@ user=${PGUSER}
|
|
6
6
|
password=${PGPASSWORD}
|
7
7
|
dbname=${PGDATABASE}
|
8
8
|
|
9
|
-
[{{package}}_master]
|
9
|
+
[{{cookiecutter.package}}_master]
|
10
10
|
host=${PGHOST}
|
11
11
|
port=${PGPORT}
|
12
12
|
#sslmode=${PGSSLMODE}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
|
3
|
+
# Copyright (c) 2021, Camptocamp SA
|
4
|
+
# All rights reserved.
|
5
|
+
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
7
|
+
# modification, are permitted provided that the following conditions are met:
|
8
|
+
|
9
|
+
# 1. Redistributions of source code must retain the above copyright notice, this
|
10
|
+
# list of conditions and the following disclaimer.
|
11
|
+
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
16
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
17
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
19
|
+
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
# The views and conclusions contained in the software and documentation are those
|
27
|
+
# of the authors and should not be interpreted as representing official policies,
|
28
|
+
# either expressed or implied, of the FreeBSD Project.
|
29
|
+
|
30
|
+
|
31
|
+
import argparse
|
32
|
+
import subprocess
|
33
|
+
|
34
|
+
|
35
|
+
def main() -> None:
|
36
|
+
"""Backup the database."""
|
37
|
+
parser = argparse.ArgumentParser(description="Backup the database.")
|
38
|
+
parser.add_argument(
|
39
|
+
"--env",
|
40
|
+
default=".env",
|
41
|
+
help="The env file to use to get the connection settings, by default we log in the composition "
|
42
|
+
"to do the dump.",
|
43
|
+
)
|
44
|
+
parser.add_argument(
|
45
|
+
"--arg",
|
46
|
+
action="append",
|
47
|
+
default=[],
|
48
|
+
help="Additional pg_dump argument, example: '--arg=--schema=main', may be used multiple times.",
|
49
|
+
)
|
50
|
+
parser.add_argument("file", help="The file path to backup")
|
51
|
+
args = parser.parse_args()
|
52
|
+
|
53
|
+
with open(args.file, "w", encoding="utf-8") as file_out:
|
54
|
+
if args.env:
|
55
|
+
env = {}
|
56
|
+
with open(args.env, encoding="utf-8") as file_env:
|
57
|
+
for line in file_env:
|
58
|
+
if line and line[0] != "#":
|
59
|
+
try:
|
60
|
+
index = line.index("=")
|
61
|
+
env[line[:index].strip()] = line[index + 1 :].strip()
|
62
|
+
except ValueError:
|
63
|
+
# Ignore lines that don't have a '='
|
64
|
+
pass
|
65
|
+
subprocess.run(
|
66
|
+
[
|
67
|
+
"docker",
|
68
|
+
"run",
|
69
|
+
"--rm",
|
70
|
+
"--env=PGHOST={}".format(env["PGHOST_SLAVE"]),
|
71
|
+
"--env=PGPORT={}".format(env["PGPORT_SLAVE"]),
|
72
|
+
"--env=PGUSER={}".format(env["PGUSER"]),
|
73
|
+
"--env=PGPASSWORD={}".format(env["PGPASSWORD"]),
|
74
|
+
]
|
75
|
+
+ (["--env=PGSSLMODE={}".format(env["PGSSLMODE"])] if "PGSSLMODE" in env else [])
|
76
|
+
+ (["--env=PGOPTIONS={}".format(env["PGOPTIONS"])] if "PGOPTIONS" in env else [])
|
77
|
+
+ [
|
78
|
+
"camptocamp/postgres:{}".format(env["POSTGRES_TAG"]),
|
79
|
+
]
|
80
|
+
+ [
|
81
|
+
"pg_dump",
|
82
|
+
"--format=c",
|
83
|
+
"--dbname={}".format(env["PGDATABASE"]),
|
84
|
+
]
|
85
|
+
+ args.arg,
|
86
|
+
stdout=file_out,
|
87
|
+
check=True,
|
88
|
+
)
|
89
|
+
else:
|
90
|
+
subprocess.run(
|
91
|
+
[
|
92
|
+
"docker-compose",
|
93
|
+
"exec",
|
94
|
+
"-T",
|
95
|
+
"db",
|
96
|
+
"bash",
|
97
|
+
"-c",
|
98
|
+
'pg_dump --format=c --dbname="$PGDATABASE"',
|
99
|
+
]
|
100
|
+
+ args.arg,
|
101
|
+
stdout=file_out,
|
102
|
+
check=True,
|
103
|
+
)
|
104
|
+
|
105
|
+
|
106
|
+
if __name__ == "__main__":
|
107
|
+
main()
|
@@ -0,0 +1,111 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
|
3
|
+
# Copyright (c) 2021, Camptocamp SA
|
4
|
+
# All rights reserved.
|
5
|
+
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
7
|
+
# modification, are permitted provided that the following conditions are met:
|
8
|
+
|
9
|
+
# 1. Redistributions of source code must retain the above copyright notice, this
|
10
|
+
# list of conditions and the following disclaimer.
|
11
|
+
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
16
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
17
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
19
|
+
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
# The views and conclusions contained in the software and documentation are those
|
27
|
+
# of the authors and should not be interpreted as representing official policies,
|
28
|
+
# either expressed or implied, of the FreeBSD Project.
|
29
|
+
|
30
|
+
import argparse
|
31
|
+
import subprocess
|
32
|
+
|
33
|
+
|
34
|
+
def main() -> None:
|
35
|
+
"""Restore the database backup."""
|
36
|
+
parser = argparse.ArgumentParser(description="Restore the database backup.")
|
37
|
+
parser.add_argument(
|
38
|
+
"--env",
|
39
|
+
help="The env file to use to get the connection settings, by default we log in the composition to "
|
40
|
+
"do the restore.",
|
41
|
+
)
|
42
|
+
parser.add_argument(
|
43
|
+
"--docker-compose-file",
|
44
|
+
action="append",
|
45
|
+
default=[],
|
46
|
+
help="The docker-compose file to used.",
|
47
|
+
)
|
48
|
+
parser.add_argument(
|
49
|
+
"--arg",
|
50
|
+
action="append",
|
51
|
+
default=[],
|
52
|
+
help="Additional pg_restore argument, example: '--arg=--schema=main', may be used multiple times.",
|
53
|
+
)
|
54
|
+
parser.add_argument("file", help="The file path to restore")
|
55
|
+
args = parser.parse_args()
|
56
|
+
|
57
|
+
with open(args.file, "rb") as file_in:
|
58
|
+
if args.env:
|
59
|
+
env = {}
|
60
|
+
with open(args.env, encoding="utf-8") as file_env:
|
61
|
+
for line in file_env:
|
62
|
+
if line and line[0] != "#":
|
63
|
+
try:
|
64
|
+
index = line.index("=")
|
65
|
+
env[line[:index].strip()] = line[index + 1 :].strip()
|
66
|
+
except ValueError:
|
67
|
+
# Ignore lines that don't have a '='
|
68
|
+
pass
|
69
|
+
subprocess.run(
|
70
|
+
[
|
71
|
+
"docker",
|
72
|
+
"run",
|
73
|
+
"--rm",
|
74
|
+
"--interactive",
|
75
|
+
"--env=PGHOST={}".format(env["PGHOST"]),
|
76
|
+
"--env=PGPORT={}".format(env["PGPORT"]),
|
77
|
+
"--env=PGUSER={}".format(env["PGUSER"]),
|
78
|
+
"--env=PGPASSWORD={}".format(env["PGPASSWORD"]),
|
79
|
+
]
|
80
|
+
+ (["--env=PGSSLMODE={}".format(env["PGSSLMODE"])] if "PGSSLMODE" in env else [])
|
81
|
+
+ (["--env=PGOPTIONS={}".format(env["PGOPTIONS"])] if "PGOPTIONS" in env else [])
|
82
|
+
+ [
|
83
|
+
"camptocamp/postgres:{}".format(env["POSTGRES_TAG"]),
|
84
|
+
]
|
85
|
+
+ [
|
86
|
+
"pg_restore",
|
87
|
+
"--dbname={}".format(env["PGDATABASE"]),
|
88
|
+
]
|
89
|
+
+ args.arg,
|
90
|
+
stdin=file_in,
|
91
|
+
check=True,
|
92
|
+
)
|
93
|
+
else:
|
94
|
+
subprocess.run(
|
95
|
+
["docker-compose"]
|
96
|
+
+ ["--file={}".format(f) for f in args.docker_compose_file]
|
97
|
+
+ [
|
98
|
+
"exec",
|
99
|
+
"-T",
|
100
|
+
"db",
|
101
|
+
"bash",
|
102
|
+
"-c",
|
103
|
+
'pg_restore --dbname="$PGDATABASE" ' + " ".join(args.arg),
|
104
|
+
],
|
105
|
+
stdin=file_in,
|
106
|
+
check=True,
|
107
|
+
)
|
108
|
+
|
109
|
+
|
110
|
+
if __name__ == "__main__":
|
111
|
+
main()
|