예제 #1
0
 def add():
     if self.status == self.NOT_IN_SYNC:
         msgBox = QMessageBox()
         msgBox.setText(
             "This layer was exported already at a different version.\nWhich version would you like to add to your QGIS project?"
         )
         msgBox.addButton(QPushButton('Use exported version'),
                          QMessageBox.YesRole)
         msgBox.addButton(QPushButton('Use version from this branch'),
                          QMessageBox.NoRole)
         msgBox.addButton(QPushButton('Cancel'), QMessageBox.RejectRole)
         QApplication.restoreOverrideCursor()
         ret = msgBox.exec_()
         if ret == 0:
             checkoutLayer(self.repo, self.layer, None,
                           self.currentCommitId)
         elif ret == 1:
             try:
                 layer = checkoutLayer(self.repo, self.layer, None,
                                       branchCommitId)
                 repoWatcher.layerUpdated.emit(layer)
             except HasLocalChangesError:
                 QMessageBox.warning(
                     config.iface.mainWindow(), 'Cannot change version',
                     "There are local changes that would be overwritten.\n"
                     "Revert them before changing version.",
                     QMessageBox.Ok)
     else:
         checkoutLayer(self.repo, self.layer, None, branchCommitId)
 def add(self):
     if self.status == self.NOT_IN_SYNC:
         msgBox = QMessageBox()
         msgBox.setWindowTitle("Layer was already exported")
         msgBox.setText(
             "This layer was exported already at a different commit.\n"
             "Which one would you like to add to your QGIS project?")
         msgBox.addButton(QPushButton('Use previously exported commit'),
                          QMessageBox.YesRole)
         msgBox.addButton(QPushButton('Use latest commit from this branch'),
                          QMessageBox.NoRole)
         msgBox.addButton(QPushButton('Cancel'), QMessageBox.RejectRole)
         QApplication.restoreOverrideCursor()
         ret = msgBox.exec_()
         if ret == 0:
             checkoutLayer(self.repo, self.layer, None,
                           self.currentCommitId)
         elif ret == 1:
             try:
                 layer = checkoutLayer(self.repo, self.layer, None,
                                       self.branchCommitId)
                 repoWatcher.layerUpdated.emit(layer)
             except HasLocalChangesError:
                 QMessageBox.warning(
                     config.iface.mainWindow(), 'Cannot export this commit',
                     "The layer has local changes that would be overwritten.\n"
                     "Either sync layer with branch or revert local changes "
                     "before changing commit", QMessageBox.Ok)
     else:
         checkoutLayer(self.repo, self.layer, None, self.branchCommitId)
def _exportAndEditLayer():
    layer = checkoutLayer(_lastRepo, "buildings", None)
    idx = layer.dataProvider().fieldNameIndex("DESCRIPTIO")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, "COMMERCIAL")
        layer.deleteFeatures([features[1].id()])
def _exportAndEditLayer():
    layer = checkoutLayer(_lastRepo, "buildings", None)
    idx = layer.dataProvider().fieldNameIndex("DESCRIPTIO")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, "COMMERCIAL")
        layer.deleteFeatures([features[1].id()])
def _exportAndChangeToFirstVersion():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    applyLayerChanges(tests._lastRepo, layer, tests._lastRepo.HEAD, commitid)
    updateInfoActions(layer)
    layer.reload()
    layer.triggerRepaint()
예제 #6
0
def _exportAndChangeToFirstVersion():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    applyLayerChanges(tests._lastRepo, layer, tests._lastRepo.HEAD, commitid)
    updateInfoActions(layer)
    layer.reload()
    layer.triggerRepaint()
예제 #7
0
def _exportAndEditLayer():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, 1000)
        layer.deleteFeatures([features[1].id()])
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
    return layer
def _exportAndEditLayer():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, 1000)
        layer.deleteFeatures([features[1].id()])
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
    return layer
def _exportChangetoFirstVersionAndEditLayer():
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    layer = checkoutLayer(tests._lastRepo, "points", None, commitid)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, 1000)
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
예제 #10
0
def _exportAndCreateConflictWithRemoveAndModify():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.deleteFeatures([features[0].id()])
    filename = tempFilename("gpkg")
    tests._lastRepo.checkoutlayer(filename, "points")
    layer2 = loadLayerNoCrsDialog(filename, "points2", "ogr")
    features2 = list(layer2.getFeatures())
    with edit(layer2):
        layer2.changeAttributeValue(features[0].id(), idx, 1000)
    _, _, conflicts, _ = tests._lastRepo.importgeopkg(layer2, "master", "message", "me", "*****@*****.**", True)
