def accept(self): def updatefeautrefields(feature): for key, value in values.iteritems(): try: feature[key] = value except KeyError: continue return feature if not self.featureform.allpassing: self.bar.pushMessage("Missing fields", "Some fields are still required.", QgsMessageBar.WARNING, duration=2) return if not self.featureform: return if not self.featureform.accept(): return layer = self.featureform.form.QGISLayer before = QgsFeature(self.feature) before.setFields(self.fields, initAttributes=False) values, savedvalues = self.featureform.getvalues() after = QgsFeature(self.feature) after.setFields(self.fields, initAttributes=False) after = updatefeautrefields(after) layer.startEditing() if after.id() > 0: if self.project.historyenabled(layer): # Mark the old one as history before['status'] = 'H' after['status'] = 'C' after['dateedited'] = QDateTime.currentDateTime() after['editedby'] = getpass.getuser() layer.addFeature(after) layer.updateFeature(before) else: layer.updateFeature(after) else: layer.addFeature(after) featureform.savevalues(layer, savedvalues) saved = layer.commitChanges() if not saved: self.failedsave.emit(layer.commitErrors()) map(error, layer.commitErrors()) else: self.featureform.featuresaved(after, values) self.featuresaved.emit() self.accepted.emit() self.featureform = None
def accept(self): if not self.featureform.allpassing: self.bar.pushMessage("Missing fields", "Some fields are still required.", QgsMessageBar.WARNING, duration=2) return if not self.featureform: return if not self.featureform.accept(): return layer = self.featureform.form.QGISLayer before, after, savedvalues = self.featureform.unbind() layer.startEditing() if after.id() > 0: if self.project.historyenabled(layer): # Mark the old one as history before['status'] = 'H' after['status'] = 'C' after['dateedited'] = QDateTime.currentDateTime() after['editedby'] = getpass.getuser() layer.addFeature(after) layer.updateFeature(before) else: layer.updateFeature(after) else: layer.addFeature(after) featureform.savevalues(layer, savedvalues) saved = layer.commitChanges() if not saved: self.failedsave.emit(layer.commitErrors()) map(error, layer.commitErrors()) else: self.featuresaved.emit() self.accepted.emit() self.finished.emit() self.featureform = None