Skip to content

Commit

Permalink
Ignore blocklisted uris when querying all providers for sublayers
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jul 23, 2021
1 parent ae980c5 commit e57193d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/core/providers/qgsproviderregistry.cpp
Expand Up @@ -899,6 +899,10 @@ bool QgsProviderRegistry::uriIsBlocklisted( const QString &uri ) const

QList<QgsProviderSublayerDetails> QgsProviderRegistry::querySublayers( const QString &uri, Qgis::SublayerQueryFlags flags, QgsFeedback *feedback ) const
{
// never query sublayers for blocklisted uris
if ( uriIsBlocklisted( uri ) )
return {};

QList<QgsProviderSublayerDetails> res;
for ( auto it = mProviders.begin(); it != mProviders.end(); ++it )
{
Expand Down
10 changes: 9 additions & 1 deletion tests/src/python/test_qgsproviderregistry.py
Expand Up @@ -17,9 +17,11 @@
QgsMapLayerType,
QgsProviderMetadata,
QgsProviderSublayerDetails,
Qgis
Qgis,
QgsProviderUtils
)
from qgis.testing import start_app, unittest
from utilities import unitTestDataPath

# Convenience instances in case you may need them
# to find the srs.db
Expand All @@ -37,6 +39,8 @@ def __init__(self, key):
def querySublayers(self, uri: str, flags=Qgis.SublayerQueryFlags(), feedback=None):
res = QgsProviderSublayerDetails()
res.setProviderKey(self.key())
res.setUri(uri)
res.setName(QgsProviderUtils.suggestLayerNameFromFilePath(uri))
return [res]


Expand Down Expand Up @@ -138,6 +142,10 @@ def testSublayerDetails(self):
self.assertCountEqual([p.providerKey() for p in QgsProviderRegistry.instance().querySublayers('test_uri')],
['p1', 'p2'])

if QgsProviderRegistry.instance().providerMetadata('ept'):
# test querying a uri which should be blocklisted
self.assertFalse(QgsProviderRegistry.instance().querySublayers(unitTestDataPath() + '/point_clouds/ept/sunshine-coast/ept-build.json'))


if __name__ == '__main__':
unittest.main()

0 comments on commit e57193d

Please sign in to comment.