def changed_geom(layerId, geoms): fids = geoms.keys() freq = QgsFeatureRequest() freq.setFilterFids(fids) feats = list(layer_from_name(shpName).getFeatures(freq)) fks_to_change = get_fk_set(shpName, shpKeyName, skipFirst=False, fids=fids) global shpChange shpChange = {k: v for (k, v) in zip(fks_to_change, feats)}
def get_fk_set(layerName, fkName, skipFirst=True, fids=None): layer = layer_from_name(layerName) freq = QgsFeatureRequest() if fids is not None: freq.setFilterFids(fids) feats = [f for f in layer.getFeatures(freq)] fkSet = [] first = True for f in feats: if skipFirst and first: first = False continue fk = f.attribute(fkName) fkSet.append(fk) return fkSet
def get_fk_set(layerName, fkName, skipFirst=1, fids=None, useProvider=False): """ skipFirst: number of initial lines to skip (header lines in excel) """ layer = layer_from_name(layerName) freq = QgsFeatureRequest() if fids is not None: freq.setFilterFids(fids) if not useProvider: feats = [f for f in layer.getFeatures(freq)] else: feats = [f for f in layer.dataProvider().getFeatures(freq)] fkSet = [] for f in feats[skipFirst:]: QgsMessageLog.logMessage('FK {}'.format(f.attribute(fkName)), logTag, QgsMessageLog.CRITICAL) fk = f.attribute(fkName) if fk: # Skip NULL ids that may be reported from excel files fkSet.append(fk) return fkSet
def get_fk_set(layerName, fkName, skipFirst=1, fids=None, useProvider=False): """ skipFirst: number of initial lines to skip (header lines in excel) """ layer = layer_from_name(layerName) freq = QgsFeatureRequest() if fids is not None: freq.setFilterFids(fids) if not useProvider: feats = [f for f in layer.getFeatures(freq)] else: feats = [f for f in layer.dataProvider().getFeatures(freq)] fkSet = [] for f in feats[skipFirst:]: QgsMessageLog.logMessage( 'FK {}'.format(f.attribute(fkName)), logTag, QgsMessageLog.CRITICAL) fk = f.attribute(fkName) if fk: # Skip NULL ids that may be reported from excel files fkSet.append(fk) return fkSet
def query_layer_for_fids(layerName, fids): layer = layer_from_name(layerName) freq = QgsFeatureRequest() freq.setFilterFids(fids) return list(layer.getFeatures(freq))