def importClicked(self): if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = resolveLayer(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref = branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage("Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close()
def exportFullRepo(repo, ref=geogig.HEAD): trees = repo.trees ref = repo.revparse(ref) for tree in trees: trackedlayer = getTrackingInfoForGeogigLayer(repo.url, tree.path) if trackedlayer is None or not os.path.exists(trackedlayer.source): filepath = os.path.join(repo.url, tree.path + ".shp") repo.exportshp(ref, tree.path, filepath, "utf-8") addTrackedLayer(filepath, repo.url, tree.path, ref) elif trackedlayer.ref != ref: repo.exportshp(ref, tree.path, trackedlayer.source, "utf-8") setRef(trackedlayer.source, ref)
def exportFullRepo(repo, ref = geogig.HEAD): trees = repo.trees ref = repo.revparse(ref) for tree in trees: trackedlayer = getTrackingInfoForGeogigLayer(repo.url, tree.path) if trackedlayer is None or not os.path.exists(trackedlayer.source): filepath = os.path.join(repo.url, tree.path + ".shp") repo.exportshp(ref, tree.path, filepath, "utf-8") addTrackedLayer(filepath, repo.url, tree.path, ref) elif trackedlayer.ref != ref: repo.exportshp(ref, tree.path, trackedlayer.source, "utf-8") setRef(trackedlayer.source, ref)
def exportFullRepo(repo, ref = geogig.HEAD): reponame = nameFromRepoPath(repo.url) repouser = userFromRepoPath(repo.url) repoowner = ownerFromRepoPath(repo.url) trees = repo.trees ref = repo.revparse(ref) for tree in trees: trackedlayer = getTrackingInfoForGeogigLayer(repo.url, tree.path) if trackedlayer is None or not os.path.exists(trackedlayer.source): filepath = os.path.join(repo.url, tree.path + ".shp") repo.exportshp(ref, tree.path, filepath) addTrackedLayer(filepath, reponame, repoowner, repouser, tree.path, ref) elif trackedlayer.ref != ref: repo.exportshp(ref, tree.path, trackedlayer.source) setRef(trackedlayer.source, ref)
def importClicked(self): ret = QMessageBox.warning( config.iface.mainWindow(), 'Import warning', "Importing a layer will modify the original layer and might cause data loss.\n" "Make sure you have a backup copy of your layer before importing.\n" "Do you want to import the selected layer?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.No: return if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = layerFromName(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() or datetime.now().strftime( "%Y-%m-%d %H_%M_%S") branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref=branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage( "Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close()
def importClicked(self): ret = QMessageBox.warning(config.iface.mainWindow(), 'Import warning', "Importing a layer will modify the original layer and might cause data loss.\n" "Make sure you have a backup copy of your layer before importing.\n" "Do you want to import the selected layer?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.No: return if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = layerFromName(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() or datetime.now().strftime("%Y-%m-%d %H_%M_%S") branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref = branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage("Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close()
def checkoutLayer(repo, layername, bbox, ref=None): ref = ref or repo.HEAD newCommitId = repo.revparse(ref) trackedlayer = getTrackingInfoForGeogigLayer(repo.url, layername) if trackedlayer is not None: if not os.path.exists(trackedlayer.geopkg): removeTrackedLayer(trackedlayer.source) trackedlayer = None filename = layerGeopackageFilename(layername, repo.title, repo.group) source = "%s|layername=%s" % (filename, layername) else: source = trackedlayer.source else: filename = layerGeopackageFilename(layername, repo.title, repo.group) source = "%s|layername=%s" % (filename, layername) if trackedlayer is None: repo.checkoutlayer(filename, layername, bbox, ref or repo.HEAD) addTrackedLayer(source, repo.url) try: layer = resolveLayerFromSource(source) iface.messageBar().pushMessage( "GeoGig", "Layer was already included in the current QGIS project", level=QgsMessageBar.INFO, duration=5) except WrongLayerSourceException: layer = loadLayerNoCrsDialog(source, layername, "ogr") QgsMapLayerRegistry.instance().addMapLayers([layer]) iface.messageBar().pushMessage("GeoGig", "Layer correctly added to project", level=QgsMessageBar.INFO, duration=5) elif ref is not None: currentCommitId = getCommitId(source) try: layer = resolveLayerFromSource(source) wasLoaded = True except WrongLayerSourceException: layer = loadLayerNoCrsDialog(source, layername, "ogr") wasLoaded = False if newCommitId != currentCommitId: if hasLocalChanges(layer): raise HasLocalChangesError() filename, layername = namesFromLayer(layer) repo.checkoutlayer(filename, layername, bbox, ref) layer.reload() if not wasLoaded: QgsMapLayerRegistry.instance().addMapLayers([layer]) iface.messageBar().pushMessage( "GeoGig", "Layer correctly added to project", level=QgsMessageBar.INFO, duration=5) else: iface.messageBar().pushMessage( "GeoGig", "Layer correctly updated to specified version", level=QgsMessageBar.INFO, duration=5) layer.triggerRepaint() else: if wasLoaded: iface.messageBar().pushMessage( "GeoGig", "Layer was already included in the current QGIS project", level=QgsMessageBar.INFO, duration=5) else: QgsMapLayerRegistry.instance().addMapLayers([layer]) iface.messageBar().pushMessage( "GeoGig", "Layer correctly added to the current QGIS project", level=QgsMessageBar.INFO, duration=5) repoWatcher.repoChanged.emit(repo) return layer
self.repo.add() try: self.repo.commit(message) except UnconfiguredUserException, e: configureUser() self.repo.commit(message) except GeoGigException, e: if "Nothing to commit" in e.args[0]: config.iface.messageBar().pushMessage( "No version has been created. Repository is already up to date", level=QgsMessageBar.INFO, duration=4) self.close() return except: self.close() raise ref = self.repo.revparse(geogig.HEAD) addTrackedLayer(self.layer or source, self.repo.url, self.layer.name(), ref) self.ok = True config.iface.messageBar().pushMessage( "Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=4) self.close() def cancelPressed(self): self.close()
charset = locale.getpreferredencoding() self.repo.importshp(source, False, self.layer.name(), "geogigid", True, charset) message = self.messageBox.toPlainText() self.repo.add() try: self.repo.commit(message) except UnconfiguredUserException, e: configureUser() self.repo.commit(message) except GeoGigException, e: if "Nothing to commit" in e.args[0]: config.iface.messageBar().pushMessage("No version has been created. Repository is already up to date", level = QgsMessageBar.INFO, duration = 4) self.close() return except: self.close() raise ref = self.repo.revparse(geogig.HEAD) addTrackedLayer(self.layer or source, self.repo.url, self.layer.name(), ref) self.ok = True config.iface.messageBar().pushMessage("Layer was correctly added to repository", level = QgsMessageBar.INFO, duration = 4) self.close() def cancelPressed(self): self.close()