From b88c2f42ea671299a54d1a17e31167799c6f00e5 Mon Sep 17 00:00:00 2001 From: "C. Marcel" Date: Tue, 11 Jul 2017 12:14:50 +0200 Subject: [PATCH] Add QgsProject::transactionGroup() available & with Python bindings. --- src/core/qgsproject.cpp | 4 ++++ src/core/qgsproject.h | 11 ++++++++++- .../python/Testing/Temporary/CTestCostData.txt | 1 + tests/src/python/test_qgsproject.py | 16 ++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/src/python/Testing/Temporary/CTestCostData.txt diff --git a/src/core/qgsproject.cpp b/src/core/qgsproject.cpp index 687c821bb767..54f73fe093e4 100644 --- a/src/core/qgsproject.cpp +++ b/src/core/qgsproject.cpp @@ -2574,6 +2574,10 @@ QMap QgsProject::mapLayers() const return mLayerStore->mapLayers(); } +QgsTransactionGroup *QgsProject::transactionGroup( const QString &providerKey, const QString &connString ) +{ + return mTransactionGroups.value( qMakePair( providerKey, connString ) ); +} QgsCoordinateReferenceSystem QgsProject::defaultCrsForNewLayers() const { diff --git a/src/core/qgsproject.h b/src/core/qgsproject.h index 7c2607798838..a53650f1f90a 100644 --- a/src/core/qgsproject.h +++ b/src/core/qgsproject.h @@ -584,6 +584,16 @@ class CORE_EXPORT QgsProject : public QObject, public QgsExpressionContextGenera */ QMap< QPair< QString, QString>, QgsTransactionGroup *> transactionGroups() SIP_SKIP; + /** + * Get a transaction group by getting provider & connection string. + * Returns null pointer if transaction group is not available. + * + * providerKey, connString -> transactionGroup + * + * \since QGIS 3.0 + */ + QgsTransactionGroup *transactionGroup( const QString &providerKey, const QString &connString ); + /** * Should default values be evaluated on provider side when requested and not when committed. * @@ -591,7 +601,6 @@ class CORE_EXPORT QgsProject : public QObject, public QgsExpressionContextGenera */ bool evaluateDefaultValues() const; - /** * Defines if default values should be evaluated on provider side when requested and not when committed. * diff --git a/tests/src/python/Testing/Temporary/CTestCostData.txt b/tests/src/python/Testing/Temporary/CTestCostData.txt new file mode 100644 index 000000000000..ed97d539c095 --- /dev/null +++ b/tests/src/python/Testing/Temporary/CTestCostData.txt @@ -0,0 +1 @@ +--- diff --git a/tests/src/python/test_qgsproject.py b/tests/src/python/test_qgsproject.py index de24eeb253aa..218232fbc9fe 100644 --- a/tests/src/python/test_qgsproject.py +++ b/tests/src/python/test_qgsproject.py @@ -54,6 +54,11 @@ def __init__(self, methodName): unittest.TestCase.__init__(self, methodName) self.messageCaught = False + def setUpClass(cls): + cls.dbconn = 'dbname=\'qgis_test\'' + if 'QGIS_PGTEST_DB' in os.environ: + cls.dbconn = os.environ['QGIS_PGTEST_DB'] + def test_makeKeyTokens_(self): # see http://www.w3.org/TR/REC-xml/#d0e804 for a list of valid characters @@ -689,6 +694,17 @@ def testTakeLayer(self): p = None self.assertTrue(l1.isValid()) + def test_transactionsGroup(self): + # No transaction group. + QgsProject.instance().setAutoTransaction(False) + noTg = QgsProject.instance().transactionGroup("provider-key", "database-connection-string") + self.assertIsNone(noTg) + + # Undefined transaction group (wrong provider key). + QgsProject.instance().setAutoTransaction(True) + noTg = QgsProject.instance().transactionGroup("provider-key", "database-connection-string") + self.assertIsNone(noTg) + def test_zip_new_project(self): tmpDir = QTemporaryDir() tmpFile = "{}/project.qgz".format(tmpDir.path())