c2cgeoportal-geoportal 2.3.5.80__py3-none-any.whl → 2.9rc44__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 +960 -0
- c2cgeoportal_geoportal/lib/__init__.py +256 -0
- c2cgeoportal_geoportal/lib/authentication.py +250 -0
- c2cgeoportal_geoportal/lib/bashcolor.py +46 -0
- c2cgeoportal_geoportal/lib/cacheversion.py +77 -0
- c2cgeoportal_geoportal/lib/caching.py +176 -0
- c2cgeoportal_geoportal/lib/check_collector.py +80 -0
- c2cgeoportal_geoportal/lib/checker.py +295 -0
- c2cgeoportal_geoportal/lib/common_headers.py +172 -0
- c2cgeoportal_geoportal/lib/dbreflection.py +266 -0
- c2cgeoportal_geoportal/lib/filter_capabilities.py +360 -0
- c2cgeoportal_geoportal/lib/fulltextsearch.py +50 -0
- c2cgeoportal_geoportal/lib/functionality.py +166 -0
- c2cgeoportal_geoportal/lib/headers.py +62 -0
- c2cgeoportal_geoportal/lib/i18n.py +38 -0
- c2cgeoportal_geoportal/lib/layers.py +132 -0
- c2cgeoportal_geoportal/lib/lingva_extractor.py +937 -0
- c2cgeoportal_geoportal/lib/loader.py +57 -0
- c2cgeoportal_geoportal/lib/metrics.py +117 -0
- c2cgeoportal_geoportal/lib/oauth2.py +1186 -0
- c2cgeoportal_geoportal/lib/oidc.py +304 -0
- c2cgeoportal_geoportal/lib/wmstparsing.py +353 -0
- c2cgeoportal_geoportal/lib/xsd.py +166 -0
- c2cgeoportal_geoportal/py.typed +0 -0
- c2cgeoportal_geoportal/resources.py +49 -0
- 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/advance_create/{{cookiecutter.project}}/geoportal/.prospector.yaml +30 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Dockerfile +75 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/Makefile +6 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.ini +58 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/alembic.yaml +19 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/development.ini +121 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/gunicorn.conf.py +139 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/language_mapping +3 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingva-client.cfg +5 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/lingva-server.cfg +6 -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/advance_create/{{cookiecutter.project}}/geoportal/webpack.api.js +41 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.apps.js +64 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.commons.js +11 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/webpack.config.js +22 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/__init__.py +42 -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/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/resources.py +11 -0
- 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/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/subscribers.py +39 -0
- c2cgeoportal_geoportal/scaffolds/advance_create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/views/__init__.py +0 -0
- c2cgeoportal_geoportal/scaffolds/advance_update/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile +121 -0
- c2cgeoportal_geoportal/scaffolds/create/cookiecutter.json +18 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.dockerignore +14 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.editorconfig +17 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/main.yaml +73 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml +50 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml +66 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.gitignore +16 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.pre-commit-config.yaml +35 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierignore +1 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.prettierrc.yaml +2 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Dockerfile +75 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/Makefile +70 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/README.rst +29 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/build +179 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/config.yaml +22 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/docker-compose-check +25 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/ci/requirements.txt +2 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-db.yaml +24 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-lib.yaml +513 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose-qgis.yaml +21 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.override.sample.yaml +65 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/docker-compose.yaml +121 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.default +102 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/env.project +69 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/vars.yaml +430 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/locale/en/LC_MESSAGES/{{cookiecutter.package}}_geoportal-client.po +6 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/desktop.css +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/css/iframe_api.css +0 -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/banner_left.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/banner_right.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/images/blank.png +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/{{cookiecutter.project}}/geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt.tmpl +3 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/Readme.txt +69 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/data/TM_EUROPE_BORDERS-0.3.sql +70 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/demo.map.tmpl +224 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arial.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbd.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Arialbi.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Ariali.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Bold.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-BoldItalic.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Italic.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/NotoSans-Regular.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdana.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanab.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanai.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts/Verdanaz.ttf +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/fonts.conf +12 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.conf +16 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/mapserver.map.tmpl +87 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/mapserver/tinyows.xml.tmpl +36 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Landscape.jrxml +207 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A3_Portrait.jrxml +185 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Landscape.jrxml +200 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/A4_Portrait.jrxml +170 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/config.yaml.tmpl +175 -0
- 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/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/logo.png +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/north.svg +93 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/print/print-apps/{{cookiecutter.package}}/results.jrxml +25 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/project.yaml +18 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/pyproject.toml +7 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl +15 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/run_alembic.sh +11 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-backup +126 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/scripts/db-restore +132 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/setup.cfg +7 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/spell-ignore-words.txt +5 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/__init__.py +0 -0
- c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/tests/test_app.py +78 -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 +67 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_CHANGELOG.txt +304 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/CONST_create_template/tests/test_testapp.py +48 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/.CONST_vars.yaml.swp +0 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_config-schema.yaml +927 -0
- c2cgeoportal_geoportal/scaffolds/update/{{cookiecutter.project}}/geoportal/CONST_vars.yaml +1503 -0
- c2cgeoportal_geoportal/scripts/__init__.py +64 -0
- c2cgeoportal_geoportal/scripts/c2cupgrade.py +879 -0
- c2cgeoportal_geoportal/scripts/create_demo_theme.py +83 -0
- c2cgeoportal_geoportal/scripts/manage_users.py +140 -0
- c2cgeoportal_geoportal/scripts/pcreate.py +296 -0
- c2cgeoportal_geoportal/scripts/theme2fts.py +347 -0
- c2cgeoportal_geoportal/scripts/urllogin.py +81 -0
- c2cgeoportal_geoportal/templates/login.html +90 -0
- c2cgeoportal_geoportal/templates/notlogin.html +62 -0
- c2cgeoportal_geoportal/templates/testi18n.html +12 -0
- c2cgeoportal_geoportal/views/__init__.py +59 -0
- c2cgeoportal_geoportal/views/dev.py +57 -0
- c2cgeoportal_geoportal/views/dynamic.py +208 -0
- c2cgeoportal_geoportal/views/entry.py +174 -0
- c2cgeoportal_geoportal/views/fulltextsearch.py +189 -0
- c2cgeoportal_geoportal/views/geometry_processing.py +75 -0
- c2cgeoportal_geoportal/views/i18n.py +129 -0
- c2cgeoportal_geoportal/views/layers.py +713 -0
- c2cgeoportal_geoportal/views/login.py +684 -0
- c2cgeoportal_geoportal/views/mapserverproxy.py +234 -0
- c2cgeoportal_geoportal/views/memory.py +90 -0
- c2cgeoportal_geoportal/views/ogcproxy.py +120 -0
- c2cgeoportal_geoportal/views/pdfreport.py +245 -0
- c2cgeoportal_geoportal/views/printproxy.py +143 -0
- c2cgeoportal_geoportal/views/profile.py +192 -0
- c2cgeoportal_geoportal/views/proxy.py +261 -0
- c2cgeoportal_geoportal/views/raster.py +233 -0
- c2cgeoportal_geoportal/views/resourceproxy.py +73 -0
- c2cgeoportal_geoportal/views/shortener.py +152 -0
- c2cgeoportal_geoportal/views/theme.py +1322 -0
- c2cgeoportal_geoportal/views/tinyowsproxy.py +189 -0
- c2cgeoportal_geoportal/views/vector_tiles.py +83 -0
- {c2cgeoportal_geoportal-2.3.5.80.dist-info → c2cgeoportal_geoportal-2.9rc44.dist-info}/METADATA +21 -24
- c2cgeoportal_geoportal-2.9rc44.dist-info/RECORD +193 -0
- {c2cgeoportal_geoportal-2.3.5.80.dist-info → c2cgeoportal_geoportal-2.9rc44.dist-info}/WHEEL +1 -1
- c2cgeoportal_geoportal-2.9rc44.dist-info/entry_points.txt +28 -0
- c2cgeoportal_geoportal-2.9rc44.dist-info/top_level.txt +2 -0
- tests/__init__.py +100 -0
- tests/test_cachebuster.py +71 -0
- tests/test_caching.py +275 -0
- tests/test_checker.py +85 -0
- tests/test_decimaljson.py +47 -0
- tests/test_headerstween.py +64 -0
- tests/test_i18n.py +31 -0
- tests/test_init.py +193 -0
- tests/test_locale_negociator.py +69 -0
- tests/test_mapserverproxy_route_predicate.py +64 -0
- tests/test_raster.py +267 -0
- tests/test_wmstparsing.py +238 -0
- tests/xmlstr.py +103 -0
- c2cgeoportal_geoportal-2.3.5.80.dist-info/DESCRIPTION.rst +0 -8
- c2cgeoportal_geoportal-2.3.5.80.dist-info/RECORD +0 -7
- c2cgeoportal_geoportal-2.3.5.80.dist-info/entry_points.txt +0 -22
- c2cgeoportal_geoportal-2.3.5.80.dist-info/metadata.json +0 -1
- c2cgeoportal_geoportal-2.3.5.80.dist-info/top_level.txt +0 -1
@@ -0,0 +1,175 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
throwErrorOnExtraParameters: true
|
4
|
+
defaultToSvg: true
|
5
|
+
resourceBundle: localisation
|
6
|
+
|
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}
|
12
|
+
- !localMatch {}
|
13
|
+
|
14
|
+
templates:
|
15
|
+
1 A4 portrait: !template
|
16
|
+
reportTemplate: A4_Portrait.jrxml
|
17
|
+
attributes:
|
18
|
+
title:
|
19
|
+
!string &title
|
20
|
+
default: ""
|
21
|
+
username:
|
22
|
+
!string &username
|
23
|
+
default: ""
|
24
|
+
comments:
|
25
|
+
!string &comments
|
26
|
+
default: ""
|
27
|
+
debug:
|
28
|
+
!boolean &debug
|
29
|
+
default: false
|
30
|
+
legend: !legend &legend {}
|
31
|
+
map:
|
32
|
+
!map &map
|
33
|
+
maxDpi: 254
|
34
|
+
dpiSuggestions: [254]
|
35
|
+
zoomLevels:
|
36
|
+
!zoomLevels
|
37
|
+
scales: [100, 250, 500, 2500, 5000, 10000, 25000, 50000, 100000, 500000]
|
38
|
+
width: 555
|
39
|
+
height: 675
|
40
|
+
northArrow:
|
41
|
+
!northArrow &northArrow
|
42
|
+
size: 40
|
43
|
+
default:
|
44
|
+
graphic: "file:///north.svg"
|
45
|
+
scalebar:
|
46
|
+
!scalebar &scalebar
|
47
|
+
width: 150
|
48
|
+
height: 20
|
49
|
+
default:
|
50
|
+
fontSize: 8
|
51
|
+
timezone:
|
52
|
+
!string &timezone
|
53
|
+
default: "Europe/Zurich"
|
54
|
+
datasource:
|
55
|
+
!datasource &datasource
|
56
|
+
attributes:
|
57
|
+
title: !string {}
|
58
|
+
table: !table {}
|
59
|
+
|
60
|
+
processors: &processors
|
61
|
+
- !reportBuilder # compile all reports in current directory
|
62
|
+
directory: '.'
|
63
|
+
- !configureHttpRequests &configureHttpRequests
|
64
|
+
httpProcessors:
|
65
|
+
- !forwardHeaders
|
66
|
+
matchers: *allowedHosts
|
67
|
+
headers:
|
68
|
+
- Cookie
|
69
|
+
## For internal print
|
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}tiles(.*): "${TILECLOUDCHAIN_INTERNAL_URL}${VISIBLE_ENTRY_POINT}tiles$1"
|
73
|
+
${DISABLE_LOCAL_PRINT}- !mapUri
|
74
|
+
${DISABLE_LOCAL_PRINT} mapping:
|
75
|
+
${DISABLE_LOCAL_PRINT} https?://${VISIBLE_WEB_HOST_RE_ESCAPED}${VISIBLE_ENTRY_POINT_RE_ESCAPED}(.*): "${GEOPORTAL_INTERNAL_URL}${VISIBLE_ENTRY_POINT}$1"
|
76
|
+
${DISABLE_LOCAL_PRINT}- !forwardHeaders
|
77
|
+
${DISABLE_LOCAL_PRINT} matchers:
|
78
|
+
${DISABLE_LOCAL_PRINT} - !hostnameMatch
|
79
|
+
${DISABLE_LOCAL_PRINT} host: ${GEOPORTAL_INTERNAL_HOST}
|
80
|
+
${DISABLE_LOCAL_PRINT} port: ${GEOPORTAL_INTERNAL_PORT}
|
81
|
+
## End for internal print
|
82
|
+
- !forwardHeaders
|
83
|
+
headers:
|
84
|
+
- Referer
|
85
|
+
- X-Request-ID
|
86
|
+
- Forwarded
|
87
|
+
- !restrictUris
|
88
|
+
matchers:
|
89
|
+
- !localMatch
|
90
|
+
reject: true
|
91
|
+
- !hostnameMatch
|
92
|
+
host: geoportal
|
93
|
+
- !hostnameMatch
|
94
|
+
host: tilecloudchain
|
95
|
+
- !ipMatch
|
96
|
+
ip: 10.0.0.0
|
97
|
+
mask: 255.0.0.0
|
98
|
+
reject: true
|
99
|
+
- !ipMatch
|
100
|
+
ip: 172.16.0.0
|
101
|
+
mask: 255.240.0.0
|
102
|
+
reject: true
|
103
|
+
- !ipMatch
|
104
|
+
ip: 192.168.0.0
|
105
|
+
mask: 255.255.0.0
|
106
|
+
reject: true
|
107
|
+
- !acceptAll {}
|
108
|
+
- !prepareLegend
|
109
|
+
maxWidth: 185
|
110
|
+
template: legend.jrxml
|
111
|
+
- !createMap {}
|
112
|
+
- !createNorthArrow {}
|
113
|
+
- !createScalebar {}
|
114
|
+
- !createDataSource
|
115
|
+
processors:
|
116
|
+
- !prepareTable
|
117
|
+
dynamic: true
|
118
|
+
columns:
|
119
|
+
icon: !urlImage
|
120
|
+
urlExtractor: (.*)
|
121
|
+
urlGroup: 1
|
122
|
+
|
123
|
+
2 A4 landscape: !template
|
124
|
+
reportTemplate: A4_Landscape.jrxml
|
125
|
+
attributes:
|
126
|
+
title: *title
|
127
|
+
username: *username
|
128
|
+
comments: *comments
|
129
|
+
debug: *debug
|
130
|
+
legend: *legend
|
131
|
+
map: !map
|
132
|
+
<<: *map
|
133
|
+
width: 800
|
134
|
+
height: 441
|
135
|
+
northArrow: *northArrow
|
136
|
+
scalebar: *scalebar
|
137
|
+
timezone: *timezone
|
138
|
+
datasource: *datasource
|
139
|
+
processors: *processors
|
140
|
+
|
141
|
+
3 A3 portrait: !template
|
142
|
+
reportTemplate: A3_Portrait.jrxml
|
143
|
+
attributes:
|
144
|
+
title: *title
|
145
|
+
username: *username
|
146
|
+
comments: *comments
|
147
|
+
debug: *debug
|
148
|
+
legend: *legend
|
149
|
+
map: !map
|
150
|
+
<<: *map
|
151
|
+
width: 800
|
152
|
+
height: 1000
|
153
|
+
northArrow: *northArrow
|
154
|
+
scalebar: *scalebar
|
155
|
+
timezone: *timezone
|
156
|
+
datasource: *datasource
|
157
|
+
processors: *processors
|
158
|
+
|
159
|
+
4 A3 landscape: !template
|
160
|
+
reportTemplate: A3_Landscape.jrxml
|
161
|
+
attributes:
|
162
|
+
title: *title
|
163
|
+
username: *username
|
164
|
+
comments: *comments
|
165
|
+
debug: *debug
|
166
|
+
legend: *legend
|
167
|
+
map: !map
|
168
|
+
<<: *map
|
169
|
+
width: 1150
|
170
|
+
height: 673
|
171
|
+
northArrow: *northArrow
|
172
|
+
scalebar: *scalebar
|
173
|
+
timezone: *timezone
|
174
|
+
datasource: *datasource
|
175
|
+
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>
|
Binary file
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
width="140"
|
13
|
+
height="140"
|
14
|
+
id="svg2"
|
15
|
+
version="1.1"
|
16
|
+
inkscape:version="0.47 r22583"
|
17
|
+
sodipodi:docname="north.svg"
|
18
|
+
inkscape:export-filename="/home/sbrunner/nobackup/c2cgeoportal/svn/print/north.png"
|
19
|
+
inkscape:export-xdpi="90"
|
20
|
+
inkscape:export-ydpi="90">
|
21
|
+
<defs
|
22
|
+
id="defs4">
|
23
|
+
<inkscape:perspective
|
24
|
+
sodipodi:type="inkscape:persp3d"
|
25
|
+
inkscape:vp_x="0 : 526.18109 : 1"
|
26
|
+
inkscape:vp_y="0 : 1000 : 0"
|
27
|
+
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
28
|
+
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
29
|
+
id="perspective10" />
|
30
|
+
</defs>
|
31
|
+
<sodipodi:namedview
|
32
|
+
id="base"
|
33
|
+
pagecolor="#ffffff"
|
34
|
+
bordercolor="#666666"
|
35
|
+
borderopacity="1.0"
|
36
|
+
inkscape:pageopacity="0.0"
|
37
|
+
inkscape:pageshadow="2"
|
38
|
+
inkscape:zoom="5.8704606"
|
39
|
+
inkscape:cx="62.40214"
|
40
|
+
inkscape:cy="78.698265"
|
41
|
+
inkscape:document-units="px"
|
42
|
+
inkscape:current-layer="layer1"
|
43
|
+
showgrid="false"
|
44
|
+
inkscape:window-width="1680"
|
45
|
+
inkscape:window-height="999"
|
46
|
+
inkscape:window-x="0"
|
47
|
+
inkscape:window-y="24"
|
48
|
+
inkscape:window-maximized="1"
|
49
|
+
showguides="true"
|
50
|
+
inkscape:guide-bbox="true">
|
51
|
+
<sodipodi:guide
|
52
|
+
orientation="1,0"
|
53
|
+
position="70.049884,144.67949"
|
54
|
+
id="guide2817" />
|
55
|
+
</sodipodi:namedview>
|
56
|
+
<metadata
|
57
|
+
id="metadata7">
|
58
|
+
<rdf:RDF>
|
59
|
+
<cc:Work
|
60
|
+
rdf:about="">
|
61
|
+
<dc:format>image/svg+xml</dc:format>
|
62
|
+
<dc:type
|
63
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
64
|
+
<dc:title></dc:title>
|
65
|
+
</cc:Work>
|
66
|
+
</rdf:RDF>
|
67
|
+
</metadata>
|
68
|
+
<g
|
69
|
+
inkscape:label="Calque 1"
|
70
|
+
inkscape:groupmode="layer"
|
71
|
+
id="layer1"
|
72
|
+
transform="translate(0,-912.36218)">
|
73
|
+
<text
|
74
|
+
xml:space="preserve"
|
75
|
+
style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
76
|
+
x="55.370926"
|
77
|
+
y="1052.3622"
|
78
|
+
id="text2816"><tspan
|
79
|
+
sodipodi:role="line"
|
80
|
+
id="tspan2818"
|
81
|
+
x="55.370926"
|
82
|
+
y="1052.3622">N</tspan></text>
|
83
|
+
<path
|
84
|
+
style="fill:#000000;stroke:none"
|
85
|
+
d="m 50.917813,1020.8351 38.164374,0 L 70.063395,912.31552 50.917813,1020.8351 z"
|
86
|
+
id="path2820" />
|
87
|
+
<path
|
88
|
+
id="path2815"
|
89
|
+
d="m 54.740888,1017.689 15.308996,0 0.01351,-88.05017 -15.322507,88.05017 z"
|
90
|
+
style="fill:#ffffff;stroke:none"
|
91
|
+
sodipodi:nodetypes="cccc" />
|
92
|
+
</g>
|
93
|
+
</svg>
|
@@ -0,0 +1,25 @@
|
|
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="gmf16_A4_portrait" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
|
3
|
+
<field name="title" class="java.lang.String"/>
|
4
|
+
<field name="tableDataSource" class="net.sf.jasperreports.engine.data.JRMapCollectionDataSource"/>
|
5
|
+
<field name="tableSubReport" class="java.lang.String"/>
|
6
|
+
<detail>
|
7
|
+
<band height="65">
|
8
|
+
<textField>
|
9
|
+
<reportElement x="0" y="0" width="460" height="20" forecolor="#424242"/>
|
10
|
+
<textElement>
|
11
|
+
<font size="16" isBold="true"/>
|
12
|
+
</textElement>
|
13
|
+
<textFieldExpression><![CDATA["RÉSULTATS - " + $F{title}]]></textFieldExpression>
|
14
|
+
</textField>
|
15
|
+
<subreport>
|
16
|
+
<reportElement x="0" y="23" width="255" height="42"/>
|
17
|
+
<dataSourceExpression><![CDATA[$F{tableDataSource}]]></dataSourceExpression>
|
18
|
+
<subreportExpression><![CDATA[$F{tableSubReport}]]></subreportExpression>
|
19
|
+
</subreport>
|
20
|
+
<break>
|
21
|
+
<reportElement x="0" y="64" width="100" height="1"/>
|
22
|
+
</break>
|
23
|
+
</band>
|
24
|
+
</detail>
|
25
|
+
</jasperReport>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
---
|
2
|
+
project_folder: {{cookiecutter.project}}
|
3
|
+
project_package: {{cookiecutter.package}}
|
4
|
+
application_url: https://localhost:8484/
|
5
|
+
checker_url: https://172.17.0.1:8484/c2c/health_check?max_level=9
|
6
|
+
managed_files: []
|
7
|
+
unmanaged_files: []
|
8
|
+
template_vars:
|
9
|
+
package: {{cookiecutter.package}}
|
10
|
+
srid: {{cookiecutter.srid}}
|
11
|
+
extent: {{cookiecutter.extent}}
|
12
|
+
authtkt_secret: {{cookiecutter.authtkt_secret}}
|
13
|
+
env:
|
14
|
+
files:
|
15
|
+
- env.default
|
16
|
+
- env.project
|
17
|
+
required_args: 0
|
18
|
+
help: No arguments needed.
|
c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/qgisserver/pg_service.conf.tmpl
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
[{{cookiecutter.package}}]
|
2
|
+
host=${PGHOST_SLAVE}
|
3
|
+
port=${PGPORT_SLAVE}
|
4
|
+
#sslmode=${PGSSLMODE}
|
5
|
+
user=${PGUSER}
|
6
|
+
password=${PGPASSWORD}
|
7
|
+
dbname=${PGDATABASE}
|
8
|
+
|
9
|
+
[{{cookiecutter.package}}_master]
|
10
|
+
host=${PGHOST}
|
11
|
+
port=${PGPORT}
|
12
|
+
#sslmode=${PGSSLMODE}
|
13
|
+
user=${PGUSER}
|
14
|
+
password=${PGPASSWORD}
|
15
|
+
dbname=${PGDATABASE}
|
@@ -0,0 +1,126 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
|
3
|
+
# Copyright (c) 2021-2024, 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 shlex
|
33
|
+
import subprocess
|
34
|
+
import sys
|
35
|
+
|
36
|
+
|
37
|
+
def main() -> None:
|
38
|
+
"""Backup the database."""
|
39
|
+
parser = argparse.ArgumentParser(description="Backup the database.")
|
40
|
+
parser.add_argument("--verbose", action="store_true", help="Print the command that is executed.")
|
41
|
+
parser.add_argument(
|
42
|
+
"--dry-run", action="store_true", help="Only print the command that would be executed."
|
43
|
+
)
|
44
|
+
parser.add_argument(
|
45
|
+
"--env",
|
46
|
+
default=".env",
|
47
|
+
help="The env file to use to get the connection settings, by default we log in the composition "
|
48
|
+
"to do the dump.",
|
49
|
+
)
|
50
|
+
parser.add_argument(
|
51
|
+
"--arg",
|
52
|
+
action="append",
|
53
|
+
default=[],
|
54
|
+
help="Additional pg_dump argument, example: '--arg=--schema=main', may be used multiple times.",
|
55
|
+
)
|
56
|
+
parser.add_argument("file", help="The file path to backup")
|
57
|
+
args = parser.parse_args()
|
58
|
+
|
59
|
+
with open(args.file, "w", encoding="utf-8") as file_out:
|
60
|
+
if args.env:
|
61
|
+
env = {}
|
62
|
+
with open(args.env, encoding="utf-8") as file_env:
|
63
|
+
for line in file_env:
|
64
|
+
if line and line[0] != "#":
|
65
|
+
try:
|
66
|
+
index = line.index("=")
|
67
|
+
env[line[:index].strip()] = line[index + 1 :].strip()
|
68
|
+
except ValueError:
|
69
|
+
# Ignore lines that don't have a '='
|
70
|
+
pass
|
71
|
+
command1 = [
|
72
|
+
"docker",
|
73
|
+
"run",
|
74
|
+
"--rm",
|
75
|
+
"--env=PGHOST={}".format(env["PGHOST_SLAVE"]),
|
76
|
+
"--env=PGPORT={}".format(env["PGPORT_SLAVE"]),
|
77
|
+
"--env=PGUSER={}".format(env["PGUSER"]),
|
78
|
+
]
|
79
|
+
command2 = ["--env=PGPASSWORD={}".format(env["PGPASSWORD"])]
|
80
|
+
command2_annon = ["--env=PGPASSWORD=***"]
|
81
|
+
command3 = [
|
82
|
+
*(["--env=PGSSLMODE={}".format(env["PGSSLMODE"])] if "PGSSLMODE" in env else []),
|
83
|
+
*(["--env=PGOPTIONS={}".format(env["PGOPTIONS"])] if "PGOPTIONS" in env else []),
|
84
|
+
"camptocamp/postgres:{}".format(env["POSTGRES_TAG"]),
|
85
|
+
"pg_dump",
|
86
|
+
"--format=c",
|
87
|
+
"--dbname={}".format(env["PGDATABASE"]),
|
88
|
+
*args.arg,
|
89
|
+
]
|
90
|
+
if args.dry_run or args.verbose:
|
91
|
+
subprocess.run(
|
92
|
+
[
|
93
|
+
"docker",
|
94
|
+
"run",
|
95
|
+
"--rm",
|
96
|
+
"camptocamp/postgres:{}".format(env["POSTGRES_TAG"]),
|
97
|
+
"pg_dump",
|
98
|
+
"--version",
|
99
|
+
]
|
100
|
+
)
|
101
|
+
print(shlex.join([*command1, *command2_annon, *command3]))
|
102
|
+
if args.dry_run:
|
103
|
+
sys.exit(0)
|
104
|
+
sys.exit(subprocess.run([*command1, *command2, *command3], stdout=file_out).returncode)
|
105
|
+
else:
|
106
|
+
command = [
|
107
|
+
"docker",
|
108
|
+
"compose",
|
109
|
+
"exec",
|
110
|
+
"-T",
|
111
|
+
"tools",
|
112
|
+
"bash",
|
113
|
+
"-c",
|
114
|
+
'pg_dump --format=c --dbname="$PGDATABASE"',
|
115
|
+
*args.arg,
|
116
|
+
]
|
117
|
+
if args.dry_run or args.verbose:
|
118
|
+
subprocess.run(["docker", "compose", "exec", "tools", "pg_dump", "--version"])
|
119
|
+
print(shlex.join(command))
|
120
|
+
if args.dry_run:
|
121
|
+
sys.exit(0)
|
122
|
+
sys.exit(subprocess.run(command, stdout=file_out).returncode)
|
123
|
+
|
124
|
+
|
125
|
+
if __name__ == "__main__":
|
126
|
+
main()
|