)""")

pcur.execute("""
    INSERT INTO epanet.pipes
        (id, start_node, end_node, length, diameter, geometry) 
        VALUES
        ('0','0','1',1,2,ST_GeometryFromText('LINESTRING(1 0,0 1)',2154))""")

pcur.commit()
pcur.close()

versioning_base.historize( pg_conn_info, 'epanet' )

failed = False
try:
    versioning_base.add_branch( pg_conn_info, 'epanet', 'trunk' )
except: 
    failed = True
assert( failed )

failed = False
try:
    versioning_base.add_branch( pg_conn_info, 'epanet', 'mybranch', 'message', 'toto' )
except:
    failed = True
assert( failed )

versioning_base.add_branch( pg_conn_info, 'epanet', 'mybranch', 'test msg' )


pcur = versioning_base.Db(psycopg2.connect(pg_conn_info))
Beispiel #2
0
    def branch(self):
        """create branch and import layers"""
        layer = QgsMapLayerRegistry.instance().mapLayer(
                self.current_layers[0] )
        uri = QgsDataSourceURI(layer.source())
        mtch = re.match(r'(.+)_([^_]+)_rev_(head|\d+)', uri.schema())
        schema = mtch.group(1)
        base_branch = mtch.group(2)
        base_rev = mtch.group(3)
        assert(schema)
        dlg = QDialog()
        dlg.setWindowTitle('Enter branch name')
        layout = QVBoxLayout(dlg)
        button_box = QDialogButtonBox(dlg)
        button_box.setStandardButtons(
            QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
        button_box.accepted.connect(dlg.accept)
        button_box.rejected.connect(dlg.reject)

        line_edit = QLineEdit( dlg )
        layout.addWidget( line_edit )
        layout.addWidget( button_box )
        if not dlg.exec_() :
            return
        branch = line_edit.text()

        if not branch:
            print 'aborted'
            return

        pcur = versioning_base.Db( psycopg2.connect(self.pg_conn_info()) )
        pcur.execute("SELECT * FROM "+schema+".revisions "
            "WHERE branch = '"+branch+"'")
        if pcur.fetchone():
            pcur.close()
            QMessageBox.warning( self.iface.mainWindow(), "Warning",
                    "Branch "+branch+' already exists.')
            return
        pcur.close()

        # get the commit message
        # get rid of the combobox asking for the pg username of committer
        self.q_commit_msg_dlg.pg_users_combobox.setVisible(False)
        self.q_commit_msg_dlg.pg_username_label.setVisible(False)
        if not self.q_commit_msg_dlg.exec_():
            return
        commit_msg = self.q_commit_msg_dlg.commitMessage.document().toPlainText()
        if not commit_msg:
            QMessageBox.warning(self.iface.mainWindow(), "Warning",
                "No commit message, aborting commit")
            print "aborted"
            return
        versioning_base.add_branch( uri.connectionInfo(),
                schema, branch, commit_msg, base_branch, base_rev )
        grp_name = branch+' revision head'
        grp_idx = self.iface.legendInterface().addGroup( grp_name )
        for layer_id in reversed(self.current_layers):
            layer = QgsMapLayerRegistry.instance().mapLayer(layer_id)
            new_uri = QgsDataSourceURI(layer.source())
            new_uri.setDataSource(schema+'_'+branch+'_rev_head',
                    new_uri.table(),
                    new_uri.geometryColumn(),
                    new_uri.sql(),
                    new_uri.keyColumn())
            display_name = QgsMapLayerRegistry.instance().mapLayer(layer_id).name()

            new_layer = self.iface.addVectorLayer(new_uri.uri().replace('()',''),
                    display_name, 'postgres')
            self.iface.legendInterface().moveLayer( new_layer, grp_idx)
Beispiel #3
0
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+"/epanet_test_db_unversioned.sql")

versioning_base.historize("dbname=epanet_test_db","epanet")

# try the update
wc = tmp_dir+"/bug_in_branch_after_commit_wc.sqlite"
if os.path.isfile(wc): os.remove(wc) 
versioning_base.checkout("dbname=epanet_test_db", ['epanet_trunk_rev_head.junctions', 'epanet_trunk_rev_head.pipes'], wc)

scur = versioning_base.Db( dbapi2.connect( wc ) )

scur.execute("SELECT * FROM pipes")
scur.execute("UPDATE pipes_view SET length = 1 WHERE OGC_FID = 1")
scur.commit()

versioning_base.commit(wc,'test', "dbname=epanet_test_db" )

versioning_base.add_branch("dbname=epanet_test_db","epanet","mybranch","add 'branch")
Beispiel #4
0
    def branch(self):
        """create branch and import layers"""
        layer = QgsMapLayerRegistry.instance().mapLayer(self.current_layers[0])
        uri = QgsDataSourceURI(layer.source())
        mtch = re.match(r'(.+)_([^_]+)_rev_(head|\d+)', uri.schema())
        schema = mtch.group(1)
        base_branch = mtch.group(2)
        base_rev = mtch.group(3)
        assert (schema)
        dlg = QDialog()
        dlg.setWindowTitle('Enter branch name')
        layout = QVBoxLayout(dlg)
        button_box = QDialogButtonBox(dlg)
        button_box.setStandardButtons(QDialogButtonBox.Cancel
                                      | QDialogButtonBox.Ok)
        button_box.accepted.connect(dlg.accept)
        button_box.rejected.connect(dlg.reject)

        line_edit = QLineEdit(dlg)
        layout.addWidget(line_edit)
        layout.addWidget(button_box)
        if not dlg.exec_():
            return
        branch = line_edit.text()

        if not branch:
            print 'aborted'
            return

        pcur = versioning_base.Db(psycopg2.connect(self.pg_conn_info()))
        pcur.execute("SELECT * FROM " + schema + ".revisions "
                     "WHERE branch = '" + branch + "'")
        if pcur.fetchone():
            pcur.close()
            QMessageBox.warning(self.iface.mainWindow(), "Warning",
                                "Branch " + branch + ' already exists.')
            return
        pcur.close()

        # get the commit message
        # get rid of the combobox asking for the pg username of committer
        self.q_commit_msg_dlg.pg_users_combobox.setVisible(False)
        self.q_commit_msg_dlg.pg_username_label.setVisible(False)
        if not self.q_commit_msg_dlg.exec_():
            return
        commit_msg = self.q_commit_msg_dlg.commitMessage.document(
        ).toPlainText()
        if not commit_msg:
            QMessageBox.warning(self.iface.mainWindow(), "Warning",
                                "No commit message, aborting commit")
            print "aborted"
            return
        versioning_base.add_branch(uri.connectionInfo(), schema, branch,
                                   commit_msg, base_branch, base_rev)
        grp_name = branch + ' revision head'
        grp_idx = self.iface.legendInterface().addGroup(grp_name)
        for layer_id in reversed(self.current_layers):
            layer = QgsMapLayerRegistry.instance().mapLayer(layer_id)
            new_uri = QgsDataSourceURI(layer.source())
            new_uri.setDataSource(schema + '_' + branch + '_rev_head',
                                  new_uri.table(), new_uri.geometryColumn(),
                                  new_uri.sql(), new_uri.keyColumn())
            display_name = QgsMapLayerRegistry.instance().mapLayer(
                layer_id).name()

            new_layer = self.iface.addVectorLayer(
                new_uri.uri().replace('()', ''), display_name, 'postgres')
            self.iface.legendInterface().moveLayer(new_layer, grp_idx)