Browse Source

资源数据重命名

zhaoxiaolin 6 months ago
parent
commit
ae52fb08d5

+ 3 - 0
python/plugins/ResourceTree/ui/PostgreSQL.py

@@ -179,6 +179,9 @@ class PostgreSQL:
         self.cur.execute("update t_vector_zyml set name = '{}' where bsm = '{}'".format(name, id))
         self.conn.commit()
 
+    def renameStorage(self, id, name):
+        self.cur.execute("update t_vector_storage set table_alias = '{}' where name = '{}'".format(name, id))
+        self.conn.commit()
 
     def getResourceAttr(self, tablename):
         self.cur.execute(

+ 17 - 0
python/plugins/ResourceTree/ui/ResourceTree.py

@@ -341,6 +341,8 @@ class Ui_ResourceDockWidget(object):
                         # self.actionAttributeTable.triggered.connect(self.actionAttrTableHandler)
                     self.actionLayerAttr = self.contexMenu.addAction('图层属性')
                     self.actionLayerAttr.triggered.connect(self.actionLayerAttrHandler)
+                    rename = self.contexMenu.addAction('重命名')
+                    rename.triggered.connect(self.actionRenameDataSource)
                     actionDelete = self.contexMenu.addAction('删除')
                     actionDelete.triggered.connect(self.actionDeleteTableHandler1)
             else:
@@ -555,6 +557,21 @@ class Ui_ResourceDockWidget(object):
             pg.renameZyml(id, newname)
             self.currentItem.setText(0, newname)
 
+    def actionRenameDataSource(self):
+        self.deleteMenu()
+        self.currentItem = self.treeWidget.currentItem()
+        id = self.getNodeId(self.currentItem)
+        oldname = self.getNodeName(self.currentItem)
+        newname, ok = QInputDialog.getText(QWidget(), '重命名', '请输入新名称', QLineEdit.Normal, oldname)
+        if ok and newname != oldname:
+            # **修改15: 使用优化的数据库连接**
+            pg = self.get_db_connection()
+            if pg is None:
+                QMessageBox.warning(None, "错误", "数据库连接失败")
+                return
+            pg.renameStorage(id, newname)
+            self.currentItem.setText(0, newname)
+
     def actionDeleteNodeHandler(self):
         self.deleteMenu()
         self.currentItem = self.treeWidget.currentItem()