Skip to content

Commit

Permalink
Add QgsProject::transactionGroup() available & with Python bindings.
Browse files Browse the repository at this point in the history
  • Loading branch information
c-marcel authored and nyalldawson committed Jun 11, 2018
1 parent 590b380 commit b88c2f4
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 1 deletion.
4 changes: 4 additions & 0 deletions src/core/qgsproject.cpp
Expand Up @@ -2574,6 +2574,10 @@ QMap<QString, QgsMapLayer *> 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
{
Expand Down
11 changes: 10 additions & 1 deletion src/core/qgsproject.h
Expand Up @@ -584,14 +584,23 @@ 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.
*
* \since QGIS 2.16
*/
bool evaluateDefaultValues() const;


/**
* Defines if default values should be evaluated on provider side when requested and not when committed.
*
Expand Down
1 change: 1 addition & 0 deletions tests/src/python/Testing/Temporary/CTestCostData.txt
@@ -0,0 +1 @@
---
16 changes: 16 additions & 0 deletions tests/src/python/test_qgsproject.py
Expand Up @@ -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

Expand Down Expand Up @@ -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())
Expand Down

0 comments on commit b88c2f4

Please sign in to comment.