def update(self): """merge modifiactions since last update into working copy""" print "update" if self.unresolved_conflicts(): return layer = QgsMapLayerRegistry.instance().mapLayer(self.current_layers[0]) uri = QgsDataSourceURI(layer.source()) late_by = 0 if layer.providerType() == "spatialite": late_by = versioning_base.late(uri.database(), self.pg_conn_info()) else: # postgres late_by = versioning_base.pg_late(self.pg_conn_info(), uri.schema()) if late_by: if layer.providerType() == "spatialite": versioning_base.update(uri.database(), self.pg_conn_info()) rev = versioning_base.revision(uri.database()) else: # postgres versioning_base.pg_update(uri.connectionInfo(), uri.schema()) rev = versioning_base.pg_revision(uri.connectionInfo(), uri.schema()) # Force refresh of map if self.iface.mapCanvas().isCachingEnabled(): self.iface.mapCanvas().clearCache() self.iface.mapCanvas().refresh() else: self.iface.mapCanvas().refresh() # Force refresh of rev number in menu text if layer.providerType() == "spatialite": self.info.setText(uri.database().split("/")[-1] + ' <b>working rev</b>=' + str(rev)) else: self.info.setText(uri.database() + ' <b>working rev</b>=' + str(rev)) if not self.unresolved_conflicts(): QMessageBox.warning( self.iface.mainWindow(), "Warning", "Working copy was late by " + str(late_by) + " revision(s).\n" "Now up to date with remote revision " + str(rev - 1) + ".") else: if layer.providerType() == "spatialite": rev = versioning_base.revision(uri.database()) else: # postgres rev = versioning_base.pg_revision(uri.connectionInfo(), uri.schema()) QMessageBox.information( self.iface.mainWindow(), "Info", "Working " "copy already up to date with remote revision " + str(rev - 1) + ".")
def update(self): """merge modifiactions since last update into working copy""" print "update" if self.unresolved_conflicts(): return layer = QgsMapLayerRegistry.instance().mapLayer( self.current_layers[0] ) uri = QgsDataSourceURI(layer.source()) late_by = 0 if layer.providerType() == "spatialite": late_by = versioning_base.late( uri.database(), self.pg_conn_info() ) else: # postgres late_by = versioning_base.pg_late( self.pg_conn_info(), uri.schema() ) if late_by: if layer.providerType() == "spatialite": versioning_base.update( uri.database(), self.pg_conn_info() ) rev = versioning_base.revision( uri.database() ) else: # postgres versioning_base.pg_update( uri.connectionInfo(), uri.schema() ) rev = versioning_base.pg_revision( uri.connectionInfo(), uri.schema() ) # Force refresh of map if self.iface.mapCanvas().isCachingEnabled(): self.iface.mapCanvas().clearCache() self.iface.mapCanvas().refresh() else: self.iface.mapCanvas().refresh() # Force refresh of rev number in menu text if layer.providerType() == "spatialite": self.info.setText( uri.database().split("/")[-1] +' <b>working rev</b>='+str(rev)) else: self.info.setText( uri.database() +' <b>working rev</b>='+str(rev)) if not self.unresolved_conflicts(): QMessageBox.warning( self.iface.mainWindow(), "Warning", "Working copy was late by "+str(late_by)+" revision(s).\n" "Now up to date with remote revision "+str(rev-1)+".") else: if layer.providerType() == "spatialite": rev = versioning_base.revision( uri.database() ) else: # postgres rev = versioning_base.pg_revision( uri.connectionInfo(), uri.schema() ) QMessageBox.information( self.iface.mainWindow(), "Info","Working " "copy already up to date with remote revision "+str(rev-1)+".")
def update(self): """merge modifiactions since last update into working copy""" print "update" if self.unresolved_conflicts(): return layer = QgsMapLayerRegistry.instance().mapLayer(self.current_layers[0]) uri = QgsDataSourceURI(layer.source()) if layer.providerType() == "spatialite": versioning_base.update(uri.database(), self.pg_conn_info()) rev = versioning_base.revision(uri.database()) else: # postgres versioning_base.pg_update(uri.connectionInfo(), uri.schema()) rev = versioning_base.pg_revision(uri.connectionInfo(), uri.schema()) if not self.unresolved_conflicts(): QMessageBox.information( self.iface.mainWindow(), "Notice", "Your are up to date with revision " + str(rev - 1) + "." )
def update(self): """merge modifiactions since last update into working copy""" print "update" if self.unresolved_conflicts(): return layer = QgsMapLayerRegistry.instance().mapLayer(self.current_layers[0]) uri = QgsDataSourceURI(layer.source()) if layer.providerType() == "spatialite": versioning_base.update(uri.database(), self.pg_conn_info()) rev = versioning_base.revision(uri.database()) else: # postgres versioning_base.pg_update(uri.connectionInfo(), uri.schema()) rev = versioning_base.pg_revision(uri.connectionInfo(), uri.schema()) if not self.unresolved_conflicts(): QMessageBox.information( self.iface.mainWindow(), "Notice", "Your are up to date with revision " + str(rev - 1) + ".")
# try the update wc = [tmp_dir+"/issue357_wc0.sqlite", tmp_dir+"/issue357_wc1.sqlite"] for f in wc: if os.path.isfile(f): os.remove(f) versioning_base.checkout("dbname=epanet_test_db", ['epanet_trunk_rev_head.junctions', 'epanet_trunk_rev_head.pipes'], f) scur = [] for f in wc: scur.append(versioning_base.Db( dbapi2.connect( f ) )) scur[0].execute("INSERT INTO pipes_view(id, start_node, end_node, GEOMETRY) VALUES ('2','1','2',GeomFromText('LINESTRING(1 1,0 1)',2154))") scur[0].execute("INSERT INTO pipes_view(id, start_node, end_node, GEOMETRY) VALUES ('3','1','2',GeomFromText('LINESTRING(1 -1,0 1)',2154))") scur[0].commit() versioning_base.commit( wc[0], 'commit 1 wc0', "dbname=epanet_test_db") versioning_base.update( wc[1], "dbname=epanet_test_db" ) scur[0].execute("UPDATE pipes_view SET length = 1") scur[0].commit() scur[1].execute("UPDATE pipes_view SET length = 2") scur[1].execute("UPDATE pipes_view SET length = 3") scur[1].commit() versioning_base.commit( wc[0], "commit 2 wc0", "dbname=epanet_test_db" ) scur[0].execute("SELECT OGC_FID,length,trunk_rev_begin,trunk_rev_end,trunk_parent,trunk_child FROM pipes") print '################' for r in scur[0].fetchall(): print r scur[0].execute("UPDATE pipes_view SET length = 2") scur[0].execute("DELETE FROM pipes_view WHERE OGC_FID = 6")
#!/usr/bin/python import versioning_base from pyspatialite import dbapi2 import psycopg2 import os import shutil test_data_dir = os.path.dirname(os.path.realpath(__file__)) tmp_dir = "/tmp" # create the test database os.system("dropdb epanet_test_db") os.system("createdb epanet_test_db") os.system("psql epanet_test_db -c 'CREATE EXTENSION postgis'") os.system("psql epanet_test_db -f " + test_data_dir + "/issue287_pg_dump.sql") # try the update shutil.copyfile(test_data_dir + "/issue287_wc.sqlite", tmp_dir + "/issue287_wc.sqlite") versioning_base.update(tmp_dir + "/issue287_wc.sqlite", "dbname=epanet_test_db") versioning_base.commit(tmp_dir + "/issue287_wc.sqlite", "test message", "dbname=epanet_test_db")
['epanet_trunk_rev_head.junctions', 'epanet_trunk_rev_head.pipes'], f) scur = [] for f in wc: scur.append(versioning_base.Db(dbapi2.connect(f))) scur[0].execute( "INSERT INTO pipes_view(id, start_node, end_node, GEOMETRY) VALUES ('2','1','2',GeomFromText('LINESTRING(1 1,0 1)',2154))" ) scur[0].execute( "INSERT INTO pipes_view(id, start_node, end_node, GEOMETRY) VALUES ('3','1','2',GeomFromText('LINESTRING(1 -1,0 1)',2154))" ) scur[0].commit() versioning_base.commit(wc[0], 'commit 1 wc0', "dbname=epanet_test_db") versioning_base.update(wc[1], "dbname=epanet_test_db") scur[0].execute("UPDATE pipes_view SET length = 1") scur[0].commit() scur[1].execute("UPDATE pipes_view SET length = 2") scur[1].execute("UPDATE pipes_view SET length = 3") scur[1].commit() versioning_base.commit(wc[0], "commit 2 wc0", "dbname=epanet_test_db") scur[0].execute( "SELECT OGC_FID,length,trunk_rev_begin,trunk_rev_end,trunk_parent,trunk_child FROM pipes" ) print '################' for r in scur[0].fetchall(): print r