def test_invalid(self): """ Test that invalid attributes are correctly loaded and written """ doc = QDomDocument("properties") elem = QgsXmlUtils.writeVariant(None, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertIsNone(prop2)
def test_list(self): """ Test that lists are correctly loaded and written """ doc = QDomDocument("properties") my_properties = [1, 4, 'a', 'test', 7.9] elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_integer(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 1, 'b': 2, 'c': 3, 'd': -1} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_geom(self): """ Test that QgsGeometry values are correctly loaded and written """ doc = QDomDocument("properties") g = QgsGeometry.fromWkt('Point(3 4)') elem = QgsXmlUtils.writeVariant(g, doc) g2 = QgsXmlUtils.readVariant(elem) self.assertEqual(g2.asWkt(), 'Point (3 4)')
def test_complex(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'boolean': True, 'integer': False, 'map': {'a': 1}} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_double(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 0.27, 'b': 1.0, 'c': 5} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_boolean(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': True, 'b': False} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEquals(my_properties, prop2)
def test_long(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") # not sure if this actually does map to a long? my_properties = {'a': 9223372036854775808} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_string(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 'a', 'b': 'b', 'c': 'something_else', 'empty': ''} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_boolean(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': True, 'b': False} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_complex(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'boolean': True, 'integer': False, 'map': {'a': 1}} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEquals(my_properties, prop2)
def test_output_layer_definition(self): """ Test that QgsProcessingOutputLayerDefinition values are correctly loaded and written """ doc = QDomDocument("properties") definition = QgsProcessingOutputLayerDefinition(QgsProperty.fromValue('my sink')) definition.createOptions = {'opt': 1, 'opt2': 2} elem = QgsXmlUtils.writeVariant(definition, doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c.sink.staticValue(), 'my sink') self.assertEqual(c.createOptions, {'opt': 1, 'opt2': 2})
def test_datetime(self): """ Test that QDateTime values are correctly loaded and written """ doc = QDomDocument("properties") elem = QgsXmlUtils.writeVariant( QDateTime(QDate(2019, 5, 7), QTime(12, 11, 10)), doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c, QDateTime(QDate(2019, 5, 7), QTime(12, 11, 10))) elem = QgsXmlUtils.writeVariant(QDateTime(), doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c, NULL)
def test_crs(self): """ Test that QgsCoordinateReferenceSystem values are correctly loaded and written """ doc = QDomDocument("properties") crs = QgsCoordinateReferenceSystem('epsg:3111') elem = QgsXmlUtils.writeVariant(crs, doc) crs2 = QgsXmlUtils.readVariant(elem) self.assertTrue(crs2.isValid()) self.assertEqual(crs2.authid(), 'EPSG:3111') crs = QgsCoordinateReferenceSystem() elem = QgsXmlUtils.writeVariant(crs, doc) crs2 = QgsXmlUtils.readVariant(elem) self.assertFalse(crs2.isValid())
def test_feature_source_definition(self): """ Test that QgsProcessingFeatureSourceDefinition values are correctly loaded and written """ doc = QDomDocument("properties") definition = QgsProcessingFeatureSourceDefinition(QgsProperty.fromValue('my source')) definition.selectedFeaturesOnly = True definition.featureLimit = 27 definition.flags = QgsProcessingFeatureSourceDefinition.FlagCreateIndividualOutputPerInputFeature definition.geometryCheck = QgsFeatureRequest.GeometrySkipInvalid elem = QgsXmlUtils.writeVariant(definition, doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c.source.staticValue(), 'my source') self.assertTrue(c.selectedFeaturesOnly) self.assertEqual(c.featureLimit, 27) self.assertEqual(c.flags, QgsProcessingFeatureSourceDefinition.FlagCreateIndividualOutputPerInputFeature) self.assertEqual(c.geometryCheck, QgsFeatureRequest.GeometrySkipInvalid)
def write_xml(self, document: QDomDocument): """ Writes the plot settings to an XML element """ element = QgsXmlUtils.writeVariant( { 'plot_type': self.plot_type, 'plot_properties': self.properties, 'plot_layout': self.layout, 'source_layer_id': self.source_layer_id }, document) return element
def write_xml(self, document: QDomDocument): """ Writes the plot settings to an XML element """ element = QgsXmlUtils.writeVariant({ 'plot_type': self.plot_type, 'plot_properties': self.properties, 'plot_layout': self.layout, 'source_layer_id': self.source_layer_id, 'dynamic_properties': self.data_defined_properties.toVariant(PlotSettings.DYNAMIC_PROPERTIES) }, document) return element
def test_property(self): """ Test that QgsProperty values are correctly loaded and written """ doc = QDomDocument("properties") prop = QgsProperty.fromValue(1001) elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2) prop = QgsProperty.fromExpression('1+2=5') elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2) prop = QgsProperty.fromField('oid') elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2)
def read_project(self, doc): """ Reads the project model definitions from the project DOM document :param doc: DOM document """ self.model_definitions = [] project_models_nodes = doc.elementsByTagName('projectModels') if project_models_nodes: project_models_node = project_models_nodes.at(0) model_nodes = project_models_node.childNodes() for n in range(model_nodes.count()): model_element = model_nodes.at(n).toElement() definition = QgsXmlUtils.readVariant(model_element) self.model_definitions.append(definition) self.refreshAlgorithms()
def read_xml(self, element: QDomElement) -> bool: """ Reads the plot settings from an XML element """ res = QgsXmlUtils.readVariant(element) if not isinstance(res, dict) or \ 'plot_type' not in res or \ 'plot_properties' not in res or \ 'plot_layout' not in res: return False self.plot_type = res['plot_type'] self.properties = res['plot_properties'] self.layout = res['plot_layout'] self.source_layer_id = res.get('source_layer_id', None) return True
def write_project(self, doc): """ Writes out the project model definitions into the project DOM document :param doc: DOM document """ qgis_nodes = doc.elementsByTagName('qgis') if not qgis_nodes: return qgis_node = qgis_nodes.at(0) project_models_node = doc.createElement('projectModels') for a in self.algorithms(): definition = a.toVariant() element = QgsXmlUtils.writeVariant(definition, doc) project_models_node.appendChild(element) qgis_node.appendChild(project_models_node)
def read_project(self, doc): """ Reads the project model definitions from the project DOM document :param doc: DOM document """ self.model_definitions = {} project_models_nodes = doc.elementsByTagName('projectModels') if project_models_nodes: project_models_node = project_models_nodes.at(0) model_nodes = project_models_node.childNodes() for n in range(model_nodes.count()): model_element = model_nodes.at(n).toElement() definition = QgsXmlUtils.readVariant(model_element) algorithm = QgsProcessingModelAlgorithm() if algorithm.loadVariant(definition): self.model_definitions[algorithm.name()] = definition self.refreshAlgorithms()
def read_xml(self, element: QDomElement) -> bool: """ Reads the plot settings from an XML element """ res = QgsXmlUtils.readVariant(element) if not isinstance(res, dict) or \ 'plot_type' not in res or \ 'plot_properties' not in res or \ 'plot_layout' not in res: return False self.plot_type = res['plot_type'] self.properties = res['plot_properties'] self.layout = res['plot_layout'] self.source_layer_id = res.get('source_layer_id', None) self.data_defined_properties.loadVariant(res.get('dynamic_properties', None), PlotSettings.DYNAMIC_PROPERTIES) return True
def test_color(self): """ Test that QColor values are correctly loaded and written """ doc = QDomDocument("properties") elem = QgsXmlUtils.writeVariant(QColor(100, 200, 210), doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c, QColor(100, 200, 210)) elem = QgsXmlUtils.writeVariant(QColor(100, 200, 210, 50), doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c, QColor(100, 200, 210, 50)) elem = QgsXmlUtils.writeVariant(QColor(), doc) c = QgsXmlUtils.readVariant(elem) self.assertFalse(c.isValid())