From e4de49d04adc4d34f7978f20284cd7decd8bc682 Mon Sep 17 00:00:00 2001 From: index-git Date: Tue, 17 Dec 2024 12:43:50 +0100 Subject: [PATCH 1/5] Repair old external links --- CHANGELOG.md | 12 ++++++------ README.md | 14 +++++++------- doc/dependencies.md | 8 ++++---- doc/endpoints.md | 6 +++--- doc/env-settings.md | 14 +++++++------- doc/metadata.md | 2 +- doc/models.md | 6 +++--- doc/oauth2/client-recommendations.md | 10 +++++----- doc/oauth2/index.md | 18 +++++++++--------- doc/publish-map.md | 6 +++--- doc/rest.md | 10 +++++----- src/layman/layer/rest_workspace_layer.py | 2 +- src/layman/layer/rest_workspace_layers.py | 2 +- .../wrong_input/wrong_input_test.py | 2 +- .../single_publication/layers_files_test.py | 2 +- 15 files changed, 57 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03e1c6825..5e174295c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -210,7 +210,7 @@ - If you are using environment variable [`OAUTH2_CALLBACK_URL`](doc/env-settings.md#oauth2_callback_url), change only its URL path from `/client/authn/oauth2-liferay/callback` to `/client/authn/oauth2-provider/callback`. Keep protocol, domain, and port unchanged. - Stop using environment variable `LAYMAN_AUTHN_OAUTH2_PROVIDERS`, it has no effect to Layman anymore. There is exactly one OAuth2 provider Python module now, no need to set it. - Stop using environment variable `FLASK_ENV`, it has no effect to Layman anymore. - - If you used environment variable `FLASK_ENV` with value `development`, add new environment variable [`FLASK_DEBUG`](https://flask.palletsprojects.com/en/2.3.x/config/?highlight=flask_debug#DEBUG): + - If you used environment variable `FLASK_ENV` with value `development`, add new environment variable [`FLASK_DEBUG`](https://flask.palletsprojects.com/en/stable/config/?highlight=flask_debug#DEBUG): ``` FLASK_DEBUG=1 ``` @@ -579,10 +579,10 @@ make timgen-build ### Changes - [#167](https://github.com/LayerManager/layman/issues/167) Allow publishing also raster geospatial data using [POST Workspace Layers](doc/rest.md#post-workspace-layers) and [PATCH Workspace Layer](doc/rest.md#patch-workspace-layer). - Following formats are supported: - - [GeoTIFF](https://gdal.org/drivers/raster/gtiff.html) - - [JPEG2000](https://gdal.org/drivers/raster/jp2openjpeg.html) - - [PNG](https://gdal.org/drivers/raster/png.html) - - [JPEG](https://gdal.org/drivers/raster/jpeg.html) + - [GeoTIFF](https://gdal.org/en/stable/drivers/raster/gtiff.html) + - [JPEG2000](https://gdal.org/en/stable/drivers/raster/jp2openjpeg.html) + - [PNG](https://gdal.org/en/stable/drivers/raster/png.html) + - [JPEG](https://gdal.org/en/stable/drivers/raster/jpeg.html) - Following input combinations of bands and color interpretations are supported: - 1 band: Gray - 1 band: Palette @@ -742,7 +742,7 @@ make timgen-build - Parameter *style* accepts also QGIS layer style (QML). Layman Test Client enables to select also `*.qml` files. - Endpoint [GET Workspace Layer](doc/rest.md#get-workspace-layer) returns in `style` attribute also `type`, either `"sld"` or `"qml"`. - Endpoint [GET Workspace Layer Style](doc/rest.md#get-workspace-layer-style) returns SLD style or QML style. - - Treat attribute names in QML (also known as '[launder](https://gdal.org/drivers/vector/pg.html#layer-creation-options)'). + - Treat attribute names in QML (also known as '[launder](https://gdal.org/en/stable/drivers/vector/pg.html#layer-creation-options)'). - New docker container with QGIS server called `qgis` in demo configuration. - New directory [LAYMAN_QGIS_DATA_DIR](doc/env-settings.md#LAYMAN_QGIS_DATA_DIR) is used to store [layer QGS files](doc/data-storage.md#filesystem). - [WMS](doc/endpoints.md#web-map-service) is moved to dedicated [GeoServer workspace](doc/data-storage.md#geoserver) whose name is composed from Layman's [workspace](doc/models.md#workspace) name and suffix `_wms`. [WFS](doc/endpoints.md#web-feature-service) remains in GeoServer workspace whose name is equal to Layman's workspace name. diff --git a/README.md b/README.md index 421a370b7..9bc88df4d 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Publishing geospatial data online through [REST API](doc/rest.md). - [**layer**](doc/models.md#layer): visual representation of single vector or raster dataset, including raster [timeseries](doc/models.md#timeseries) - [**map**](doc/models.md#map): collection of layers - Accepts **vector** layer data in [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON), [ShapeFile](https://en.wikipedia.org/wiki/Shapefile), or [PostGIS table](https://postgis.net/) identified by [PostgreSQL connection URI](https://www.postgresql.org/docs/15/libpq-connect.html#id-1.7.3.8.3.6) -- Accepts **raster** layer data in [GeoTIFF](https://gdal.org/drivers/raster/gtiff.html), [JPEG2000](https://gdal.org/drivers/raster/jp2openjpeg.html), [PNG](https://gdal.org/drivers/raster/png.html), and [JPEG](https://gdal.org/drivers/raster/jpeg.html) formats -- Accepts layer **style** in [Styled Layer Descriptor](https://ogc.org/standard/sld), [Symbology Encoding](https://ogc.org/standard/se), and [QGIS Style File Format](https://docs.qgis.org/3.16/en/docs/user_manual/appendices/qgis_file_formats.html#qml-the-qgis-style-file-format) (for vector data only) formats +- Accepts **raster** layer data in [GeoTIFF](https://gdal.org/en/stable/drivers/raster/gtiff.html), [JPEG2000](https://gdal.org/en/stable/drivers/raster/jp2openjpeg.html), [PNG](https://gdal.org/en/stable/drivers/raster/png.html), and [JPEG](https://gdal.org/en/stable/drivers/raster/jpeg.html) formats +- Accepts layer **style** in [Styled Layer Descriptor](https://www.ogc.org/publications/standard/sld/), [Symbology Encoding](https://www.ogc.org/publications/standard/se/), and [QGIS Style File Format](https://docs.qgis.org/3.16/en/docs/user_manual/appendices/qgis_file_formats.html#qml-the-qgis-style-file-format) (for vector data only) formats - Accepts **map** definition in [HSLayers Map Composition](https://github.com/hslayers/map-compositions) format - Even large files can be easily uploaded from browser thanks to asynchronous chunk upload - [OAuth2 authentication](doc/security.md#authentication) @@ -35,7 +35,7 @@ Publishing geospatial data online through [REST API](doc/rest.md). You can check your kernel version with `uname -r`. - Docker Engine v20.10.13+ including Docker Compose v2+ - - installation instructions for [centos 7](https://docs.docker.com/install/linux/docker-ce/centos/), including docker-compose-plugin installation + - installation instructions for [centos 7](https://docs.docker.com/engine/install/centos/), including docker-compose-plugin installation **Optionally** - linux or any tool to run tasks defined in Makefile using `make` command @@ -106,7 +106,7 @@ Then you can log in with automatically provided Wagtail user `layman` and passwo Layman's source code provides settings suitable for development, testing and demo purposes. Furthermore, there exists [`Makefile`](Makefile) with predefined commands for each purpose including starting all necessary services (both in background and foreground) and stoping it. Layman's configuration is split into three levels: -- `docker-compose.*.yml` files used as [docker-compose configuration files](https://docs.docker.com/compose/compose-file/) with most general settings of docker containers including volume mappings, port mappings, container names and startup commands +- `docker-compose.*.yml` files used as [docker-compose configuration files](https://docs.docker.com/reference/compose-file/) with most general settings of docker containers including volume mappings, port mappings, container names and startup commands - `.env*` files with environment settings of both build stage and runtime of docker containers - `src/layman_settings.py` Python module with settings of Layman's Python modules for runtime @@ -170,7 +170,7 @@ When providing **external dependencies**, check their production-related documen - [PostgreSQL 13.3](https://www.postgresql.org/docs/13/admin.html) & [PostGIS 3.1](http://postgis.net/docs/manual-3.1/performance_tips.html) - [QGIS Server 3.16.1](https://docs.qgis.org/3.10/en/docs/user_manual/working_with_ogc/server/index.html) - [GeoServer 2.21.2](https://geoserver.org/release/2.21.2/) -- [Redis 4.0](https://redis.io/topics/admin) +- [Redis 4.0](https://redis.io/docs/latest/operate/oss_and_stack/management/admin/) - [Micka v2020.014](https://github.com/hsrs-cz/Micka/releases/tag/v2020.014), see also [configuration](deps/micka/sample/confs/config.local.neon) of [dockerized Micka](https://github.com/LayerManager/docker-micka). Within PostgreSQL, you need to provide one database for Layman and one database for Micka. For Layman, you also need to provide one user [LAYMAN_PG_USER](doc/env-settings.md#LAYMAN_PG_USER) who needs enough privileges to create new schemas in [LAYMAN_PG_DBNAME](doc/env-settings.md#LAYMAN_PG_DBNAME) database. The user also needs access to `public` schema where PostGIS must be installed. @@ -190,8 +190,8 @@ After providing external dependencies there is time to provide **internal depend **System-level** dependencies includes - python 3.8+ - [python3-lxml](https://lxml.de/installation.html) -- [ogr2ogr](https://gdal.org/programs/ogr2ogr.html) utility of [gdal](https://gdal.org/) 3.3+ -- [chromium-browser](https://chromium.org/) 90+ and corresponding version of [chromedriver](https://chromedriver.chromium.org/) +- [ogr2ogr](https://gdal.org/en/stable/programs/ogr2ogr.html) utility of [gdal](https://gdal.org/) 3.3+ +- [chromium-browser](https://www.chromium.org/) 90+ and corresponding version of [chromedriver](https://developer.chrome.com/docs/chromedriver/) - [pipenv](https://pypi.org/project/pipenv/) - [node.js](https://nodejs.org/) 18 & npm 8 for running Layman Test Client - [node.js](https://nodejs.org/) 16 & npm 8 for running Timgen diff --git a/doc/dependencies.md b/doc/dependencies.md index 56b204dcb..af70d5e9f 100644 --- a/doc/dependencies.md +++ b/doc/dependencies.md @@ -35,12 +35,12 @@ | --- | --- | --- | --- | --- | --- | | [flask](http://flask.pocoo.org/) | BSD License | Pipfile | prod | bin | to build REST API | | [celery](https://github.com/celery/celery) | BSD 3-Clause | Pipfile | prod | bin | asynchronous task runner | -| [redis-py](https://github.com/andymccurdy/redis-py) | MIT | Pipfile | prod | bin | | +| [redis-py](https://github.com/redis/redis-py) | MIT | Pipfile | prod | bin | | | [unidecode](https://github.com/avian2/unidecode) | GNU GPL v2 | Pipfile | prod | bin | | | [psycopg2-binary](https://github.com/psycopg/psycopg2) | GNU LGPL | Pipfile | prod | bin | | | [requests](https://requests.readthedocs.io/) | Apache License 2.0 | Pipfile | prod | bin | | | [owslib](https://github.com/geopython/OWSLib) | BSD 3-Clause | Pipfile | prod | bin | | -| [jsonschema](https://github.com/Julian/jsonschema) | MIT | Pipfile | prod | bin | | +| [jsonschema](https://github.com/python-jsonschema/jsonschema) | MIT | Pipfile | prod | bin | | | [flower](https://github.com/mher/flower) | BSD 3-Clause | Pipfile | prod | bin | to monitor celery tasks | | [selenium](https://www.chromium.org/) | Apache License 2.0 | Dockerfile | prod | bin | for client-side map rendering and integration testing | | [cacheout](https://github.com/dgilland/cacheout) | MIT | Pipfile | prod | bin | | @@ -51,7 +51,7 @@ | [pytest](https://pytest.org/) | MIT License | Pipfile | test | bin | | | [flake8](https://flake8.pycqa.org/) | MIT | Pipfile | test | bin | code style checker | | [pycodestyle](https://pycodestyle.pycqa.org/) | MIT | Pipfile | test | bin | code style checker | -| [pylint](https://github.com/PyCQA/pylint) | GNU GPL v2 | Pipfile | test | bin | code style checker | +| [pylint](https://github.com/pylint-dev/pylint) | GNU GPL v2 | Pipfile | test | bin | code style checker | | [autopep8](https://github.com/hhatto/autopep8) | MIT | Pipfile | test | bin | to automatically fix code style | | [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | MPL | Pipfile | test | bin | to automatically rerun flaky tests | | [pytest-timeout](https://pypi.org/project/pytest-timeout/) | MIT | Pipfile | test | bin | to automatically stop tests after given timeout | @@ -89,5 +89,5 @@ | [layermanager/docker-postgis](https://github.com/layermanager/docker-postgis) | MIT | docker-compose.yml | dev | bin | | | [jirikcz/micka](https://github.com/LayerManager/docker-micka) | GNU GPL v3 | docker-compose.yml | prod-external | bin | | | [samtux/micka](https://github.com/samtux/docker-micka) | GNU GPL v3 | jirikcz/micka | prod-external | src | | -| [docker-library/redis](https://github.com/docker-library/redis) | BSD 3-Clause | docker-compose.yml | prod | bin | | +| [docker-library/redis](https://github.com/redis/docker-library-redis) | BSD 3-Clause | docker-compose.yml | prod | bin | | | [plantuml/plantuml](https://hub.docker.com/r/plantuml/plantuml) | GNU GPL v3 | Makefile | dev | bin | render PlantUML images | diff --git a/doc/endpoints.md b/doc/endpoints.md index 125267cd8..2cbe15056 100644 --- a/doc/endpoints.md +++ b/doc/endpoints.md @@ -2,7 +2,7 @@ To use [headers for GeoServer's Proxy URL](https://docs.geoserver.org/2.21.x/en/user/configuration/globalsettings.html#use-headers-for-proxy-url) see [client proxy documentation](client-proxy.md). ## Web Map Service -[Web Map Service (WMS)](https://ogc.org/standard/wms) endpoint is implemented using combination of Layman's authentication proxy, Layman's WMS proxy, and [GeoServer](https://docs.geoserver.org/2.21.x/en/user/services/wms/reference.html). +[Web Map Service (WMS)](https://www.ogc.org/publications/standard/wms/) endpoint is implemented using combination of Layman's authentication proxy, Layman's WMS proxy, and [GeoServer](https://docs.geoserver.org/2.21.x/en/user/services/wms/reference.html). The authentication proxy understands same [authentication credentials](security.md#authentication) as Layman REST API (e.g. OAuth2 credentials) and passes the request to GeoServer with credentials understandable by GeoServer. @@ -15,7 +15,7 @@ WMS respects [publication access rights](security.md#publication-access-rights). GetLegendGraphic query is answered directly by GeoServer for layers with SLD style and can be parametrized according to [GeoServer documentation](https://docs.geoserver.org/latest/en/user/services/wms/get_legend_graphic/index.html). For layers with QML style is such query redirected by GeoServer to QGIS server and can be parametrized according to [QGIS documentation](https://docs.qgis.org/3.16/en/docs/server_manual/services.html?highlight=getlegendgraphic#getlegendgraphics). ## Web Feature Service -[Web Feature Service (WFS)](https://ogc.org/standard/wfs) endpoint is implemented using combination of Layman's authentication proxy, Layman's WFS proxy, and [GeoServer](https://docs.geoserver.org/2.21.x/en/user/services/wfs/reference.html). +[Web Feature Service (WFS)](https://www.ogc.org/publications/standard/wfs/) endpoint is implemented using combination of Layman's authentication proxy, Layman's WFS proxy, and [GeoServer](https://docs.geoserver.org/2.21.x/en/user/services/wfs/reference.html). The authentication proxy behaves in the same way as in case of [WMS](#web-map-service). @@ -31,4 +31,4 @@ WFS respects [publication access rights](security.md#publication-access-rights). For layers in `EPSG:5514` and WFS requests in `CRS:84`, the features may have wrong coordinates by hundreds of meters. For requests in `EPSG:4326`, coordinates are correct. ## Catalogue Service -[Catalogue Service (CSW)](https://ogc.org/standard/cat) is implemented using [Micka](https://github.com/hsrs-cz/Micka). +[Catalogue Service (CSW)](https://www.ogc.org/publications/standard/cat/) is implemented using [Micka](https://github.com/hsrs-cz/Micka). diff --git a/doc/env-settings.md b/doc/env-settings.md index b313ad429..cf2693609 100644 --- a/doc/env-settings.md +++ b/doc/env-settings.md @@ -109,7 +109,7 @@ Internal URL of REST API [Current User](rest.md#current-user) endpoint. Internal URL (only protocol & host & port, without path) of Layman's REST API. ### LTC_REDIS_URL -URL of [Redis logical database](https://redis.io/commands/select) including database number where Layman Test Client stores user sessions including authentication credentials. +URL of [Redis logical database](https://redis.io/docs/latest/commands/select/) including database number where Layman Test Client stores user sessions including authentication credentials. ### LTC_SESSION_SECRET See [`secret` at express-session documentation](https://www.npmjs.com/package/express-session#secret). @@ -126,7 +126,7 @@ To enable not-so-secure SSL communication (UnsafeLegacyRenegotiation), set `NODE ## Connection to Redis ### LAYMAN_REDIS_URL -URL of [Redis logical database](https://redis.io/commands/select) including database number. Layman stores internal data about publications and users in this database. By default, Layman flushes the whole logical database on every startup! See also [LAYMAN_SKIP_REDIS_LOADING](#LAYMAN_SKIP_REDIS_LOADING). +URL of [Redis logical database](https://redis.io/docs/latest/commands/select/) including database number. Layman stores internal data about publications and users in this database. By default, Layman flushes the whole logical database on every startup! See also [LAYMAN_SKIP_REDIS_LOADING](#LAYMAN_SKIP_REDIS_LOADING). ## Connection to PostgreSQL @@ -197,10 +197,10 @@ Filesystem directory where data published on QGIS are stored, including styles. HTTP Basic Authentication credentials for communication with [CSW](#CSW_URL) encoded as `user:password`. ### CSW_URL -Internal URL of [OGC Catalogue Service v2.0.2](https://ogc.org/standard/cat) endpoint. Tested with [Micka](http://micka.bnhelp.cz/). +Internal URL of [OGC Catalogue Service v2.0.2](https://www.ogc.org/publications/standard/cat/) endpoint. Tested with [Micka](https://www.bnhelp.cz/produkty/metadata/). ### CSW_PROXY_URL -Public URL of [OGC Catalogue Service v2.0.2](https://ogc.org/standard/cat) endpoint. Tested with [Micka](http://micka.bnhelp.cz/). +Public URL of [OGC Catalogue Service v2.0.2](https://www.ogc.org/publications/standard/cat/) endpoint. Tested with [Micka](https://www.bnhelp.cz/produkty/metadata/). ### MICKA_ACCEPTED_VERSION Version of Micka that Layman will accept on startup encoded as `version:revision`, e.g. `2020.014:2020-04-15.01`. Also, on one of '>=' or '==' prefixes can be used with obvious meaning, `e.g. >=2020.014:2020-04-15.01`. For prefix '>=', version and revision are compared independently as strings. If the variable is not set, a version defined in [`src/layman_settings.py`](../src/layman_settings.py) will be accepted. If none prefix is used, value is compared as with '=='. @@ -211,13 +211,13 @@ String with public domain and optionally port, e.g. `` or `:"`. +**Authorization** header contains access token according to [RFC6750 Bearer Token Usage](https://datatracker.ietf.org/doc/html/rfc6750#section-2.1). Structure of its value is `"Bearer "`. Because access token is known only on server side of LTC and not to client side, every request from client side to Layman REST API goes through **proxy** on LTC server side. The proxy adds `Authorization` header to the request and forward it to the Layman. To authenticate end-user, Layman then validates access token on *authorization server* using [Token Introspection](https://oauth.net/2/token-introspection/) mechanism. @@ -87,7 +87,7 @@ Username is reserved by [PATCH Current User](../rest.md#patch-current-user). Use ![patch-current-user.puml](patch-current-user.png) ### Refresh Access Token -During end-user's session, *client* keeps both access tokens and refresh token. When access token expires or it's lifetime is close, *client* should use refresh token to generate new access token at [Token Endpoint](https://tools.ietf.org/html/rfc6749#section-3.2). +During end-user's session, *client* keeps both access tokens and refresh token. When access token expires or it's lifetime is close, *client* should use refresh token to generate new access token at [Token Endpoint](https://datatracker.ietf.org/doc/html/rfc6749#section-3.2). In case of LTC, refreshing happens automatically on any request to Layman REST API if access token expired, or it's lifetime is closer than 10 seconds. @@ -112,7 +112,7 @@ Sample values for OAuth2 authentication can be found in [`layman_settings.py`](. ### Django OAuth Toolkit Settings Every *client* must be registered in Django OAuth Toolkit (Wagtail) as *application*, as described in [documentation](https://django-oauth-toolkit.readthedocs.io/en/latest/getting_started.html#oauth2-authorization-grants). For LTC, fill in following settings: -- **Redirect URIs** must contain URL of OAuth2 [Redirection Endpoint](https://tools.ietf.org/html/rfc6749#section-3.1.2). In case of LTC, the value is the same as LTC setting OAUTH2_CALLBACK_URL. +- **Redirect URIs** must contain URL of OAuth2 [Redirection Endpoint](https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2). In case of LTC, the value is the same as LTC setting OAUTH2_CALLBACK_URL. - **Client Type**: Confidential - **Authorization Grant Type**: Authorization Code - **Name**: layman-test-client @@ -125,7 +125,7 @@ Furthermore, you need to provide endpoint `/profile` with user-related metadata. Check following environment variables of LTC: - OAUTH2_CLIENT_ID: **Client ID** from authorization server - OAUTH2_CLIENT_SECRET: **Client Secret** from authorization server -- OAUTH2_AUTH_URL: URL of [Authorization Endpoint](https://tools.ietf.org/html/rfc6749#section-3.1), usually the same as the first URL from Layman's OAUTH2_AUTH_URLS -- OAUTH2_TOKEN_URL: URL of [Token Endpoint](https://tools.ietf.org/html/rfc6749#section-3.2). In case of Django OAuth Toolkit (Wagtail), it's something like `:///o/token` -- OAUTH2_CALLBACK_URL: URL of [Redirection Endpoint](https://tools.ietf.org/html/rfc6749#section-3.1.2), the value is `:///auth/oauth2-provider/callback`. +- OAUTH2_AUTH_URL: URL of [Authorization Endpoint](https://datatracker.ietf.org/doc/html/rfc6749#section-3.1), usually the same as the first URL from Layman's OAUTH2_AUTH_URLS +- OAUTH2_TOKEN_URL: URL of [Token Endpoint](https://datatracker.ietf.org/doc/html/rfc6749#section-3.2). In case of Django OAuth Toolkit (Wagtail), it's something like `:///o/token` +- OAUTH2_CALLBACK_URL: URL of [Redirection Endpoint](https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2), the value is `:///auth/oauth2-provider/callback`. - OAUTH2_USER_PROFILE_URL: URL of Layman's [GET Current User](../rest.md#get-current-user) diff --git a/doc/publish-map.md b/doc/publish-map.md index dfb21a832..a85d5ed23 100644 --- a/doc/publish-map.md +++ b/doc/publish-map.md @@ -13,9 +13,9 @@ In QGIS, you need to implement following steps. First, compose JSON valid against [map-composition schema](https://github.com/hslayers/map-compositions). For Layman, especially `describedBy`, `name`, `title`, `abstract`, `layers`, `projection`, and `extent attributes are important. Each layer must have `className` attribute equal to `HSLayers.Layer.WMS` or `WMS`. Then save the file to Layman using [POST Workspace Maps](rest.md#post-workspace-maps) endpoint. Well-known [requests](https://requests.readthedocs.io/en/latest/) module can be used for sending HTTP requests. See especially -- [More complicated POST requests](https://requests.readthedocs.io/en/latest/user/quickstart.html#more-complicated-post-requests) -- [POST a Multipart-Encoded File](https://requests.readthedocs.io/en/latest/user/quickstart.html#post-a-multipart-encoded-file) -- [POST Multiple Multipart-Encoded Files](https://requests.readthedocs.io/en/latest/user/advanced.html#post-multiple-multipart-encoded-files) +- [More complicated POST requests](https://requests.readthedocs.io/en/latest/user/quickstart/#more-complicated-post-requests) +- [POST a Multipart-Encoded File](https://requests.readthedocs.io/en/latest/user/quickstart/#post-a-multipart-encoded-file) +- [POST Multiple Multipart-Encoded Files](https://requests.readthedocs.io/en/latest/user/advanced/#post-multiple-multipart-encoded-files) In response of [POST Workspace Maps](rest.md#post-workspace-maps) you will obtain - `name` of the map unique within all maps in used [workspace](models.md#workspace) diff --git a/doc/rest.md b/doc/rest.md index 72b19a9ac..185ae8641 100644 --- a/doc/rest.md +++ b/doc/rest.md @@ -156,7 +156,7 @@ Body parameters: - 3 bands: Red, Green, Blue - 4 bands: Red, Green, Blue, Alpha - if published file has empty bounding box (i.e. no features), its bounding box on WMS/WFS endpoint is set to the whole World - - attribute names are [laundered](https://gdal.org/drivers/vector/pg.html#layer-creation-options) to be safely stored in DB + - attribute names are [laundered](https://gdal.org/en/stable/drivers/vector/pg.html#layer-creation-options) to be safely stored in DB - if QML style is used in this request, it must list all attributes contained in given data file - *external_table_uri*, string - exactly one of `file` or `external_table_uri` must be set @@ -199,7 +199,7 @@ Body parameters: - QML style for raster data file is not supported - It's possible to encode also external images in QML styles and use them in the style. To do so, each image needs to be encoded in Base64 encoding inside QML file. You can achieve it by selecting "Embed File" option in QGIS Layer Symbology window, see e.g. QGIS issues [2815](https://github.com/qgis/QGIS-Documentation/issues/2815) or [4563](https://github.com/qgis/QGIS-Documentation/pull/4563). - uploading of additional style files, e.g. point-symbol images or fonts is not supported - - attribute names are [laundered](https://gdal.org/drivers/vector/pg.html#layer-creation-options) to be in line with DB attribute names + - attribute names are [laundered](https://gdal.org/en/stable/drivers/vector/pg.html#layer-creation-options) to be in line with DB attribute names - *access_rights.read*, string - comma-separated names of [users](./models.md#user) and [roles](./models.md#role) who will get [read access](./security.md#publication-access-rights) to this publication - default value is current authenticated user, or EVERYONE if published by anonymous @@ -211,7 +211,7 @@ Body parameters: - alias for *style* parameter - *overview_resampling*, string - supported only for raster layers - - method used by [`gdaladdo`](https://gdal.org/programs/gdaladdo.html#cmdoption-gdaladdo-r) for overview resampling when normalizing raster layer + - method used by [`gdaladdo`](https://gdal.org/en/stable/programs/gdaladdo.html#cmdoption-gdaladdo-r) for overview resampling when normalizing raster layer - by default Layman will guess overview resampling method from input file metadata - supported values are: `nearest`, `average`, `rms`, `bilinear`, `gauss`, `cubic`, `cubicspline`, `lanczos`, `average_magphase` and `mode` - *time_regex*, string, e.g. `[0-9]{8}T[0-9]{6}Z` @@ -404,7 +404,7 @@ Body parameters: - SLD or QML style file (recognized by the root element of XML: `StyledLayerDescriptor` or `qgis`) - QML style for raster data file is not supported - It's possible to encode also external images in QML styles and use them in the style. See [POST Workspace Layers](#post-workspace-layers) body parameter *style* for details. - - attribute names are [laundered](https://gdal.org/drivers/vector/pg.html#layer-creation-options) to be in line with DB attribute names + - attribute names are [laundered](https://gdal.org/en/stable/drivers/vector/pg.html#layer-creation-options) to be in line with DB attribute names - If provided, current layer thumbnail will be temporarily deleted and created again using the new style. - *access_rights.read*, string - comma-separated names of [users](./models.md#user) and [roles](./models.md#role) who will get [read access](./security.md#publication-access-rights) to this publication @@ -415,7 +415,7 @@ Body parameters: - alias for *style* parameter - *overview_resampling*, string - supported only for raster layers - - method used by [`gdaladdo`](https://gdal.org/programs/gdaladdo.html#cmdoption-gdaladdo-r) for overview resampling when normalizing raster layer + - method used by [`gdaladdo`](https://gdal.org/en/stable/programs/gdaladdo.html#cmdoption-gdaladdo-r) for overview resampling when normalizing raster layer - by default Layman will guess overview resampling method from input file metadata - supported values are: `nearest`, `average`, `rms`, `bilinear`, `gauss`, `cubic`, `cubicspline`, `lanczos`, `average_magphase` and `mode` - can be used only together with `file` parameter, otherwise error is raised diff --git a/src/layman/layer/rest_workspace_layer.py b/src/layman/layer/rest_workspace_layer.py index b5cbcb889..5f1c0e49e 100644 --- a/src/layman/layer/rest_workspace_layer.py +++ b/src/layman/layer/rest_workspace_layer.py @@ -132,7 +132,7 @@ def patch(workspace, layername): # Overview resampling overview_resampling = request.form.get('overview_resampling', '') if overview_resampling and overview_resampling not in settings.OVERVIEW_RESAMPLING_METHOD_LIST: - raise LaymanError(2, {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/programs/gdaladdo.html', + raise LaymanError(2, {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/en/stable/programs/gdaladdo.html', 'parameter': 'overview_resampling', 'detail': {'found': 'no_overview_resampling', 'supported_values': settings.OVERVIEW_RESAMPLING_METHOD_LIST}, }) diff --git a/src/layman/layer/rest_workspace_layers.py b/src/layman/layer/rest_workspace_layers.py index 19a0d3a7b..eac646104 100644 --- a/src/layman/layer/rest_workspace_layers.py +++ b/src/layman/layer/rest_workspace_layers.py @@ -161,7 +161,7 @@ def post(workspace): # Overview resampling overview_resampling = request.form.get('overview_resampling', '') if overview_resampling and overview_resampling not in settings.OVERVIEW_RESAMPLING_METHOD_LIST: - raise LaymanError(2, {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/programs/gdaladdo.html', + raise LaymanError(2, {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/en/stable/programs/gdaladdo.html', 'parameter': 'overview_resampling', 'detail': {'found': 'no_overview_resampling', 'supported_values': settings.OVERVIEW_RESAMPLING_METHOD_LIST}, }) diff --git a/tests/dynamic_data/publications/wrong_input/wrong_input_test.py b/tests/dynamic_data/publications/wrong_input/wrong_input_test.py index ed7e46ec9..63db8950e 100644 --- a/tests/dynamic_data/publications/wrong_input/wrong_input_test.py +++ b/tests/dynamic_data/publications/wrong_input/wrong_input_test.py @@ -540,7 +540,7 @@ class Key(Enum): 'http_code': 400, 'sync': True, 'code': 2, - 'data': {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/programs/gdaladdo.html', + 'data': {'expected': 'Resampling method for gdaladdo utility, https://gdal.org/en/stable/programs/gdaladdo.html', 'parameter': 'overview_resampling', 'detail': {'found': 'no_overview_resampling', 'supported_values': settings.OVERVIEW_RESAMPLING_METHOD_LIST}, }, diff --git a/tests/static_data/single_publication/layers_files_test.py b/tests/static_data/single_publication/layers_files_test.py index f209e9345..ee0d63bdb 100644 --- a/tests/static_data/single_publication/layers_files_test.py +++ b/tests/static_data/single_publication/layers_files_test.py @@ -29,7 +29,7 @@ def test_raster_files(workspace, publ_type, publication): # check number of overviews raster_size = max(gdal.get_raster_size(norm_file_path)) overview_counts = gdal.get_overview_counts(norm_file_path) - # https://gdal.org/programs/gdaladdo.html#cmdoption-gdaladdo-minsize + # https://gdal.org/en/stable/programs/gdaladdo.html#cmdoption-gdaladdo-minsize exp_overview_count = max(math.ceil(math.log(raster_size / 256, 2)), 0) assert overview_counts == [exp_overview_count] * len(overview_counts) exp_def_overview_count = publ_test_data.get('normalized_overviews') From dcee788965880af4fb49c333e043919897327ded Mon Sep 17 00:00:00 2001 From: Jiri Kozel Date: Tue, 17 Dec 2024 15:24:06 +0100 Subject: [PATCH 2/5] Log remark version in github action --- .github/workflows/code_quality.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/code_quality.yml b/.github/workflows/code_quality.yml index 37a289841..9bb470554 100644 --- a/.github/workflows/code_quality.yml +++ b/.github/workflows/code_quality.yml @@ -22,6 +22,7 @@ jobs: with: node-version: '18' - run: npm install --global remark-cli remark-validate-links remark-lint-no-dead-urls + - run: remark --version - run: make remark Flake_8_syntax_errors: From 2f025ea45aee162d65f3f74da0d22ebc72f5a625 Mon Sep 17 00:00:00 2001 From: Jiri Kozel Date: Tue, 17 Dec 2024 16:21:24 +0100 Subject: [PATCH 3/5] Increase remark timeout and maxRetries --- .remarkrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.remarkrc b/.remarkrc index 1ff6c35cf..04d30b96f 100644 --- a/.remarkrc +++ b/.remarkrc @@ -7,6 +7,10 @@ }, "lint-no-dead-urls": { "skipLocalhost": true, + "deadOrAliveOptions": { + "timeout": 20000, + "maxRetries": 2 + }, "skipUrlPatterns": [ "https://security.stackexchange.com", "https://github.com/LayerManager/layman/issues/" From ab9535eb6dd312b6bfe69aea57039e29a9b1bc9d Mon Sep 17 00:00:00 2001 From: Jiri Kozel Date: Tue, 17 Dec 2024 16:45:15 +0100 Subject: [PATCH 4/5] Remark ignores Layman blob and Geoserver API Layman blob is ignored, because remark reports missing anchor elements, although they are not missing Geoserver API is ignored, because anchor elements are not available in the document, but they are used to dynamically load content --- .remarkrc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.remarkrc b/.remarkrc index 04d30b96f..035b0b7fc 100644 --- a/.remarkrc +++ b/.remarkrc @@ -13,7 +13,9 @@ }, "skipUrlPatterns": [ "https://security.stackexchange.com", - "https://github.com/LayerManager/layman/issues/" + "https://github.com/LayerManager/layman/issues/", + "https://github.com/LayerManager/layman/blob/", + "https://docs.geoserver.org/2.21.x/en/api/" ] } } From 7370ef227a3e45750aff59c92bb8585f66c45468 Mon Sep 17 00:00:00 2001 From: index-git Date: Wed, 18 Dec 2024 09:48:29 +0100 Subject: [PATCH 5/5] Update expected thumbnails --- .../map_by_schema_version/exp_thumbnail.png | Bin 21535 -> 21819 bytes .../map_liberec_hranice_thumbnail.png | Bin 21535 -> 21819 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/dynamic_data/publications/map_by_schema_version/exp_thumbnail.png b/tests/dynamic_data/publications/map_by_schema_version/exp_thumbnail.png index a53cd1c77370e0f37c54d26c851c8ca09cb86808..d2dff28590eac06f65a04dcf2e7421fa055892f6 100644 GIT binary patch literal 21819 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 i|KITc|CBkDsrmZt?vF_c6&4f~U}3;#4jg=n& literal 21535 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ℑ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 f|2bvW{s2c#YIE4ZwxCJYL;_hCwcyafa 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 i|KITc|CBkDsrmZt?vF_c6&4f~U}3;#4jg=n& literal 21535 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ℑ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 f|2bvW{s2c#Y