@@ -1241,11 +1241,13 @@ namespace QgsWms
12411241 Q_FOREACH ( QString queryLayer, queryLayers )
12421242 {
12431243 bool validLayer = false ;
1244+ bool queryableLayer = false ;
12441245 Q_FOREACH ( QgsMapLayer *layer, layers )
12451246 {
12461247 if ( queryLayer == layerNickname ( *layer ) )
12471248 {
12481249 validLayer = true ;
1250+ queryableLayer = !mProject ->nonIdentifiableLayers ().contains ( layer->id () );
12491251
12501252 QDomElement layerElement;
12511253 if ( infoFormat == QgsWmsParameters::Format::GML )
@@ -1308,8 +1310,12 @@ namespace QgsWms
13081310 break ;
13091311 }
13101312 }
1311-
1312- if ( !validLayer && !mNicknameLayers .contains ( queryLayer ) )
1313+ if ( !queryableLayer )
1314+ {
1315+ QString msg = QObject::tr ( " Layer '%1' is not queryable" ).arg ( queryLayer );
1316+ throw QgsBadRequestException ( QStringLiteral ( " LayerNotQueryable" ), msg );
1317+ }
1318+ else if ( !validLayer && !mNicknameLayers .contains ( queryLayer ) )
13131319 {
13141320 QString msg = QObject::tr ( " Layer '%1' not found" ).arg ( queryLayer );
13151321 throw QgsBadRequestException ( QStringLiteral ( " LayerNotDefined" ), msg );
@@ -2416,7 +2422,12 @@ namespace QgsWms
24162422 {
24172423 if ( child->nodeType () == QgsLayerTreeNode::NodeGroup )
24182424 {
2419- initLayerGroupsRecursive ( static_cast <const QgsLayerTreeGroup *>( child ), child->name () );
2425+ QString shortName = child->customProperty ( QStringLiteral ( " wmsShortName" ) ).toString ();
2426+ QString name = child->name ();
2427+ if ( !shortName.isEmpty () )
2428+ initLayerGroupsRecursive ( static_cast <const QgsLayerTreeGroup *>( child ), shortName );
2429+ else
2430+ initLayerGroupsRecursive ( static_cast <const QgsLayerTreeGroup *>( child ), name );
24202431 }
24212432 }
24222433 }
0 commit comments