mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
Fix [Tests][Server] Add WMS GetPrint group
This commit is contained in:
parent
13434dca1c
commit
a06984cfaa
@ -287,6 +287,19 @@ bool QgsWmsRenderContext::isValidLayer( const QString &nickname ) const
|
||||
return layer( nickname ) != nullptr;
|
||||
}
|
||||
|
||||
QList<QgsMapLayer *> QgsWmsRenderContext::layersFromGroup( const QString &nickname ) const
|
||||
{
|
||||
QList<QgsMapLayer *> layers;
|
||||
if ( mLayerGroups.contains( nickname ) )
|
||||
{
|
||||
for ( QgsMapLayer *layer : mLayerGroups[nickname] )
|
||||
{
|
||||
layers.append( layer );
|
||||
}
|
||||
}
|
||||
return layers;
|
||||
}
|
||||
|
||||
bool QgsWmsRenderContext::isValidGroup( const QString &name ) const
|
||||
{
|
||||
return mLayerGroups.contains( name );
|
||||
|
@ -178,6 +178,12 @@ namespace QgsWms
|
||||
*/
|
||||
bool isValidLayer( const QString &nickname ) const;
|
||||
|
||||
/**
|
||||
* Returns the group's layers list corresponding to the nickname, or
|
||||
* an empty list if not found.
|
||||
*/
|
||||
QList<QgsMapLayer *> layersFromGroup( const QString &nickname ) const;
|
||||
|
||||
/**
|
||||
* Returns true if \a name is a group.
|
||||
*/
|
||||
|
@ -611,15 +611,38 @@ namespace QgsWms
|
||||
QList<QgsMapLayer *> layerSet;
|
||||
for ( auto layer : cMapParams.mLayers )
|
||||
{
|
||||
QgsMapLayer *mlayer = mContext.layer( layer.mNickname );
|
||||
|
||||
if ( ! mlayer )
|
||||
if ( mContext.isValidGroup( layer.mNickname ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
QList<QgsMapLayer *> layersFromGroup;
|
||||
|
||||
setLayerStyle( mlayer, layer.mStyle );
|
||||
layerSet << mlayer;
|
||||
for ( QgsMapLayer *layer : mContext.layersFromGroup( layer.mNickname ) )
|
||||
{
|
||||
|
||||
if ( ! layer )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
layersFromGroup.push_front( layer );
|
||||
}
|
||||
|
||||
if ( !layersFromGroup.isEmpty() )
|
||||
{
|
||||
layerSet.append( layersFromGroup );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QgsMapLayer *mlayer = mContext.layer( layer.mNickname );
|
||||
|
||||
if ( ! mlayer )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
setLayerStyle( mlayer, layer.mStyle );
|
||||
layerSet << mlayer;
|
||||
}
|
||||
}
|
||||
|
||||
layerSet << externalLayers( cMapParams.mExternalLayers );
|
||||
|
@ -362,6 +362,7 @@ class TestQgsServerWMSGetPrint(QgsServerTestBase):
|
||||
"VERSION": "1.1.1",
|
||||
"REQUEST": "GetPrint",
|
||||
"TEMPLATE": "layoutA4",
|
||||
"FORMAT": "png",
|
||||
"map0:EXTENT": "-33626185.498,-13032965.185,33978427.737,16020257.031",
|
||||
"map0:LAYERS": "Country_Diagrams,Country_Labels,Country",
|
||||
"CRS": "EPSG:3857"
|
||||
@ -375,12 +376,13 @@ class TestQgsServerWMSGetPrint(QgsServerTestBase):
|
||||
"VERSION": "1.1.1",
|
||||
"REQUEST": "GetPrint",
|
||||
"TEMPLATE": "layoutA4",
|
||||
"FORMAT": "png",
|
||||
"map0:EXTENT": "-33626185.498,-13032965.185,33978427.737,16020257.031",
|
||||
"map0:LAYERS": "CountryGroup",
|
||||
"CRS": "EPSG:3857"
|
||||
}.items())])
|
||||
|
||||
r_group, _ = self._result(self._execute_request(qs))
|
||||
r_group, h = self._result(self._execute_request(qs))
|
||||
|
||||
""" Debug check:
|
||||
f = open('grouped.png', 'wb+')
|
||||
@ -393,6 +395,8 @@ class TestQgsServerWMSGetPrint(QgsServerTestBase):
|
||||
|
||||
self.assertEqual(r_individual, r_group, 'Individual layers query and group layers query results should be identical')
|
||||
|
||||
self._img_diff_error(r_group, h, "WMS_GetPrint_Group")
|
||||
|
||||
def test_wms_getprint_legend(self):
|
||||
qs = "?" + "&".join(["%s=%s" % i for i in list({
|
||||
"MAP": urllib.parse.quote(self.projectPath),
|
||||
|
BIN
tests/testdata/control_images/qgis_server/WMS_GetPrint_Group/WMS_GetPrint_Group_mask.png
vendored
Normal file
BIN
tests/testdata/control_images/qgis_server/WMS_GetPrint_Group/WMS_GetPrint_Group_mask.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
Loading…
x
Reference in New Issue
Block a user