예제 #1
0
 def testFieldTooltipExtended(self):
     layer = QgsVectorLayer("Point?", "tooltip", "memory")
     f = QgsField('my_real', QVariant.Double, 'real', 8, 3, 'Comment text')
     layer.addExpressionField('1+1', f)
     layer.updateFields()
     self.assertEqual(QgsFieldModel.fieldToolTipExtended(QgsField('my_string', QVariant.String, 'string'), layer), '')
     self.assertEqual(QgsFieldModel.fieldToolTipExtended(f, layer), "<b>my_real</b><br><font style='font-family:monospace; white-space: nowrap;'>real(8, 3) NULL</font><br><em>Comment text</em><br><font style='font-family:monospace;'>1+1</font>")
     f.setAlias('my alias')
     constraints = f.constraints()
     constraints.setConstraint(QgsFieldConstraints.ConstraintUnique)
     f.setConstraints(constraints)
     self.assertEqual(QgsFieldModel.fieldToolTipExtended(f, layer), "<b>my alias</b> (my_real)<br><font style='font-family:monospace; white-space: nowrap;'>real(8, 3) NULL UNIQUE</font><br><em>Comment text</em><br><font style='font-family:monospace;'>1+1</font>")
예제 #2
0
    def testWidget(self):
        """Test widget operations"""

        widget = QgsFieldMappingWidget()
        for i in range(10):
            widget.appendField(QgsField(str(i)))
        self.assertTrue(widget.model().rowCount(QModelIndex()), 10)

        def _compare(widget, expected):
            actual = []
            for field in widget.mapping():
                actual.append(int(field.originalName))
            self.assertEqual(actual, expected)

        _compare(widget, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

        selection_model = widget.selectionModel()
        selection_model.clear()
        for i in range(0, 10, 2):
            selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select)

        self.assertTrue(widget.moveSelectedFieldsDown())
        _compare(widget, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8])

        selection_model.clear()
        for i in range(1, 10, 2):
            selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select)

        self.assertTrue(widget.moveSelectedFieldsUp())
        _compare(widget, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

        selection_model.clear()
        for i in range(0, 10, 2):
            selection_model.select(widget.model().index(i, 0), QItemSelectionModel.Select)

        self.assertTrue(widget.removeSelectedFields())
        _compare(widget, [1, 3, 5, 7, 9])

        # Test set destination fields
        widget.setSourceFields(self.source_fields)
        widget.setDestinationFields(self.destination_fields)
        mapping = widget.mapping()
        self.assertEqual(mapping[0].field.name(), 'destination_field1')
        self.assertEqual(mapping[1].field.name(), 'destination_field2')
        self.assertEqual(mapping[2].field.name(), 'destination_field3')
        self.assertEqual(mapping[0].originalName, 'destination_field1')
        self.assertEqual(mapping[1].originalName, 'destination_field2')
        self.assertEqual(mapping[2].originalName, 'destination_field3')

        # Test constraints
        f = QgsField('constraint_field', QVariant.Int)
        constraints = QgsFieldConstraints()
        constraints.setConstraint(QgsFieldConstraints.ConstraintNotNull, QgsFieldConstraints.ConstraintOriginProvider)
        constraints.setConstraint(QgsFieldConstraints.ConstraintExpression,
                                  QgsFieldConstraints.ConstraintOriginProvider)
        constraints.setConstraint(QgsFieldConstraints.ConstraintUnique, QgsFieldConstraints.ConstraintOriginProvider)
        f.setConstraints(constraints)
        fields = QgsFields()
        fields.append(f)
        widget.setDestinationFields(fields)
        self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.DisplayRole),
                         "Constraints active")
        self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.ToolTipRole),
                         "Unique<br>Not null<br>Expression")
        self.assertEqual(widget.model().data(widget.model().index(0, 5, QModelIndex()), Qt.BackgroundColorRole),
                         QColor(255, 224, 178))
예제 #3
0
    def test_field_to_json(self):
        field = QgsField('my name', QVariant.LongLong)
        field.setAlias('my alias')
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'alias': 'my alias',
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeInteger'
            })
        field = QgsField('my name', QVariant.Int)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeSmallInteger'
            })
        field = QgsField('my name', QVariant.Double)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeDouble'
            })
        field = QgsField('my name', QVariant.String)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeString'
            })
        field = QgsField('my name', QVariant.DateTime)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeDate'
            })
        field = QgsField('my name', QVariant.ByteArray)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeBlob'
            })

        # unsupported type
        field = QgsField('my name', QVariant.Time)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': True,
                'type': 'esriFieldTypeString'
            })

        # not nullable
        field = QgsField('my name', QVariant.Int)
        field_constraints = field.constraints()
        field_constraints.setConstraint(
            QgsFieldConstraints.Constraint.ConstraintNotNull)
        field.setConstraints(field_constraints)
        self.assertEqual(
            QgsArcGisRestUtils.fieldDefinitionToJson(field), {
                'editable': True,
                'name': 'my name',
                'nullable': False,
                'type': 'esriFieldTypeSmallInteger'
            })