def commitLayer(layer): trackedLayer = getTrackingInfo(layer) try: repo = createRepository(trackedLayer.repoFolder, False) except Py4JConnectionException: QtGui.QApplication.restoreOverrideCursor() dlg = GatewayNotAvailableWhileEditingDialog(config.iface.mainWindow()) dlg.exec_() return QtGui.QApplication.restoreOverrideCursor() if layer.dataProvider().fieldNameIndex("geogigid") == -1: config.iface.messageBar().pushMessage( "Cannot update GeoGig repository. Layer has no 'geogigid' field", level=QgsMessageBar.WARNING, duration=4) return exported, charset = exportVectorLayer(layer) repo.importshp(exported, False, trackedLayer.layername, "geogigid", True, charset) unstaged = repo.difftreestats(geogig.HEAD, geogig.WORK_HEAD) total = 0 for counts in unstaged.values(): total += sum(counts) if total == 0: config.iface.messageBar().pushMessage( "No changes detected. Repository was already up to date", level=QgsMessageBar.INFO, duration=4) return dlg = CommitDialog(repo, config.iface.mainWindow()) dlg.exec_() try: repo.addandcommit(dlg.getMessage()) except UnconfiguredUserException, e: user = config.getConfigValue(config.GENERAL, config.USERNAME) email = config.getConfigValue(config.GENERAL, config.EMAIL) if not (user and email): configdlg = UserConfigDialog(config.iface.mainWindow()) configdlg.exec_() if configdlg.user is not None: user = configdlg.user email = configdlg.email config.setConfigValue(config.GENERAL, config.USERNAME, user) config.setConfigValue(config.GENERAL, config.EMAIL, email) else: return repo.config(geogig.USER_NAME, user, True) repo.config(geogig.USER_EMAIL, email, True) repo.commit(dlg.getMessage())
def commitLayer(layer): trackedLayer = getTrackingInfo(layer) try: repo = createRepository(trackedLayer.repoFolder, False) except Py4JConnectionException: QtGui.QApplication.restoreOverrideCursor() dlg = GatewayNotAvailableWhileEditingDialog(config.iface.mainWindow()) dlg.exec_() return QtGui.QApplication.restoreOverrideCursor() if layer.dataProvider().fieldNameIndex("geogigid") == -1: config.iface.messageBar().pushMessage("Cannot update GeoGig repository. Layer has no 'geogigid' field", level = QgsMessageBar.WARNING, duration = 4) return exported, charset = exportVectorLayer(layer) repo.importshp(exported, False, trackedLayer.layername, "geogigid", True, charset) unstaged = repo.difftreestats(geogig.HEAD, geogig.WORK_HEAD) total = 0 for counts in unstaged.values(): total += sum(counts) if total == 0: config.iface.messageBar().pushMessage("No changes detected. Repository was already up to date", level = QgsMessageBar.INFO, duration = 4) return dlg = CommitDialog(repo, config.iface.mainWindow()) dlg.exec_() try: repo.addandcommit(dlg.getMessage()) except UnconfiguredUserException, e: user = config.getConfigValue(config.GENERAL, config.USERNAME) email = config.getConfigValue(config.GENERAL, config.EMAIL) if not (user and email): configdlg = UserConfigDialog(config.iface.mainWindow()) configdlg.exec_() if configdlg.user is not None: user = configdlg.user email = configdlg.email config.setConfigValue(config.GENERAL, config.USERNAME, user) config.setConfigValue(config.GENERAL, config.EMAIL, email) else: return repo.config(geogig.USER_NAME, user, True) repo.config(geogig.USER_EMAIL, email, True) repo.commit(dlg.getMessage())
def editingStopped(self): if not isTracked(self.layer): _logger.debug("Editing stopped for layer '%s'. Layer is not tracked" % self.layer.name()) return if not self.hasChanges: _logger.debug("Editing stopped for layer '%s' without changes" % self.layer.name()) return if self.rollback: self.rollback = False return _logger.debug("Editing stopped for layer '%s'." % self.layer.name()) trackedlayer = getTrackingInfo(self.layer) insync = trackedlayer.insync setInSync(self.layer, False) self.ensureUniqueIDs() self.hasChanges = False try: repo = createRepository(trackedlayer.repoFolder(), False) except Py4JConnectionException: _logger.debug("Could not connect to repository for updating layer '%s'" % self.layer.name()) QtGui.QApplication.restoreOverrideCursor() dlg = GatewayNotAvailableWhileEditingDialog(iface.mainWindow()) dlg.exec_() setInSync(self.layer, False) return QtGui.QApplication.restoreOverrideCursor() if insync and self.canUseSmartUpdate: try: _logger.debug("Trying smart update on layer %s and repo %s" % (self.layer.source(), trackedlayer.reponame)) self.doSmartUpdate(trackedlayer.layername, repo) except Exception, e: _logger.error(traceback.format_exc()) _logger.debug("Smart update failed. Using import update instead") self.doUpdateLayer(trackedlayer.layername, repo)