diff --git a/Dockerfile.mako b/Dockerfile.mako index ee591fd8c7..c45a66f0d3 100644 --- a/Dockerfile.mako +++ b/Dockerfile.mako @@ -17,7 +17,8 @@ COPY webpack.config.js /tmp RUN \ extract-ngeo-dependencies > /tmp/deps.js && \ - (cd /tmp; webpack --mode production --profile --json > stats.json) || webpack --mode production + cd /tmp && \ + webpack --mode production --profile --json > stats.json || webpack --mode production RUN \ mkdir --parents /opt/angular-locale && \ diff --git a/Makefile b/Makefile index 348f00f327..4719cf6235 100644 --- a/Makefile +++ b/Makefile @@ -120,6 +120,7 @@ docker-build: docker-pull .PHONY: build build: \ docker-build-build \ + docker-build-config \ docker-build-qgisserver \ prepare-tests @@ -206,6 +207,10 @@ docker-build-build: $(shell docker-required --path . --replace-pattern='^test(.* $(MO_FILES) docker build --build-arg=VERSION=$(VERSION) --tag=$(DOCKER_BASE)-build:$(MAJOR_VERSION) . +.PHONY: docker-build-config +docker-build-config: + docker build --tag=$(DOCKER_BASE)-config:$(MAJOR_VERSION) docker/config + docker/qgisserver/commons: commons rm --recursive --force $@ cp --recursive $< $@ diff --git a/admin/setup.py b/admin/setup.py index 5b4941c291..6464ff7a8a 100644 --- a/admin/setup.py +++ b/admin/setup.py @@ -48,6 +48,7 @@ version=VERSION, description='c2cgeoportal admin', long_description=README, + long_description_content_type='text/markdown', classifiers=[ 'Programming Language :: Python', 'Programming Language :: Python :: 3', diff --git a/commons/setup.py b/commons/setup.py index 16a0ec4a7c..b2e4455ac3 100644 --- a/commons/setup.py +++ b/commons/setup.py @@ -44,6 +44,7 @@ version=VERSION, description='c2cgeoportal commons', long_description=README, + long_description_content_type='text/markdown', classifiers=[ 'Programming Language :: Python', 'Programming Language :: Python :: 3', diff --git a/docker/config/Dockerfile b/docker/config/Dockerfile new file mode 100644 index 0000000000..1cefadf866 --- /dev/null +++ b/docker/config/Dockerfile @@ -0,0 +1,8 @@ +FROM debian:stretch +LABEL maintainer Camptocamp "info@camptocamp.com" + +RUN \ + apt-get update && \ + apt-get install --assume-yes --no-install-recommends gettext-base python3 && \ + apt-get clean && \ + rm --recursive --force /var/lib/apt/lists/* diff --git a/geoportal/c2cgeoportal_geoportal/lib/lingua_extractor.py b/geoportal/c2cgeoportal_geoportal/lib/lingua_extractor.py index 2700001050..508a2a33c5 100644 --- a/geoportal/c2cgeoportal_geoportal/lib/lingua_extractor.py +++ b/geoportal/c2cgeoportal_geoportal/lib/lingua_extractor.py @@ -460,6 +460,7 @@ def _import_layer_wmts(self, layer, messages): layers = [d.value for d in layer.metadatas if d.name == "wmsLayer"] server = [d.value for d in layer.metadatas if d.name == "ogcServer"] if len(server) >= 1 and len(layers) >= 1: + layers = [l for ls in layers for l in ls.split(',')] for wms_layer in layers: try: db_server = DBSession.query(OGCServer).filter(OGCServer.name == server[0]).one() diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl index 12f4c5a7a1..5e5226ba40 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/create/+dot+gitignore_tmpl @@ -3,6 +3,7 @@ *.pyo __pycache__/ /project.yaml +/Dockerfile /.env /docker-compose.override.yaml /mapcache/ diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile b/geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile.mako similarity index 80% rename from geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile rename to geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile.mako index 8839eb07f0..4479a44317 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/create/Dockerfile.mako @@ -1,11 +1,4 @@ -FROM debian:stretch -LABEL maintainer Camptocamp "info@camptocamp.com" - -RUN \ - apt-get update && \ - apt-get install --assume-yes --no-install-recommends gettext-base python3 && \ - apt-get clean && \ - rm --recursive --force /var/lib/apt/lists/* +FROM camptocamp/geomapfish-build:${geomapfish_version} COPY . /tmp/config/ diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/create/vars.yaml_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/create/vars.yaml_tmpl index dba669893f..fa5ade95b1 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/create/vars.yaml_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/create/vars.yaml_tmpl @@ -23,7 +23,7 @@ vars: default: constants: defaultTheme: Demo - defaultLang: en + defaultLang: '{default_locale_name}' ngeoWfsPermalinkOptions: wfsTypes: - featureType: fuel diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/+dot+gitignore_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/+dot+gitignore_tmpl index c77728ff33..367386e31d 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/+dot+gitignore_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/+dot+gitignore_tmpl @@ -4,6 +4,7 @@ __pycache__/ /.build /project.yaml +/Dockerfile /docker-compose-dev.yaml /docker-compose-front.yaml /docker-compose-lib.yaml_tmpl diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/nondocker-finalise.mk_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/nondocker-finalise.mk_tmpl index e505d3a37b..55863e7245 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/nondocker-finalise.mk_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/nondocker-finalise.mk_tmpl @@ -183,7 +183,7 @@ ifeq ($(OPERATING_SYSTEM), WINDOWS) $(PYTHON_BIN)/python -m pip install -r requirements.txt $(PYTHON_BIN)/python -m pip install $(shell python ./get-pip-dependencies c2cgeoportal-commons c2cgeoportal-geoportal c2cgeoportal-admin linesman networkx pygraphviz pyproj Shapely Fiona rasterio GDAL flake8-mypy mypy) else - $(PYTHON_BIN)/python -m pip install `./get-pip-dependencies c2cgeoportal-commons c2cgeoportal-geoportal c2cgeoportal-admin GDAL flake8-mypy mypy` + $(PYTHON_BIN)/python -m pip install `./get-pip-dependencies c2cgeoportal-commons c2cgeoportal-geoportal c2cgeoportal-admin GDAL flake8-mypy mypy graphviz` $(PYTHON_BIN)/python -m pip install -r requirements.txt endif $(PYTHON_BIN)/python -m pip install --editable=c2cgeoportal_commons --editable=c2cgeoportal_geoportal --editable=c2cgeoportal_admin diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/print_url b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/print_url index e174d270e6..bf2ab8a491 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/print_url +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockercreate/print_url @@ -1 +1 @@ -https://repo1.maven.org/maven2/org/mapfish/print/print-servlet/3.10.7/print-servlet-3.10.7.war +https://repo1.maven.org/maven2/org/mapfish/print/print-servlet/3.10.8/print-servlet-3.10.8.war diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockerupdate/+dot+upgrade.yaml_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockerupdate/+dot+upgrade.yaml_tmpl index 860cf5b0db..75e6344ba6 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/nondockerupdate/+dot+upgrade.yaml_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/nondockerupdate/+dot+upgrade.yaml_tmpl @@ -310,3 +310,6 @@ files_to_move: - from: docker-compose-dev.yaml.mako to: docker-compose-dev.yaml version: 2.4 + - from: Dockerfile + to: Dockerfile.mako + version: 2.3 diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl index 9f7a63b061..06dd01f7b2 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/update/+dot+upgrade.yaml_tmpl @@ -324,3 +324,6 @@ files_to_move: - from: docker-compose-dev.yaml.mako to: docker-compose-dev.yaml version: 2.4 + - from: Dockerfile + to: Dockerfile.mako + version: 2.3 diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_Makefile_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_Makefile_tmpl index 9f92a25e46..e902b4da9d 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_Makefile_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_Makefile_tmpl @@ -696,7 +696,7 @@ docker-build-config: $(shell docker-required --path .) \ $(PRINT_CONFIG_FILE) \ $(MAPCACHE_FILE) \ qgisserver/geomapfish.yaml - docker build --tag=$(DOCKER_BASE)-config:$(DOCKER_TAG) . + docker build --tag=$(DOCKER_BASE)-config:$(DOCKER_TAG) --build-arg=VERSION=$(GEOMAPFISH_VERSION) . .PHONY: docker-build-geoportal docker-build-geoportal: $(shell docker-required --path geoportal) \ diff --git a/geoportal/c2cgeoportal_geoportal/views/entry.py b/geoportal/c2cgeoportal_geoportal/views/entry.py index 5dda36f99b..28645085ea 100644 --- a/geoportal/c2cgeoportal_geoportal/views/entry.py +++ b/geoportal/c2cgeoportal_geoportal/views/entry.py @@ -273,10 +273,10 @@ def _wms_getcap_cached(self, ogc_server, _): return url, None, errors # With wms 1.3 it returns text/xml also in case of error :-( - if response.headers["Content-Type"].split(";")[0].strip() not in \ + if response.headers.get("Content-Type", '').split(";")[0].strip() not in \ ["application/vnd.ogc.wms_xml", "text/xml"]: error = "GetCapabilities from URL {} returns a wrong Content-Type: {}\n{}".format( - url, response.headers["Content-Type"], response.text + url, response.headers.get("Content-Type", ''), response.text ) errors.add(error) LOG.error(error) diff --git a/travis/publish b/travis/publish index 82ef44f9ce..1b37f29108 100755 --- a/travis/publish +++ b/travis/publish @@ -47,7 +47,7 @@ then fi # Publish the GeoMapFish images -for IMAGE in geomapfish-build-dev geomapfish-build +for IMAGE in geomapfish-build-dev geomapfish-build geomapfish-config do docker tag camptocamp/${IMAGE}:${MAJOR_VERSION} camptocamp/${IMAGE}:${VERSION} docker push camptocamp/${IMAGE}:${VERSION} @@ -67,13 +67,7 @@ then for PKG in commons geoportal admin do export PKG - ./docker-run \ - --env=PYPI_USERNAME \ - --env=PYPI_PASSWORD \ - --env=VERSION \ - --env=MAJOR_VERSION \ - --env=PKG \ - travis/publish-pypi + travis/publish-pypi done fi diff --git a/travis/publish-pypi b/travis/publish-pypi index dface45d3d..6ce55ea529 100755 --- a/travis/publish-pypi +++ b/travis/publish-pypi @@ -11,9 +11,10 @@ echo "password:${PYPI_PASSWORD}" >> ~/.pypirc cd ${PKG} if [ "${VERSION}" == "${MAJOR_VERSION}" ] then - python3 setup.py egg_info --tag-date sdist bdist_wheel upload -r pypi || true + ../.venv/bin/python3 setup.py egg_info --tag-date sdist bdist_wheel else - python3 setup.py egg_info --no-date sdist bdist_wheel upload -r pypi + ../.venv/bin/python3 setup.py egg_info --no-date sdist bdist_wheel fi +../.venv/bin/python3 ../.venv/bin/twine upload dist/* rm ~/.pypirc diff --git a/webpack.config.js b/webpack.config.js index 773a0a94bd..6611b54a06 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -67,6 +67,8 @@ module.exports = { 'quickselect': '/usr/lib/node_modules/ol/node_modules/quickselect', 'mgrs': '/usr/lib/node_modules/proj4/node_modules/mgrs', 'wkt-parser': '/usr/lib/node_modules/proj4/node_modules/wkt-parser', + 'lie': '/usr/lib/node_modules/localforage/node_modules/lie', + 'immediate': '/usr/lib/node_modules/localforage/node_modules/immediate', } }, optimization: {