def _exportAndCreateConflictWithRemoveAndModify():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.deleteFeatures([features[0].id()])
    filename = tempFilename("gpkg")
    tests._lastRepo.checkoutlayer(filename, "points")
    layer2 = loadLayerNoCrsDialog(filename, "points2", "ogr")
    features2 = list(layer2.getFeatures())
    with edit(layer2):
        layer2.changeAttributeValue(features[0].id(), idx, 1000)
    _, _, conflicts, _ = tests._lastRepo.importgeopkg(layer2, "master", "message", "me", "*****@*****.**", True)
예제 #12
0
def _exportChangetoFirstVersionAndEditLayer():
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    layer = checkoutLayer(tests._lastRepo, "points", None, commitid)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeAttributeValue(features[0].id(), idx, 1000)
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
예제 #13
0
def _exportAndAddFeatureToLayer():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    applyLayerChanges(tests._lastRepo, layer, tests._lastRepo.HEAD, commitid)
    updateInfoActions(layer)
    with edit(layer):
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
    layer.reload()
    layer.triggerRepaint()
def _exportAndAddFeatureToLayer():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    log = tests._lastRepo.log()
    assert len(log) == 3
    commitid = log[-1].commitid
    applyLayerChanges(tests._lastRepo, layer, tests._lastRepo.HEAD, commitid)
    updateInfoActions(layer)
    with edit(layer):
        feat = QgsFeature(layer.pendingFields())
        feat.setAttributes(["5", 5])
        feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.addFeatures([feat])
    layer.reload()
    layer.triggerRepaint()
