def run(self): ''' Runs the widget ''' if not PagLuxembourg.main.current_project.isPagProject(): return self.dlg = ImportManagerDialog() self.dlg.show()
class ImportManager(object): ''' Main class for the import data widget ''' def __init__(self): ''' Constructor ''' pass def run(self): ''' Runs the widget ''' if not PagLuxembourg.main.current_project.isPagProject(): return self.dlg = ImportManagerDialog() self.dlg.show() def rollbackImport(self, id): errors = False # Delete import from layers for layer in PagLuxembourg.main.qgis_interface.legendInterface().layers(): if not (layer.type() == QgsMapLayer.VectorLayer and PagLuxembourg.main.current_project.isPagLayer(layer)): continue errors = errors or not self._deleteImportFromLayer(layer, id) # Delete entry in import log Table layer = PagLuxembourg.main.current_project.getImportLogLayer() errors = errors or not self._deleteImportFromLayer(layer, id) if not errors: PagLuxembourg.main.qgis_interface.messageBar().pushSuccess(QCoreApplication.translate('ImportManager','Success'), QCoreApplication.translate('ImportManager','Rollback was successful')) def _deleteImportFromLayer(self, layer, importid): fids = [] expr = QgsExpression('{}=\'{}\''.format(PagLuxembourg.project.IMPORT_ID, importid)) feature_request = QgsFeatureRequest(expr) for feature in layer.getFeatures(feature_request): fids.append(feature.id()) # Start editing session if not layer.isEditable(): layer.startEditing() # Delete features layer.dataProvider().deleteFeatures(fids) # Commit if not layer.commitChanges(): layer.rollBack() PagLuxembourg.main.qgis_interface.messageBar().pushCritical(QCoreApplication.translate('ImportManager','Error'), QCoreApplication.translate('ImportManager','Commit error on layer {}').format(layer.name())) errors = layer.commitErrors() for error in errors: QgsMessageLog.logMessage(error, 'PAG Luxembourg', QgsMessageLog.CRITICAL) PagLuxembourg.main.qgis_interface.openMessageLog() return False return True
class ImportManager(object): ''' Main class for the import data widget ''' def __init__(self): ''' Constructor ''' pass def run(self): ''' Runs the widget ''' if not PagLuxembourg.main.current_project.isPagProject(): return self.dlg = ImportManagerDialog() self.dlg.show() def rollbackImport(self, id): errors = False # Delete import from layers for layer in PagLuxembourg.main.qgis_interface.legendInterface( ).layers(): if not (layer.type() == QgsMapLayer.VectorLayer and PagLuxembourg.main.current_project.isPagLayer(layer)): continue errors = errors or not self._deleteImportFromLayer(layer, id) # Delete entry in import log Table layer = PagLuxembourg.main.current_project.getImportLogLayer() errors = errors or not self._deleteImportFromLayer(layer, id) if not errors: PagLuxembourg.main.qgis_interface.messageBar().pushSuccess( QCoreApplication.translate('ImportManager', 'Success'), QCoreApplication.translate('ImportManager', 'Rollback was successful')) def _deleteImportFromLayer(self, layer, importid): fids = [] expr = QgsExpression('{}=\'{}\''.format( PagLuxembourg.project.IMPORT_ID, importid)) feature_request = QgsFeatureRequest(expr) for feature in layer.getFeatures(feature_request): fids.append(feature.id()) # Start editing session if not layer.isEditable(): layer.startEditing() # Delete features layer.dataProvider().deleteFeatures(fids) # Commit if not layer.commitChanges(): layer.rollBack() PagLuxembourg.main.qgis_interface.messageBar().pushCritical( QCoreApplication.translate('ImportManager', 'Error'), QCoreApplication.translate('ImportManager', 'Commit error on layer {}').format( layer.name())) errors = layer.commitErrors() for error in errors: QgsMessageLog.logMessage(error, 'PAG Luxembourg', QgsMessageLog.CRITICAL) PagLuxembourg.main.qgis_interface.openMessageLog() return False return True