From 1b205be604d2909bfac532ba5de382f59f2482b6 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 18 Aug 2014 14:56:15 +0200 Subject: [PATCH] Fix python bindings for QgsRelation.fieldPairs() --- python/core/qgsrelation.sip | 3 ++- tests/src/python/test_qgsrelation.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/python/core/qgsrelation.sip b/python/core/qgsrelation.sip index f39f5a234378..3b64b48ae8de 100644 --- a/python/core/qgsrelation.sip +++ b/python/core/qgsrelation.sip @@ -165,7 +165,8 @@ class QgsRelation */ QMap< QString, QString > fieldPairs() const; %MethodCode - QList< QgsRelation::FieldPair > pairs = sipCpp->fieldPairs(); + const QList< QgsRelation::FieldPair >& pairs = sipCpp->fieldPairs(); + sipRes = new QMap< QString, QString >(); Q_FOREACH( const QgsRelation::FieldPair& pair, pairs ) { sipRes->insert( pair.first, pair.second ); diff --git a/tests/src/python/test_qgsrelation.py b/tests/src/python/test_qgsrelation.py index 26f802a8c0ff..f6cca1b58e49 100644 --- a/tests/src/python/test_qgsrelation.py +++ b/tests/src/python/test_qgsrelation.py @@ -119,5 +119,23 @@ def test_getRelatedFeatures(self): QgsMapLayerRegistry.instance().removeAllMapLayers() + def test_fieldPairs(self): + referencedLayer = createReferencedLayer() + referencingLayer = createReferencingLayer() + QgsMapLayerRegistry.instance().addMapLayers([referencedLayer,referencingLayer]) + + rel = QgsRelation() + + rel.setRelationId( 'rel1' ) + rel.setRelationName( 'Relation Number One' ) + rel.setReferencingLayer( referencingLayer.id() ) + rel.setReferencedLayer( referencedLayer.id() ) + rel.addFieldPair( 'foreignkey', 'y' ) + + assert( rel.fieldPairs() == { 'foreignkey': 'y'} ) + + QgsMapLayerRegistry.instance().removeAllMapLayers() + + if __name__ == '__main__': unittest.main()