def _exportAndCreateConflictWithNulls():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeGeometry(features[0].id(), QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.changeAttributeValue(features[0].id(), idx, None)
    filename = tempFilename("gpkg")
    tests._lastRepo.checkoutlayer(filename, "points")
    layer2 = loadLayerNoCrsDialog(filename, "points2", "ogr")
    features2 = list(layer2.getFeatures())
    with edit(layer2):
        layer2.changeGeometry(features[0].id(), QgsGeometry.fromPoint(QgsPoint(124, 457)))
        layer2.changeAttributeValue(features2[0].id(), idx, None)
    _, _, conflicts, _ = tests._lastRepo.importgeopkg(layer2, "master", "message", "me", "*****@*****.**", True)
 def add(self):
     if self.status == self.NOT_IN_SYNC:
         msgBox = QMessageBox()
         msgBox.setWindowTitle("Layer was already exported")
         msgBox.setText("This layer was exported already at a different commit.\n"
                        "Which one would you like to add to your QGIS project?")
         msgBox.addButton(QPushButton('Use previously exported commit'), QMessageBox.YesRole)
         msgBox.addButton(QPushButton('Use latest commit from this branch'), QMessageBox.NoRole)
         msgBox.addButton(QPushButton('Cancel'), QMessageBox.RejectRole)
         QApplication.restoreOverrideCursor()
         ret = msgBox.exec_()
         if ret == 0:
             checkoutLayer(self.repo, self.layer, None, self.currentCommitId)
         elif ret == 1:
             try:
                 layer = checkoutLayer(self.repo, self.layer, None, self.branchCommitId)
                 repoWatcher.layerUpdated.emit(layer)
             except HasLocalChangesError:
                 QMessageBox.warning(config.iface.mainWindow(), 'Cannot export this commit',
                                     "The layer has local changes that would be overwritten.\n"
                                     "Either sync layer with branch or revert local changes "
                                     "before changing commit",QMessageBox.Ok)
     else:
         checkoutLayer(self.repo, self.layer, None, self.branchCommitId)
예제 #17
0
def _exportAndCreateConflictWithNulls():
    layer = checkoutLayer(tests._lastRepo, "points", None)
    idx = layer.dataProvider().fieldNameIndex("n")
    features = list(layer.getFeatures())
    with edit(layer):
        layer.changeGeometry(features[0].id(), QgsGeometry.fromPoint(QgsPoint(123, 456)))
        layer.changeAttributeValue(features[0].id(), idx, None)
    filename = tempFilename("gpkg")
    tests._lastRepo.checkoutlayer(filename, "points")
    layer2 = loadLayerNoCrsDialog(filename, "points2", "ogr")
    features2 = list(layer2.getFeatures())
    with edit(layer2):
        layer2.changeGeometry(features[0].id(), QgsGeometry.fromPoint(QgsPoint(124, 457)))
        layer2.changeAttributeValue(features2[0].id(), idx, None)
    _, _, conflicts, _ = tests._lastRepo.importgeopkg(layer2, "master", "message", "me", "*****@*****.**", True)
예제 #18
0
    def exportVersion(self, repo, layer, commitId):
        trackedlayer = getTrackingInfoForGeogigLayer(repo.url, layer)
        if trackedlayer:
            if os.path.exists(trackedlayer.geopkg):
                try:
                    con = sqlite3.connect(trackedlayer.geopkg)
                    cursor = con.cursor()
                    cursor.execute(
                        "SELECT commit_id FROM geogig_audited_tables WHERE table_name='%s';"
                        % layer)
                    currentCommitId = cursor.fetchone()[0]
                    cursor.close()
                    con.close()
                    if commitId != currentCommitId:
                        msgBox = QMessageBox()
                        msgBox.setWindowTitle("Layer was already exported")
                        msgBox.setText(
                            "This layer was exported already at a different commit.\n"
                            "Which one would you like to add to your QGIS project?"
                        )
                        msgBox.addButton(
                            QPushButton('Use previously exported commit'),
                            QMessageBox.YesRole)
                        msgBox.addButton(
                            QPushButton('Use latest commit from this branch'),
                            QMessageBox.NoRole)
                        msgBox.addButton(QPushButton('Cancel'),
                                         QMessageBox.RejectRole)
                        QApplication.restoreOverrideCursor()
                        ret = msgBox.exec_()
                        if ret == 0:
                            checkoutLayer(repo, layer, None, currentCommitId)
                        elif ret == 1:
                            try:
                                layer = checkoutLayer(repo, layer, None,
                                                      commitId)
                                repoWatcher.layerUpdated.emit(layer)
                            except HasLocalChangesError:
                                QMessageBox.warning(
                                    config.iface.mainWindow(),
                                    'Cannot export this commit',
                                    "The layer has local changes that would be overwritten.\n"
                                    "Either sync layer with branch or revert local changes "
                                    "before changing commit", QMessageBox.Ok)
                except:
                    checkoutLayer(repo, layer, None, currentCommitId)

        else:
            checkoutLayer(repo, layer, None, commitId)
    def exportVersion(self, repo, layer, commitId):
        trackedlayer = getTrackingInfoForGeogigLayer(repo.url, layer)
        if trackedlayer:
            if os.path.exists(trackedlayer.geopkg):
                try:
                    con = sqlite3.connect(trackedlayer.geopkg)
                    cursor = con.cursor()
                    cursor.execute("SELECT commit_id FROM geogig_audited_tables WHERE table_name='%s';" % layer)
                    currentCommitId = cursor.fetchone()[0]
                    cursor.close()
                    con.close()
                    if commitId != currentCommitId:
                        msgBox = QMessageBox()
                        msgBox.setWindowTitle("Layer was already exported")
                        msgBox.setText("This layer was exported already at a different commit.\n"
                                       "Which one would you like to add to your QGIS project?")
                        msgBox.addButton(QPushButton('Use previously exported commit'), QMessageBox.YesRole)
                        msgBox.addButton(QPushButton('Use latest commit from this branch'), QMessageBox.NoRole)
                        msgBox.addButton(QPushButton('Cancel'), QMessageBox.RejectRole)
                        QApplication.restoreOverrideCursor()
                        ret = msgBox.exec_()
                        if ret == 0:
                            checkoutLayer(repo, layer, None, currentCommitId)
                        elif ret == 1:
                            try:
                                layer = checkoutLayer(repo, layer, None, commitId)
                                repoWatcher.layerUpdated.emit(layer)
                            except HasLocalChangesError:
                                QMessageBox.warning(config.iface.mainWindow(), 'Cannot export this commit',
                                                    "The layer has local changes that would be overwritten.\n"
                                                    "Either sync layer with branch or revert local changes "
                                                    "before changing commit",QMessageBox.Ok)
                except:
                    checkoutLayer(repo, layer, None, currentCommitId)

        else:
            checkoutLayer(repo, layer, None, commitId)
예제 #20
0
def _exportLayer():
    checkoutLayer(tests._lastRepo, "points", None)
예제 #21
0
 def _checkoutLayer(self, layername, bbox):
     checkoutLayer(self.currentRepo, layername, bbox)
def _exportLayer():
    checkoutLayer(tests._lastRepo, "points", None)