def testFieldTooltip(self): f = QgsField('my_string', QVariant.String, 'string') self.assertEqual(QgsFieldModel.fieldToolTip(f), '<b>my_string</b><p>string</p>') f.setAlias('my alias') self.assertEqual(QgsFieldModel.fieldToolTip(f), '<b>my alias</b> (my_string)<p>string</p>') f.setLength(20) self.assertEqual(QgsFieldModel.fieldToolTip(f), '<b>my alias</b> (my_string)<p>string (20)</p>') f = QgsField('my_real', QVariant.Double, 'real', 8, 3) self.assertEqual(QgsFieldModel.fieldToolTip(f), '<b>my_real</b><p>real (8, 3)</p>')
def testGettersSetters(self): """ test model getters/setters """ l = create_layer() m = QgsFieldModel() self.assertFalse(m.layer()) m.setLayer(l) self.assertEqual(m.layer(), l) m.setAllowExpression(True) self.assertTrue(m.allowExpression()) m.setAllowExpression(False) self.assertFalse(m.allowExpression()) m.setAllowEmptyFieldName(True) self.assertTrue(m.allowEmptyFieldName()) m.setAllowEmptyFieldName(False) self.assertFalse(m.allowEmptyFieldName())
def create_model(): l = create_layer() m = QgsFieldModel() m.setLayer(l) return l, m
def testGettersSetters(self): """ test model getters/setters """ l = create_layer() m = QgsFieldModel() self.assertFalse(m.layer()) m.setLayer(l) self.assertEqual(m.layer(), l) m.setAllowExpression(True) self.assertTrue(m.allowExpression()) m.setAllowExpression(False) self.assertFalse(m.allowExpression()) m.setAllowEmptyFieldName(True) self.assertTrue(m.allowEmptyFieldName()) m.setAllowEmptyFieldName(False) self.assertFalse(m.allowEmptyFieldName()) fields = QgsFields() fields.append(QgsField('test1', QVariant.String)) fields.append(QgsField('test2', QVariant.String)) m.setFields(fields) self.assertIsNone(m.layer()) self.assertEqual(m.fields(), fields)
def testJoinedFieldIsEditableRole(self): layer = QgsVectorLayer("Point?field=id_a:integer", "addfeat", "memory") layer2 = QgsVectorLayer("Point?field=id_b:integer&field=value_b", "addfeat", "memory") QgsProject.instance().addMapLayers([layer, layer2]) # editable join join_info = QgsVectorLayerJoinInfo() join_info.setTargetFieldName("id_a") join_info.setJoinLayer(layer2) join_info.setJoinFieldName("id_b") join_info.setPrefix("B_") join_info.setEditable(True) join_info.setUpsertOnEdit(True) layer.addJoin(join_info) m = QgsFieldModel() m.setLayer(layer) self.assertIsNone( m.data(m.indexFromName('id_a'), QgsFieldModel.JoinedFieldIsEditable)) self.assertTrue( m.data(m.indexFromName('B_value_b'), QgsFieldModel.JoinedFieldIsEditable)) self.assertIsNone( m.data(m.indexFromName('an expression'), QgsFieldModel.JoinedFieldIsEditable)) self.assertIsNone( m.data(m.indexFromName(None), QgsFieldModel.JoinedFieldIsEditable)) m.setAllowExpression(True) m.setExpression('an expression') self.assertIsNone( m.data(m.indexFromName('an expression'), QgsFieldModel.JoinedFieldIsEditable)) m.setAllowEmptyFieldName(True) self.assertIsNone( m.data(m.indexFromName(None), QgsFieldModel.JoinedFieldIsEditable)) proxy_m = QgsFieldProxyModel() proxy_m.setFilters(QgsFieldProxyModel.AllTypes | QgsFieldProxyModel.HideReadOnly) proxy_m.sourceFieldModel().setLayer(layer) self.assertEqual(proxy_m.rowCount(), 2) self.assertEqual(proxy_m.data(proxy_m.index(0, 0)), 'id_a') self.assertEqual(proxy_m.data(proxy_m.index(1, 0)), 'B_value_b') # not editable join layer3 = QgsVectorLayer("Point?field=id_a:integer", "addfeat", "memory") QgsProject.instance().addMapLayers([layer3]) join_info = QgsVectorLayerJoinInfo() join_info.setTargetFieldName("id_a") join_info.setJoinLayer(layer2) join_info.setJoinFieldName("id_b") join_info.setPrefix("B_") join_info.setEditable(False) layer3.addJoin(join_info) m = QgsFieldModel() m.setLayer(layer3) self.assertIsNone( m.data(m.indexFromName('id_a'), QgsFieldModel.JoinedFieldIsEditable)) self.assertFalse( m.data(m.indexFromName('B_value_b'), QgsFieldModel.JoinedFieldIsEditable)) self.assertIsNone( m.data(m.indexFromName('an expression'), QgsFieldModel.JoinedFieldIsEditable)) self.assertIsNone( m.data(m.indexFromName(None), QgsFieldModel.JoinedFieldIsEditable)) m.setAllowExpression(True) m.setExpression('an expression') self.assertIsNone( m.data(m.indexFromName('an expression'), QgsFieldModel.JoinedFieldIsEditable)) m.setAllowEmptyFieldName(True) self.assertIsNone( m.data(m.indexFromName(None), QgsFieldModel.JoinedFieldIsEditable)) proxy_m = QgsFieldProxyModel() proxy_m.sourceFieldModel().setLayer(layer3) proxy_m.setFilters(QgsFieldProxyModel.AllTypes | QgsFieldProxyModel.HideReadOnly) self.assertEqual(proxy_m.rowCount(), 1) self.assertEqual(proxy_m.data(proxy_m.index(0, 0)), 'id_a')