Open QGIS project from psql

This commit is contained in:
2025-09-05 09:52:59 +02:00
parent 9ad5baa4ed
commit 2236123050
2 changed files with 87 additions and 0 deletions
+63
View File
@@ -119,16 +119,34 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
layout.addWidget(self.lineEdit)
self.viewer.hide()
self.DeBUG.addItem('')
self.DeBUG.addItem('Dev')
self.DeBUG.addItem('01')
self.DeBUG.addItem('0726')
self.DeBUG.addItem('4269')
self.DeBUG.currentIndexChanged.connect(self.SwitchDEBUG)
self.DeBUG.hide()
def raise_(self):
"""Run method that performs all the real work"""
self.bd_source()
def SwitchDEBUG(self):
try:
global user, mdp, host, port, dbname, sigdb, refdb
account = login_base(self.DeBUG.currentText())
user = account[0]
mdp = account[1]
host = account[2]
port = account[3]
dbname = account[4]
sigdb = account[5]
refdb = account[6]
self.bd_source()
except NameError:
print('Fails to switch DB for account')
def ModeDeBUG(self):
self.DeBUG.show()
@@ -212,6 +230,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.tableWidget_2.removeRow(self.tableWidget_2.currentRow())
def initialisation_flux(self):
print('run_time')
if dbtype == sigdb:
# self.toolButton.setEnabled(1)
if self.comboBox.currentText() == 'toutes les catégories':
@@ -246,6 +265,16 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
else:
RasterList = []
SQLprojects = """SELECT schemaname, tablename FROM pg_catalog.pg_tables WHERE tablename LIKE 'qgis_projects'"""
cur.execute(SQLprojects)
list_projects = cur.fetchall()
list_projects_qgis = []
if len(list_projects) <= 1:
for ProjectName in list_projects:
SQLProjectsQgis = """SELECT name, metadata, content FROM """ + '"' + ProjectName[0] + '"."' + ProjectName[1] + '"'
cur.execute(SQLProjectsQgis)
list_projects_qgis.append(cur.fetchall())
self.tableWidget.setRowCount(len(list_schema))
self.tableWidget.setColumnCount(4)
i = 0
@@ -296,6 +325,35 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
item = QTableWidgetItem(table_name)
self.tableWidget.setItem(i, 3, item)
i = i + 1
SQLprojects = """SELECT schemaname, tablename FROM pg_catalog.pg_tables WHERE tablename LIKE 'qgis_projects'"""
cur.execute(SQLprojects)
list_projects = cur.fetchall()
list_projects_qgis = []
if len(list_projects) <= 1:
for ProjectName in list_projects:
SQLProjectsQgis = """SELECT name, metadata, content FROM """ + '"' + ProjectName[0] + '"."' + ProjectName[1] + '"'
cur.execute(SQLProjectsQgis)
list_projects_qgis = cur.fetchall()
for Project in list_projects_qgis:
self.tableWidget.setRowCount(i + 1)
itemIcon = QTableWidgetItem()
icon = QIcon()
icon.addPixmap(QtGui.QPixmap(resources_path('icons', 'mIconQgis.svg')), QIcon.Mode(0), QIcon.State(1))
itemIcon.setIcon(icon)
self.tableWidget.setItem(i, 0, itemIcon)
item = QTableWidgetItem('QGIS')
self.tableWidget.setItem(i, 1, item)
item = QTableWidgetItem('projet')
self.tableWidget.setItem(i, 2, item)
item = QTableWidgetItem(Project[0])
self.tableWidget.setItem(i, 3, item)
i = i + 1
self.tableWidget.setColumnWidth(0, 20)
self.tableWidget.setColumnWidth(1, 70)
self.tableWidget.setColumnWidth(2, 300)
@@ -417,6 +475,11 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
uri.setSrid('2154')
layer = QgsRasterLayer(uri.uri(), table, "postgresraster")
QgsProject.instance().addMapLayer(layer)
elif code == 'QGIS':
schema = '_' + self.tableWidget_2.item(row, 2).text()
table = self.tableWidget_2.item(row, 3).text()
uri_project = 'postgresql://' + user + ':' + mdp + '@' + host + ':' + port + '?sslmode=disable&dbname=' + dbtype + "&schema=" + schema + '&project=' + table
QgsProject.instance().read(uri_project)
else:
uri.setDataSource(schema, table, "geom")
uri.setKeyColumn('gid')