diff --git a/CenRa_FLUX/flux_editor.py b/CenRa_FLUX/flux_editor.py index af7149d..872506e 100644 --- a/CenRa_FLUX/flux_editor.py +++ b/CenRa_FLUX/flux_editor.py @@ -160,6 +160,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS): def initialisation_flux(self): if dbtype == sigdb: + # self.toolButton.setEnabled(1) if self.comboBox.currentText() == 'toutes les catégories': custom_list=schemaname_list elif self.comboBox.currentText() == 'travaux': @@ -184,7 +185,11 @@ class Flux_Editor(QDialog, EDITOR_CLASS): if dbtype == sigdb: type_val = str(value[0])[1:3] schema_name=str(value[0])[4:] - table_name=str(value[1]) + table_name=str(value[1][len(value[0])+1:]) + if value[0] == value[1][:len(value[0])]: + table_name=str(value[1][len(value[0])+1:]) + else: + table_name=str(value[1]) else: type_val = '' schema_name=str(value[0]) @@ -192,7 +197,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS): if type_val == 'fo': type_val=str(value[0])[1:5] schema_name=str(value[0])[6:] - table_name=str(value[1]) + if value[0] == value[1][:len(value[0])]: + table_name=str(value[1][len(value[0])+1:]) + else: + table_name=str(value[1]) elif type_val == 'ra': type_val='travaux' schema_name=str(value[0]) @@ -285,7 +293,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS): schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text() if code == 'travaux' or code == 'agregation': schema = self.tableWidget_2.item(row,1).text() - table = self.tableWidget_2.item(row,2).text()#.split("?", 1)[0] + table = self.tableWidget_2.item(row,2).text() + else: + table = self.tableWidget_2.item(row,2).text() + table = schema+'_'+table if dbtype == refdb: # code = self.tableWidget_2.item(row,0).text() schema = self.tableWidget_2.item(row,1).text() @@ -302,7 +313,6 @@ class Flux_Editor(QDialog, EDITOR_CLASS): geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a' cur.execute(geom_type) list_typegeom = cur.fetchall() - print(len(list_typegeom)) if len(list_typegeom) > 1: for typegeom in list_typegeom: if typegeom[0] == 'MultiPolygon': @@ -329,6 +339,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS): def combobox_custom(self): if dbtype == sigdb: + self.toolButton.setEnabled(1) self.comboBox.clear() self.comboBox.addItem("toutes les catégories") self.comboBox.addItem('00') @@ -341,6 +352,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS): self.comboBox.addItem('travaux') self.comboBox.addItem('form') if dbtype == refdb: + self.toolButton.setEnabled(0) custom_list=schemaname_distinct cur.execute(custom_list) list_schema = cur.fetchall() @@ -348,8 +360,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS): self.comboBox.addItem("toutes les catégories") for baxval in list_schema: self.comboBox.addItem(baxval[0]) - def filtre_dynamique(self, filter_text): + def filtre_dynamique(self, filter_text): + if filter_text.find(' ') >= 0: + filter_text=filter_text.replace(" ","_") for i in range(self.tableWidget.rowCount()): for j in range(self.tableWidget.columnCount()): item = self.tableWidget.item(i, j) @@ -359,19 +373,48 @@ class Flux_Editor(QDialog, EDITOR_CLASS): break def getCanevas(self): - print(iface.mapCanvas().extent()) - # SQL_EXTENT = '' - # SQL_GEOM = "SELECT f_table_schema,f_table_name FROM geometry_columns WHERE f_geometry_column = 'geom'" - # cur.execute(SQL_GEOM) - # TableHaveGeom = cur.fetchall() - # for e in TableHaveGeom: - # SchemaName = e[0] - # TableName = e[1] - # if SchemaName[0:5] != '_form': - # if SchemaName[0:4] == '_01_' or SchemaName[0:4] == '_42_' or SchemaName[0:4] == '_69_': - # SQL_EXTENT=SQL_EXTENT+"SELECT st_envelope(st_union(geom)),'"+TableName+"' AS table_name FROM "+'"'+SchemaName+'"."'+TableName+'"'+' UNION ALL ' - # SQL_EXTENT = SQL_EXTENT[:-11] - # print(SQL_EXTENT) + poly = iface.mapCanvas().extent() + geom = (str(poly.xMinimum())+','+str(poly.yMinimum())+','+str(poly.xMaximum())+','+str(poly.yMaximum())) + + SQL_GEOM_CONTOUR = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_contour" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_EU_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_eu_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_LIGNE = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_ligne" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_POINT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_point" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_POLY = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_poly" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + + cur.execute(SQL_GEOM_CONTOUR) + TableContour = cur.fetchall() + cur.execute(SQL_GEOM_HABITAT) + TableHabitat = cur.fetchall() + cur.execute(SQL_GEOM_EU_HABITAT) + TableEuHabitat = cur.fetchall() + cur.execute(SQL_GEOM_TRAVAUX_PREVUS_LIGNE) + TableTravauxLigne = cur.fetchall() + cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POINT) + TableTravauxPoint = cur.fetchall() + cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY) + TableTravauxPoly = cur.fetchall() + + TableHaveGeom = sorted(TableContour+TableHabitat+TableEuHabitat+TableTravauxLigne+TableTravauxPoint+TableTravauxPoly) + row_count = 0 + self.tableWidget.setRowCount(0) + for e in TableHaveGeom: + if e[0][1:3] != 'fo': + DepName = QTableWidgetItem(e[0][1:3]) + SchemaName = QTableWidgetItem(e[0][4:]) + else: + DepName = QTableWidgetItem('form') + SchemaName = QTableWidgetItem(e[0][6:]) + TableName = QTableWidgetItem(e[1][len(e[0])+1:]) + self.tableWidget.insertRow(row_count) + self.tableWidget.setItem(row_count,0,DepName) + self.tableWidget.setItem(row_count,1,SchemaName) + self.tableWidget.setItem(row_count,2,TableName) + row_count = row_count+1 + if self.lineEdit.text() != 'Recherche par mots-clés': + self.filtre_dynamique(self.lineEdit.text()) + def popup(self): self.dialog = Popup() # +++ - self diff --git a/CenRa_FLUX/metadata.txt b/CenRa_FLUX/metadata.txt index 0f65152..d42c4ca 100644 --- a/CenRa_FLUX/metadata.txt +++ b/CenRa_FLUX/metadata.txt @@ -6,7 +6,7 @@ name=CenRa_FLUX qgisMinimumVersion=3.0 description=Permet d'ouvrire une table dans la base PostGis -version=2.2 +version=2.3 author=Conservatoire d'Espaces Naturels de Rhône-Alpes email=si_besoin@cen-rhonealpes.fr @@ -32,7 +32,7 @@ icon=icon.png # experimental flag experimental=False -changelog=