@@ -1241,11 +1241,13 @@ namespace QgsWms
1241
1241
Q_FOREACH ( QString queryLayer, queryLayers )
1242
1242
{
1243
1243
bool validLayer = false ;
1244
+ bool queryableLayer = false ;
1244
1245
Q_FOREACH ( QgsMapLayer *layer, layers )
1245
1246
{
1246
1247
if ( queryLayer == layerNickname ( *layer ) )
1247
1248
{
1248
1249
validLayer = true ;
1250
+ queryableLayer = !mProject ->nonIdentifiableLayers ().contains ( layer->id () );
1249
1251
1250
1252
QDomElement layerElement;
1251
1253
if ( infoFormat == QgsWmsParameters::Format::GML )
@@ -1308,8 +1310,12 @@ namespace QgsWms
1308
1310
break ;
1309
1311
}
1310
1312
}
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 ) )
1313
1319
{
1314
1320
QString msg = QObject::tr ( " Layer '%1' not found" ).arg ( queryLayer );
1315
1321
throw QgsBadRequestException ( QStringLiteral ( " LayerNotDefined" ), msg );
@@ -2416,7 +2422,12 @@ namespace QgsWms
2416
2422
{
2417
2423
if ( child->nodeType () == QgsLayerTreeNode::NodeGroup )
2418
2424
{
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 );
2420
2431
}
2421
2432
}
2422
2433
}
0 commit comments