Plus removed sql injection protection from
sanitize because:
1. it was not required: the value goes into a QgsExpression and it's
never sent to a provider directly
2. it could have been misused with the wrong assumption that
it was robust implementation (it wasn't)
Allow to override the default behavior in case of
bad layers (which is to invalidate the whole project).
When set to TRUE, the bad layers are skipped and the
project is considered available.
Followup #8922
QGIS Server throw an exception if the project has bad layers, but the user can defined restricted layers which are unpublished layers.
So restricted layers can be bad layers server side, it is not necessary an error.
This code verified that the bad layers are not restricted. If the project contains unrestricted bad layers, the server throw an exception.
* [FEATURE] Mesh streamlines
fix#29534
The vector field data set in a mesh layer can currently be only rendered with arrows. This PR adds a new feature to render vector field in mesh layers with streamlines.
The streamlines are seeded from start points. The seeding points can start from the vertices of the mesh, from a used grid or randomly. Streamlines could be coloured or width can be selected.
Make sure Python exceptions are converted into
QgsServerException and catched by the main
service executor.
Without this patch, the server process is terminated
(aborted).
In OGC WMS standard, the empty string represents the default style.
QGIS Server when it parses the parameters, QGIS Server when it parses parameters it removes empty parts.
When all requested styles are default ones it's equal to an empty parameter STYLE, as defined in the standard.
When only one layer is requested, there is no issue with custom or default style.
When multiple layers are requested and some with custom styles, because QGIS Server does not retain empty strings, it loses the layer / style match.
To fix it, keeps empty parts for not empty styles parameters.
For the c++ api dox this expands to "\c nullptr" (the
\c directive indicates a code literal value), and for sipify/Python
it expands to ``None`` (`` is sphinx annotation for literal values)
Makes for nicer dox for both c++ and Python!