c2cgeoportal-geoportal 2.3.5.80__py3-none-any.whl → 2.9rc45__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 +209 -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.9rc45.dist-info}/METADATA +21 -24
- c2cgeoportal_geoportal-2.9rc45.dist-info/RECORD +193 -0
- {c2cgeoportal_geoportal-2.3.5.80.dist-info → c2cgeoportal_geoportal-2.9rc45.dist-info}/WHEEL +1 -1
- c2cgeoportal_geoportal-2.9rc45.dist-info/entry_points.txt +28 -0
- c2cgeoportal_geoportal-2.9rc45.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
c2cgeoportal_geoportal/scaffolds/advance_update/{{cookiecutter.project}}/geoportal/CONST_Makefile
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
export PACKAGE = {{cookiecutter.package}}
|
2
|
+
|
3
|
+
TEMPLATE_EXCLUDE += $(PACKAGE)_geoportal/static/lib
|
4
|
+
FIND_OPTS = $(foreach ELEM, $(TEMPLATE_EXCLUDE),-path ./$(ELEM) -prune -o) -type f
|
5
|
+
|
6
|
+
ifneq ($(NGEO_INTERFACES), "")
|
7
|
+
DEFAULT_WEB_RULE += $(NGEO_OUTPUT_FILES)
|
8
|
+
endif
|
9
|
+
ifneq ($(NGEO_API), "")
|
10
|
+
DEFAULT_WEB_RULE += $(NGEO_API_OUTPUT_FILES)
|
11
|
+
endif
|
12
|
+
|
13
|
+
WEB_RULE ?= $(DEFAULT_WEB_RULE)
|
14
|
+
|
15
|
+
DEFAULT_BUILD_RULES ?= $(WEB_RULE) \
|
16
|
+
alembic.ini \
|
17
|
+
alembic.yaml \
|
18
|
+
build-api
|
19
|
+
|
20
|
+
|
21
|
+
# Make rules
|
22
|
+
BUILD_RULES ?= $(filter-out $(DISABLE_BUILD_RULES),$(DEFAULT_BUILD_RULES))
|
23
|
+
|
24
|
+
OUTPUT_DIR = $(PACKAGE)_geoportal/static/build
|
25
|
+
|
26
|
+
# ngeo
|
27
|
+
NODE_ENV ?= production
|
28
|
+
export NODE_ENV
|
29
|
+
NO_DEV_SERVER ?= TRUE
|
30
|
+
export NO_DEV_SERVER
|
31
|
+
APP_OUTPUT_DIR = /etc/static-ngeo
|
32
|
+
APP_JS_FILES = $(shell find $(PACKAGE)_geoportal/static-ngeo/js -type f -name '*.js' 2> /dev/null)
|
33
|
+
ANGULAR_LOCALES_FILES = $(addprefix $(APP_OUTPUT_DIR)/angular-locale_, $(addsuffix .js, $(LANGUAGES)))
|
34
|
+
NGEO_OUTPUT_FILES = $(ANGULAR_LOCALES_FILES)
|
35
|
+
|
36
|
+
NGEO_API_OUTPUT_JS_FILE ?= $(APP_OUTPUT_DIR)/api.js.tmpl
|
37
|
+
NGEO_API_OUTPUT_FILES += $(NGEO_API_OUTPUT_JS_FILE) $(APP_OUTPUT_DIR)/api.css
|
38
|
+
|
39
|
+
WEBPACK_ARGS ?=
|
40
|
+
|
41
|
+
VALIDATE_PY_FOLDERS = admin/$(PACKAGE)_admin \
|
42
|
+
$(PACKAGE)_geoportal/*.py $(PACKAGE)_geoportal/lib \
|
43
|
+
$(PACKAGE)_geoportal/scripts $(PACKAGE)_geoportal/views
|
44
|
+
VALIDATE_PY_TEST_FOLDERS = $(PACKAGE)_geoportal/tests
|
45
|
+
|
46
|
+
# Disabling Make built-in rules to speed up execution time
|
47
|
+
.SUFFIXES:
|
48
|
+
|
49
|
+
.PHONY: build
|
50
|
+
build: $(BUILD_RULES)
|
51
|
+
|
52
|
+
# Server localisation
|
53
|
+
|
54
|
+
PO_FILES = $(addprefix $(PACKAGE)_geoportal/locale/, $(addsuffix /LC_MESSAGES/$(PACKAGE)_geoportal-server.po, $(LANGUAGES)))
|
55
|
+
|
56
|
+
.INTERMEDIATE: $(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot
|
57
|
+
$(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot: lingva-server.cfg $(SRC_FILES)
|
58
|
+
mkdir --parent $(dir $@)
|
59
|
+
[ -z "$(SRC_FILES)" ] || pot-create --width=110 --config=$< --keyword=_ --output=$@ $(SRC_FILES)
|
60
|
+
|
61
|
+
.PRECIOUS: $(PACKAGE)_geoportal/locale/%/LC_MESSAGES/$(PACKAGE)_geoportal-server.po
|
62
|
+
$(PACKAGE)_geoportal/locale/%/LC_MESSAGES/$(PACKAGE)_geoportal-server.po: \
|
63
|
+
$(PACKAGE)_geoportal/locale/$(PACKAGE)_geoportal-server.pot
|
64
|
+
mkdir --parent $(dir $@)
|
65
|
+
[ ! -f $< ] || [ -f $@ ] || msginit --no-translator --input=$< --output-file=$@ -l $*
|
66
|
+
touch --no-create $@
|
67
|
+
[ ! -f $< ] || msgmerge --backup=none --update --sort-output --no-location $@ $<
|
68
|
+
touch $@
|
69
|
+
chown $(USER_ID):$(GROUP_ID) $@
|
70
|
+
|
71
|
+
.PHONY: update-server-po
|
72
|
+
update-server-po: $(PO_FILES)
|
73
|
+
|
74
|
+
.PHONY: update-client-po
|
75
|
+
update-client-po:
|
76
|
+
cd .. && SUFFIX= update-po $(USER_ID) $(GROUP_ID) $(LANGUAGES)
|
77
|
+
|
78
|
+
.PHONY: update-po
|
79
|
+
update-po: update-server-po update-client-po
|
80
|
+
|
81
|
+
# ngeo
|
82
|
+
|
83
|
+
.PHONY: build-ngeo
|
84
|
+
build-ngeo: $(NGEO_OUTPUT_FILES)
|
85
|
+
|
86
|
+
$(APP_OUTPUT_DIR)/angular-locale_%.js: /opt/c2cgeoportal/geoportal/node_modules/ngeo/package.json language_mapping
|
87
|
+
mkdir --parent $(dir $@)
|
88
|
+
rm --force $@
|
89
|
+
cp /opt/angular-locale/angular-locale_`(grep $* language_mapping || echo $*) | cut --delimiter = --fields 2 | tr --delete '\r\n'`.js $@
|
90
|
+
|
91
|
+
$(APP_OUTPUT_DIR)/images/: /opt/c2cgeoportal/geoportal/node_modules/jquery-ui/themes/base/images
|
92
|
+
mkdir --parent $@
|
93
|
+
cp -r $</* $@
|
94
|
+
|
95
|
+
.PRECIOUS: $(APP_OUTPUT_DIR)/vendor%
|
96
|
+
$(APP_OUTPUT_DIR)/vendor%: /opt/vendor%
|
97
|
+
cp $< $@
|
98
|
+
|
99
|
+
apps: webpack.apps.js
|
100
|
+
rm --force $(addprefix $(APP_OUTPUT_DIR)/, $(addsuffix .*, $(NGEO_INTERFACES)))
|
101
|
+
webpack $(WEBPACK_ARGS)
|
102
|
+
for interface in $(NGEO_INTERFACES); \
|
103
|
+
do \
|
104
|
+
mv $(APP_OUTPUT_DIR)/$${interface}.html $(APP_OUTPUT_DIR)/$${interface}.html.tmpl; \
|
105
|
+
done
|
106
|
+
|
107
|
+
# API
|
108
|
+
|
109
|
+
.PHONY: build-api
|
110
|
+
build-api: $(NGEO_API_OUTPUT_FILES)
|
111
|
+
|
112
|
+
$(APP_OUTPUT_DIR)/api.js.tmpl: webpack.api.js $(PACKAGE)_geoportal/static-ngeo/api/index.js
|
113
|
+
webpack --config=webpack.api.js $(WEBPACK_ARGS)
|
114
|
+
cp $(APP_OUTPUT_DIR)/api.js $(APP_OUTPUT_DIR)/api.js_
|
115
|
+
sed --in-place --expression='s/\$$/$${DOLLAR}/g' $(APP_OUTPUT_DIR)/api.js
|
116
|
+
sed --in-place --expression='s#{FULL_ENTRY_POINT}#$${VISIBLE_WEB_PROTOCOL}://$${VISIBLE_WEB_HOST}$${VISIBLE_ENTRY_POINT}#g' $(APP_OUTPUT_DIR)/api.js
|
117
|
+
mv $(APP_OUTPUT_DIR)/api.js $@
|
118
|
+
|
119
|
+
|
120
|
+
$(APP_OUTPUT_DIR)/api.css: $(PACKAGE)_geoportal/static-ngeo/api/api.css
|
121
|
+
cp $< $@
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"project": "test_project",
|
3
|
+
"package": "test_project",
|
4
|
+
"srid": "2056",
|
5
|
+
"extent": "",
|
6
|
+
"extent_mapserver": "",
|
7
|
+
"authtkt_secret": "",
|
8
|
+
"unsafe_long_version": false,
|
9
|
+
"geomapfish_version": "",
|
10
|
+
"geomapfish_main_version": "",
|
11
|
+
"geomapfish_main_version_dash": "",
|
12
|
+
"geomapfish_main_minor_version": "",
|
13
|
+
"geomapfish_version_tag": "",
|
14
|
+
"geomapfish_version_tag_env": "",
|
15
|
+
"geomapfish_major_version_tag": "",
|
16
|
+
"geomapfish_major_version_tag_env": "",
|
17
|
+
"_copy_without_render": ["*.po", "*/contextualdata.html"]
|
18
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
*
|
2
|
+
!bin/
|
3
|
+
!mapserver/
|
4
|
+
!qgisserver/
|
5
|
+
!tilegeneration/
|
6
|
+
!haproxy/
|
7
|
+
!print/print-apps/
|
8
|
+
!geoportal/vars*.yaml
|
9
|
+
!geoportal/interfaces/
|
10
|
+
!geoportal/CONST_vars.yaml
|
11
|
+
!geoportal/CONST_config-schema.yaml
|
12
|
+
!geoportal/{{cookiecutter.package}}_geoportal/static
|
13
|
+
!geoportal/{{cookiecutter.package}}_geoportal/locale
|
14
|
+
geoportal/{{cookiecutter.package}}_geoportal/locale/*.pot
|
@@ -0,0 +1,17 @@
|
|
1
|
+
root = true
|
2
|
+
|
3
|
+
[*]
|
4
|
+
end_of_line = lf
|
5
|
+
insert_final_newline = true
|
6
|
+
charset = utf-8
|
7
|
+
indent_style = space
|
8
|
+
indent_size = 4
|
9
|
+
trim_trailing_whitespace = true
|
10
|
+
max_line_length = 110
|
11
|
+
quote_type = single
|
12
|
+
|
13
|
+
[*.{js,ts,css,scss,yaml,yml,json,html,md,yaml.tmpl}]
|
14
|
+
indent_size = 2
|
15
|
+
|
16
|
+
[{Makefile,*.mk}]
|
17
|
+
indent_style = tab
|
@@ -0,0 +1,73 @@
|
|
1
|
+
---
|
2
|
+
name: Continuous integration
|
3
|
+
|
4
|
+
on:
|
5
|
+
push:
|
6
|
+
|
7
|
+
# To publish the images to be used on Kubernetes
|
8
|
+
# env:
|
9
|
+
# PROJECT: {{cookiecutter.package}}
|
10
|
+
# HAS_SECRETS: ${{'{{'}} secrets.HAS_SECRETS }}
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
main:
|
14
|
+
runs-on: ubuntu-24.04
|
15
|
+
name: Continuous integration
|
16
|
+
timeout-minutes: 10
|
17
|
+
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v4
|
20
|
+
|
21
|
+
# To publish the images to be used on Kubernetes
|
22
|
+
# - uses: camptocamp/initialise-gopass-summon-action@v2
|
23
|
+
# with:
|
24
|
+
# ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
|
25
|
+
# github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
|
26
|
+
# patterns: docker
|
27
|
+
# if: env.HAS_SECRETS == 'HAS_SECRETS'
|
28
|
+
|
29
|
+
- uses: actions/setup-python@v5
|
30
|
+
with:
|
31
|
+
python-version: '3.11'
|
32
|
+
- run: python3 -m pip install --requirement=ci/requirements.txt
|
33
|
+
- name: Environment information
|
34
|
+
run: c2cciutils-env
|
35
|
+
|
36
|
+
- uses: actions/cache@v4
|
37
|
+
with:
|
38
|
+
path: ~/.cache/pre-commit
|
39
|
+
key: pre-commit-${{'{{'}} hashFiles('.pre-commit-config.yaml') }}
|
40
|
+
restore-keys: "pre-commit-${{'{{'}} hashFiles('.pre-commit-config.yaml') }}\npre-commit-"
|
41
|
+
- run: pre-commit run --all-files
|
42
|
+
- run: git diff --exit-code --patch > /tmp/pre-commit.patch || true
|
43
|
+
if: failure()
|
44
|
+
- uses: actions/upload-artifact@v4
|
45
|
+
with:
|
46
|
+
name: Apply pre-commit fix.patch
|
47
|
+
path: /tmp/pre-commit.patch
|
48
|
+
retention-days: 1
|
49
|
+
if: failure()
|
50
|
+
|
51
|
+
# Can be used to have some secrets (with mask)
|
52
|
+
# - run: make secrets
|
53
|
+
# - run: cat env.secrets |grep '^[# A-Z0-9_]\+='|sed -e 's/^[# A-Z0-9_]\+=\(.*\)/::add-mask::\1/g'
|
54
|
+
|
55
|
+
# - name: Initialize the acceptance tests
|
56
|
+
# run: make acceptance-init
|
57
|
+
# - run: c2cciutils-docker-logs
|
58
|
+
# if: always()
|
59
|
+
|
60
|
+
# - name: Run the acceptance tests
|
61
|
+
# run: make acceptance
|
62
|
+
# - run: c2cciutils-docker-logs
|
63
|
+
# if: always()
|
64
|
+
|
65
|
+
- name: Build
|
66
|
+
run: ./build
|
67
|
+
|
68
|
+
- name: Application checks
|
69
|
+
run: make checks
|
70
|
+
|
71
|
+
# To publish the images to be used on Kubernetes
|
72
|
+
# - name: Publish
|
73
|
+
# run: c2cciutils-publish
|
c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/rebuild.yaml
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
---
|
2
|
+
name: Rebuild
|
3
|
+
|
4
|
+
on:
|
5
|
+
schedule:
|
6
|
+
- cron: '30 2 * * *'
|
7
|
+
|
8
|
+
env:
|
9
|
+
PROJECT: {{cookiecutter.package}}
|
10
|
+
# Requires CI_GPG_PRIVATE_KEY and GOPASS_CI_GITHUB_TOKEN secrets.
|
11
|
+
# OPENSHIFT_PROJECT: gs-gmf-{{cookiecutter.package}}
|
12
|
+
# The release branches
|
13
|
+
HELM_RELEASE_NAMES: int-{{cookiecutter.geomapfish_main_version_dash}},prod-{{cookiecutter.geomapfish_main_version_dash}}
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
rebuild:
|
17
|
+
runs-on: ubuntu-24.04
|
18
|
+
name: Rebuild
|
19
|
+
timeout-minutes: 10
|
20
|
+
|
21
|
+
strategy:
|
22
|
+
fail-fast: false
|
23
|
+
matrix:
|
24
|
+
branch:
|
25
|
+
- int-{{cookiecutter.geomapfish_main_version_dash}}
|
26
|
+
- prod-{{cookiecutter.geomapfish_main_version_dash}}
|
27
|
+
|
28
|
+
steps:
|
29
|
+
- uses: actions/checkout@v4
|
30
|
+
with:
|
31
|
+
ref: ${{'{{'}} matrix.branch }}
|
32
|
+
|
33
|
+
- uses: camptocamp/initialise-gopass-summon-action@v2
|
34
|
+
with:
|
35
|
+
ci-gpg-private-key: ${{'{{'}} secrets.CI_GPG_PRIVATE_KEY }}
|
36
|
+
github-gopass-ci-token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN }}
|
37
|
+
patterns: docker
|
38
|
+
|
39
|
+
- uses: actions/setup-python@v5
|
40
|
+
with:
|
41
|
+
python-version: '3.11'
|
42
|
+
- run: python3 -m pip install --requirement=ci/requirements.txt
|
43
|
+
- name: Environment information
|
44
|
+
run: c2cciutils-env
|
45
|
+
|
46
|
+
- name: Build
|
47
|
+
run: ./build
|
48
|
+
|
49
|
+
- name: Publish
|
50
|
+
run: c2cciutils-publish --branch=${{'{{'}} matrix.branch }} --type=rebuild
|
c2cgeoportal_geoportal/scaffolds/create/{{cookiecutter.project}}/.github/workflows/update_l10n.yaml
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
---
|
2
|
+
name: Update l10n cron job
|
3
|
+
|
4
|
+
on:
|
5
|
+
schedule:
|
6
|
+
- cron: '0 3 * * *'
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
l10n:
|
10
|
+
runs-on: ubuntu-24.04
|
11
|
+
name: Update l10n cron job
|
12
|
+
timeout-minutes: 10
|
13
|
+
|
14
|
+
strategy:
|
15
|
+
fail-fast: false
|
16
|
+
matrix:
|
17
|
+
include:
|
18
|
+
- branch: int-{{cookiecutter.geomapfish_main_version_dash}}
|
19
|
+
base_url: int.customer.ch
|
20
|
+
- branch: prod-{{cookiecutter.geomapfish_main_version_dash}}
|
21
|
+
base_url: prod.customer.ch
|
22
|
+
|
23
|
+
steps:
|
24
|
+
- uses: actions/checkout@v4
|
25
|
+
with:
|
26
|
+
ref: ${{'{{'}} matrix.branch {{'}}'}}
|
27
|
+
token: ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN {{'}}'}}
|
28
|
+
|
29
|
+
- run: ./build --env
|
30
|
+
- run: PROJECT_PUBLIC_URL=${{'{{'}} matrix.base_url {{'}}'}} make -e update-po-from-url
|
31
|
+
|
32
|
+
- name: Init Git
|
33
|
+
run: |
|
34
|
+
git config --global user.email "geospatial-bot@camptocamp.com"
|
35
|
+
git config --global user.name CI
|
36
|
+
|
37
|
+
- id: status
|
38
|
+
run: echo "status=$(git diff --exit-code --quiet && echo 'unchanged' || echo 'changed')" >> $GITHUB_OUTPUT
|
39
|
+
|
40
|
+
- name: Push l10n branch and create pull request
|
41
|
+
run: |
|
42
|
+
sudo chown -R $(id -u) .
|
43
|
+
git add --all || true
|
44
|
+
git status
|
45
|
+
git commit -m "Update the l10n files"
|
46
|
+
git push --force origin HEAD:l10n-${{'{{'}} matrix.branch {{'}}'}}
|
47
|
+
python3 -c "import requests
|
48
|
+
response = requests.post(
|
49
|
+
'https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls',
|
50
|
+
json={
|
51
|
+
'title': 'Update the l10n files on ${{'{{'}} matrix.branch {{'}}'}}',
|
52
|
+
'body': '',
|
53
|
+
'head': 'l10n-${{'{{'}} matrix.branch {{'}}'}}',
|
54
|
+
'base': '${{'{{'}} matrix.branch {{'}}'}}',
|
55
|
+
'maintainer_can_modify': True
|
56
|
+
},
|
57
|
+
headers={
|
58
|
+
'Accept': 'application/vnd.github.v3+json',
|
59
|
+
'Authorization': 'Bearer ${{'{{'}} secrets.GOPASS_CI_GITHUB_TOKEN {{'}}'}}',
|
60
|
+
'Content-Type': 'application/json',
|
61
|
+
},
|
62
|
+
timeout=120,
|
63
|
+
)
|
64
|
+
# 422 is the return code when the pull request already exists
|
65
|
+
assert response.status_code < 300 or response.status_code == 422, f'{response.status_code} - {response.text}'"
|
66
|
+
if: steps.status.outputs.status != 'unchanged'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
*.pyc
|
2
|
+
*.pyo
|
3
|
+
__pycache__/
|
4
|
+
/.env
|
5
|
+
/env.personal
|
6
|
+
/docker-compose.override.yaml
|
7
|
+
/upgrade
|
8
|
+
/.upgrade.yaml
|
9
|
+
/.UPGRADE*
|
10
|
+
/geoportal/{{cookiecutter.package}}_geoportal/locale/{{cookiecutter.package}}_geoportal-client.pot
|
11
|
+
|
12
|
+
# Generated with dev mode
|
13
|
+
/geoportal/{{cookiecutter.package}}_geoportal/static/apihelp/index.html
|
14
|
+
/geoportal/{{cookiecutter.package}}_geoportal/static/robot.txt
|
15
|
+
/print/print-apps/{{cookiecutter.package}}/config.yaml
|
16
|
+
/mapserver/tinyows.xml
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# https://pre-commit.com/hooks.html
|
2
|
+
|
3
|
+
ci:
|
4
|
+
autoupdate_schedule: quarterly
|
5
|
+
skip:
|
6
|
+
- ripsecrets
|
7
|
+
|
8
|
+
repos:
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
10
|
+
rev: v5.0.0
|
11
|
+
hooks:
|
12
|
+
- id: detect-private-key
|
13
|
+
- id: end-of-file-fixer
|
14
|
+
- id: trailing-whitespace
|
15
|
+
args:
|
16
|
+
- --markdown-linebreak-ext=.md
|
17
|
+
- id: mixed-line-ending
|
18
|
+
args:
|
19
|
+
- --fix=lf
|
20
|
+
- repo: https://github.com/pre-commit/mirrors-prettier
|
21
|
+
rev: v3.1.0
|
22
|
+
hooks:
|
23
|
+
- id: prettier
|
24
|
+
- repo: https://github.com/PyCQA/autoflake
|
25
|
+
rev: v2.3.1
|
26
|
+
hooks:
|
27
|
+
- id: autoflake
|
28
|
+
- repo: https://github.com/PyCQA/isort
|
29
|
+
rev: 5.13.2
|
30
|
+
hooks:
|
31
|
+
- id: isort
|
32
|
+
- repo: https://github.com/psf/black
|
33
|
+
rev: 24.10.0
|
34
|
+
hooks:
|
35
|
+
- id: black
|
@@ -0,0 +1 @@
|
|
1
|
+
*.min.js
|
@@ -0,0 +1,75 @@
|
|
1
|
+
ARG {{cookiecutter.geomapfish_version_tag}}
|
2
|
+
ARG {{cookiecutter.geomapfish_major_version_tag}}
|
3
|
+
|
4
|
+
FROM camptocamp/geomapfish-tools:{{cookiecutter.geomapfish_version_tag_env}} AS builder
|
5
|
+
|
6
|
+
ENV VARS_FILE=vars.yaml
|
7
|
+
ENV CONFIG_VARS sqlalchemy.url sqlalchemy.pool_recycle sqlalchemy.pool_size sqlalchemy.max_overflow \
|
8
|
+
sqlalchemy.executemany_mode sqlalchemy_slave.url sqlalchemy_slave.pool_recycle sqlalchemy_slave.pool_size \
|
9
|
+
sqlalchemy_slave.max_overflow sqlalchemy_slave.executemany_mode schema schema_static enable_admin_interface \
|
10
|
+
default_locale_name servers layers cache admin_interface getitfixed functionalities \
|
11
|
+
raster shortener hide_capabilities tinyowsproxy resourceproxy print_url print_get_redirect \
|
12
|
+
checker check_collector default_max_age package srid \
|
13
|
+
reset_password fulltextsearch global_headers headers authorized_referers hooks stats db_chooser \
|
14
|
+
dbsessions urllogin host_forward_host headers_whitelist headers_blacklist \
|
15
|
+
smtp c2c.base_path welcome_email \
|
16
|
+
lingva_extractor interfaces_config interfaces devserver_url api authentication intranet metrics pdfreport \
|
17
|
+
vector_tiles i18next main_ogc_server static_files
|
18
|
+
|
19
|
+
COPY . /tmp/config/
|
20
|
+
|
21
|
+
ARG SIMPLE
|
22
|
+
ENV SIMPLE=$SIMPLE
|
23
|
+
|
24
|
+
RUN build-l10n "{{cookiecutter.package}}"
|
25
|
+
|
26
|
+
ARG PGSCHEMA
|
27
|
+
ENV PGSCHEMA=$PGSCHEMA
|
28
|
+
|
29
|
+
RUN \
|
30
|
+
cd /tmp/config/geoportal/ \
|
31
|
+
&& c2c-template --vars ${VARS_FILE} \
|
32
|
+
--get-config {{cookiecutter.package}}_geoportal/config.yaml \
|
33
|
+
${CONFIG_VARS} \
|
34
|
+
&& pykwalify --data-file {{cookiecutter.package}}_geoportal/config.yaml \
|
35
|
+
--schema-file CONST_config-schema.yaml \
|
36
|
+
&& rm CONST_* vars.yaml \
|
37
|
+
&& qgisserver-plugin-config {{cookiecutter.package}}_geoportal/config.yaml ../qgisserver/geomapfish.yaml.tmpl
|
38
|
+
|
39
|
+
###############################################################################
|
40
|
+
|
41
|
+
FROM camptocamp/geomapfish-config:{{cookiecutter.geomapfish_major_version_tag_env}} AS gmf_config
|
42
|
+
|
43
|
+
ARG PGSCHEMA
|
44
|
+
ENV PGSCHEMA=$PGSCHEMA
|
45
|
+
|
46
|
+
COPY --from=builder /tmp/config/ /tmp/config/
|
47
|
+
|
48
|
+
RUN \
|
49
|
+
mvif /tmp/config/mapserver /etc/ \
|
50
|
+
&& mvif /tmp/config/tilegeneration /etc/ \
|
51
|
+
&& mvif /tmp/config/qgisserver /etc/qgisserver \
|
52
|
+
&& mvif /tmp/config/haproxy/* /etc/haproxy/ \
|
53
|
+
&& mkdir --parent /usr/local/tomcat/webapps/ROOT/ \
|
54
|
+
&& mvif /tmp/config/print /tmp/config/print/print-apps /usr/local/tomcat/webapps/ROOT/ \
|
55
|
+
&& mv /tmp/config/geoportal/{{cookiecutter.package}}_geoportal/ /etc/geomapfish/ \
|
56
|
+
&& mv /tmp/config/geoportal/* /etc/geomapfish/ || true \
|
57
|
+
&& chmod g+w -R \
|
58
|
+
/etc/geomapfish \
|
59
|
+
/etc/mapserver \
|
60
|
+
/etc/qgisserver \
|
61
|
+
/etc/tilegeneration \
|
62
|
+
/usr/local/tomcat/webapps/ROOT/print-apps \
|
63
|
+
/etc/haproxy_dev \
|
64
|
+
/etc/haproxy \
|
65
|
+
&& sed 's#bind :80#bind *:443 ssl crt /etc/haproxy_dev/localhost.pem#g' /etc/haproxy/haproxy.cfg.tmpl \
|
66
|
+
> /etc/haproxy_dev/haproxy.cfg.tmpl \
|
67
|
+
&& echo ' http-request set-header X-Forwarded-Proto https' >> /etc/haproxy_dev/haproxy.cfg.tmpl
|
68
|
+
|
69
|
+
VOLUME /etc/geomapfish \
|
70
|
+
/etc/mapserver \
|
71
|
+
/etc/qgisserver \
|
72
|
+
/etc/tilegeneration \
|
73
|
+
/usr/local/tomcat/webapps/ROOT/print-apps \
|
74
|
+
/etc/haproxy_dev \
|
75
|
+
/etc/haproxy
|
@@ -0,0 +1,70 @@
|
|
1
|
+
PROJECT_PUBLIC_URL=https://example.camptocamp.com/
|
2
|
+
DUMP_FILE=dump.backup
|
3
|
+
PACKAGE={{cookiecutter.package}}
|
4
|
+
LANGUAGES=en fr de it
|
5
|
+
|
6
|
+
.PHONY: help
|
7
|
+
help: ## Display this help message
|
8
|
+
@echo "Usage: make <target>"
|
9
|
+
@echo
|
10
|
+
@echo "Available targets:"
|
11
|
+
@grep --extended-regexp --no-filename '^[a-zA-Z_-]+:.*## ' $(MAKEFILE_LIST) | sort | \
|
12
|
+
awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s%s\n", $$1, $$2}'
|
13
|
+
|
14
|
+
.PHONY: update-po-from-url
|
15
|
+
update-po-from-url: ## Update the po files from the URL provide by PROJECT_PUBLIC_URL
|
16
|
+
curl --fail --retry 5 --retry-delay 1 \
|
17
|
+
$(PROJECT_PUBLIC_URL)locale.pot > geoportal/${PACKAGE}_geoportal/locale/${PACKAGE}_geoportal-client${SUFFIX}.pot
|
18
|
+
sed -i '/^"POT-Creation-Date: /d' geoportal/${PACKAGE}_geoportal/locale/${PACKAGE}_geoportal-client${SUFFIX}.pot
|
19
|
+
docker compose run --rm -T tools update-po-only `id --user` `id --group` $(LANGUAGES)
|
20
|
+
|
21
|
+
.PHONY: update-po
|
22
|
+
update-po: ## Update the po files from the running composition
|
23
|
+
docker compose exec -T tools sh -c "USER_ID=`id --user` GROUP_ID=`id --group` make --directory=geoportal update-po"
|
24
|
+
|
25
|
+
.PHONY: checks
|
26
|
+
checks: prospector eslint ## Runs the checks
|
27
|
+
|
28
|
+
.PHONY: prospector
|
29
|
+
prospector: ## Runs the Prospector checks
|
30
|
+
docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
|
31
|
+
prospector --output-format=pylint --die-on-tool-error
|
32
|
+
|
33
|
+
.PHONY: eslint
|
34
|
+
eslint: ## Runs the eslint checks
|
35
|
+
docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
|
36
|
+
eslint $(find {{cookiecutter.package}} -type f -name '*.js' -print 2> /dev/null)
|
37
|
+
docker compose run --entrypoint= --no-deps --rm --volume=$(CURDIR)/geoportal:/app geoportal \
|
38
|
+
eslint $(find {{cookiecutter.package}} -type f -name '*.ts' -print 2> /dev/null)
|
39
|
+
|
40
|
+
.PHONY: qgis
|
41
|
+
qgis: ## Run QGIS desktop
|
42
|
+
docker compose -f docker-compose.yaml -f docker-compose-qgis.yaml run --rm qgis
|
43
|
+
|
44
|
+
secrets.tar.bz2.gpg: env.secrets ## Encrypt the secrets for committing changes
|
45
|
+
tar -jcf secrets.tar.bz2 $^
|
46
|
+
rm -f $@
|
47
|
+
gpg --symmetric --cipher-algo AES256 --batch \
|
48
|
+
--passphrase=$(shell gopass show gs/ci/large-secret-passphrase) secrets.tar.bz2
|
49
|
+
rm secrets.tar.bz2
|
50
|
+
|
51
|
+
.PHONY: secrets
|
52
|
+
secrets: ## Decrypt the secrets.tar.bz2.gpg file
|
53
|
+
gpg --quiet --batch --yes --decrypt --passphrase=$(shell gopass show gs/ci/large-secret-passphrase) \
|
54
|
+
--output secrets.tar.bz2 secrets.tar.bz2.gpg
|
55
|
+
tar --touch -jxf secrets.tar.bz2
|
56
|
+
rm secrets.tar.bz2
|
57
|
+
|
58
|
+
.PHONY: acceptance-init
|
59
|
+
acceptance-init: ## Initialize the acceptance tests
|
60
|
+
docker compose --file=docker-compose.yaml --file=docker-compose-db.yaml up -d db tools
|
61
|
+
docker compose exec -T tools wait-db
|
62
|
+
docker compose exec -T tools psql --command="DROP EXTENSION IF EXISTS postgis CASCADE"
|
63
|
+
scripts/db-restore --docker-compose-file=docker-compose.yaml --docker-compose-file=docker-compose-db.yaml \
|
64
|
+
--arg=--clean --arg=--if-exists --arg=--verbose $(DUMP_FILE) || true
|
65
|
+
docker compose --file=docker-compose.yaml --file=docker-compose-db.yaml up -d
|
66
|
+
|
67
|
+
.PHONY: acceptance
|
68
|
+
acceptance: ## Run the acceptance tests
|
69
|
+
docker compose exec -T tools pytest -vv tests/
|
70
|
+
ci/docker-compose-check
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{{cookiecutter.project}} project
|
2
|
+
===================
|
3
|
+
|
4
|
+
Read the `Documentation <https://camptocamp.github.io/c2cgeoportal/{{cookiecutter.geomapfish_main_version}}/>`_
|
5
|
+
|
6
|
+
Checkout
|
7
|
+
--------
|
8
|
+
|
9
|
+
.. code::
|
10
|
+
|
11
|
+
git clone git@github.com:camptocamp/{{cookiecutter.project}}.git
|
12
|
+
|
13
|
+
cd {{cookiecutter.project}}
|
14
|
+
|
15
|
+
Build
|
16
|
+
-----
|
17
|
+
|
18
|
+
.. code::
|
19
|
+
|
20
|
+
./build
|
21
|
+
|
22
|
+
Run
|
23
|
+
---
|
24
|
+
|
25
|
+
.. code::
|
26
|
+
|
27
|
+
docker compose up -d
|
28
|
+
|
29
|
+
.. Feel free to add project-specific things.
|