You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
8.0 KiB
Python
238 lines
8.0 KiB
Python
2 years ago
|
import json
|
||
|
|
||
|
from PyQt5 import QtCore, QtWidgets
|
||
|
from PyQt5.QtCore import Qt
|
||
|
from PyQt5.QtGui import QCursor
|
||
|
from PyQt5.QtWidgets import QMenu
|
||
|
from PyQt5.QtWidgets import QTableView, QAbstractItemView, QVBoxLayout
|
||
|
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QSplitter, \
|
||
|
QPushButton
|
||
|
|
||
|
# from DcsUi.useCaseGroupManagement.PopupWindow import NewRules
|
||
|
from DcsUi.useCaseGroupManagement.SQLOperation import sqlOperation
|
||
|
from DcsUi.useCaseGroupManagement.dialogWin import newBuildWindow
|
||
|
from DcsUi.useCaseGroupManagement.dialogWindow import editUsecaseGroup
|
||
|
from DcsUi.userManagement.AccountManagement import AccountManagement
|
||
|
from procedure.manage_procedure.import_procedure import parse_procedure
|
||
|
from utils.ClientModels import UsecaseGroup
|
||
|
from xps.ExploreTable import myTableModel
|
||
|
from xps.searchEdit import SearchLineEdit
|
||
|
|
||
|
|
||
|
class useCaseDroupList(QWidget):
|
||
|
my_Signal = QtCore.pyqtSignal(str)
|
||
|
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
self.sec = 0
|
||
|
self.setWindowTitle('用例组列表')
|
||
|
self.resize(750, 600)
|
||
|
self.setFixedSize(self.width(), self.height())
|
||
|
|
||
|
self.dic = None
|
||
|
|
||
|
self.dicValue()
|
||
|
|
||
|
self.createTable()
|
||
|
|
||
|
def createTable(self):
|
||
|
h1 = QHBoxLayout()
|
||
|
self.label = QLabel("用例组列表")
|
||
|
h1.addWidget(self.label)
|
||
|
h1.addWidget(QSplitter())
|
||
|
self.btn = QPushButton('新建用例组')
|
||
|
self.btn.clicked.connect(self.newBuild)
|
||
|
h1.addWidget(self.btn)
|
||
|
self.line = SearchLineEdit(self)
|
||
|
self.line.searchButton.clicked.connect(self.search)
|
||
|
h1.addWidget(self.line)
|
||
|
|
||
|
# 设置表格属性
|
||
|
self.tableView = QTableView()
|
||
|
# 表格宽度的自适应调整
|
||
|
self.tableView.horizontalHeader().setStretchLastSection(True)
|
||
|
|
||
|
self.queryModel = myTableModel(self.dic['header'], self.dic['data'])
|
||
|
self.tableView.setModel(self.queryModel)
|
||
|
self.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
|
||
|
self.tableView.customContextMenuRequested.connect(self.showContextMenu)
|
||
|
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||
|
|
||
|
# 创建界面
|
||
|
mainLayout = QVBoxLayout(self)
|
||
|
mainLayout.addLayout(h1)
|
||
|
mainLayout.addWidget(self.tableView)
|
||
|
self.setLayout(mainLayout)
|
||
|
|
||
|
def showContextMenu(self): # 创建右键菜单
|
||
|
self.tableView.contextMenu = QMenu(self)
|
||
|
self.actionA = self.tableView.contextMenu.addAction('编辑')
|
||
|
self.tableView.contextMenu.popup(QCursor.pos()) # 1菜单显示的位置
|
||
|
self.actionA.triggered.connect(self.actionHandler1)
|
||
|
self.actionB = self.tableView.contextMenu.addAction('删除')
|
||
|
self.tableView.contextMenu.popup(QCursor.pos()) # 2菜单显示的位置
|
||
|
self.actionB.triggered.connect(self.actionHandler2)
|
||
|
self.tableView.contextMenu.show()
|
||
|
|
||
|
def dicValue(self):
|
||
|
pass
|
||
|
# self.dic = {
|
||
|
# 'header': ['编号', '名称', '用例组'],
|
||
|
# 'data': self.getTableValue()
|
||
|
# }
|
||
|
|
||
|
def getTableValue(self):
|
||
|
pass
|
||
|
# return sqlOperation.selectusecasegroup()
|
||
|
|
||
|
def newBuild(self):
|
||
|
pass
|
||
|
# self.newBuildUsecaseGroup = NewRules()
|
||
|
# self.newBuildUsecaseGroup.my_Signal.connect(self.active_exit)
|
||
|
# self.newBuildUsecaseGroup.show()
|
||
|
|
||
|
def active_exit(self):
|
||
|
pass
|
||
|
# self.queryModel.datas = self.getTableValue()
|
||
|
# self.queryModel.layoutChanged.emit()
|
||
|
# self.my_Signal.emit('')
|
||
|
|
||
|
def actionHandler1(self):
|
||
|
pass
|
||
|
# row = self.tableView.currentIndex().row()
|
||
|
# self.editWindow = editUsecaseGroup(self.queryModel.datas[row][1])
|
||
|
# self.editWindow.my_Signal.connect(self.active_exit)
|
||
|
# self.editWindow.show()
|
||
|
|
||
|
def actionHandler2(self):
|
||
|
pass
|
||
|
# row = self.tableView.currentIndex().row()
|
||
|
# usecase = UsecaseGroup.get(UsecaseGroup.name == self.queryModel.datas[row][1])
|
||
|
# UsecaseGroup.delete_obj(usecase.id)
|
||
|
# self.queryModel.remove_row(row)
|
||
|
# self.my_Signal.emit('')
|
||
|
|
||
|
def search(self):
|
||
|
pass
|
||
|
# text = self.line.text()
|
||
|
# self.queryModel.datas = sqlOperation.searchUsecaseGroup(text)
|
||
|
# self.queryModel.layoutChanged.emit()
|
||
|
|
||
|
|
||
|
class useCaseDroup(useCaseDroupList):
|
||
|
def __init__(self):
|
||
|
useCaseDroupList.__init__(self)
|
||
|
|
||
|
def dicValue(self):
|
||
|
self.dic = {
|
||
|
'header': ['编号', '名称', '用例组'],
|
||
|
'data': self.getTableValue()
|
||
|
}
|
||
|
|
||
|
def getTableValue(self):
|
||
|
return sqlOperation.selectusecasegroup()
|
||
|
|
||
|
def newBuild(self):
|
||
|
self.newBuildUsecaseGroup = newBuildWindow()
|
||
|
self.newBuildUsecaseGroup.my_Signal.connect(self.active_exit)
|
||
|
self.newBuildUsecaseGroup.show()
|
||
|
|
||
|
def active_exit(self):
|
||
|
self.queryModel.datas = self.getTableValue()
|
||
|
self.queryModel.layoutChanged.emit()
|
||
|
self.my_Signal.emit('')
|
||
|
|
||
|
def actionHandler1(self):
|
||
|
row = self.tableView.currentIndex().row()
|
||
|
self.editWindow = editUsecaseGroup(self.queryModel.datas[row][1])
|
||
|
self.editWindow.my_Signal.connect(self.active_exit)
|
||
|
self.editWindow.show()
|
||
|
|
||
|
def actionHandler2(self):
|
||
|
row = self.tableView.currentIndex().row()
|
||
|
usecase = UsecaseGroup.get(UsecaseGroup.name == self.queryModel.datas[row][1])
|
||
|
UsecaseGroup.delete_obj(usecase.id)
|
||
|
self.queryModel.remove_row(row)
|
||
|
self.my_Signal.emit('')
|
||
|
|
||
|
def search(self):
|
||
|
text = self.line.text()
|
||
|
self.queryModel.datas = sqlOperation.searchUsecaseGroup(text)
|
||
|
self.queryModel.layoutChanged.emit()
|
||
|
|
||
|
|
||
|
class proceduresList(useCaseDroupList):
|
||
|
my_Signal = QtCore.pyqtSignal(str)
|
||
|
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
self.setWindowTitle('规程列表')
|
||
|
self.label.setText('规程列表')
|
||
|
self.btn.setText('导入规程')
|
||
|
|
||
|
def showContextMenu(self): # 创建右键菜单
|
||
|
self.tableView.contextMenu = QMenu(self)
|
||
|
self.action = self.tableView.contextMenu.addAction('删除')
|
||
|
self.tableView.contextMenu.popup(QCursor.pos()) # 2菜单显示的位置
|
||
|
self.action.triggered.connect(self.actionHandler)
|
||
|
self.tableView.contextMenu.show()
|
||
|
|
||
|
def dicValue(self):
|
||
|
self.dic = {
|
||
|
'header': ['编号', '名称', '用例'],
|
||
|
'data': self.getTableValue()
|
||
|
}
|
||
|
|
||
|
def getTableValue(self):
|
||
|
return sqlOperation.selectProcedures()
|
||
|
|
||
|
def newBuild(self):
|
||
|
self.procedurePath, filetype = QtWidgets.QFileDialog.getOpenFileName(
|
||
|
self, '选择文件', '',
|
||
|
'Excel files(*.xlsx , *.xls)'
|
||
|
)
|
||
|
if self.procedurePath:
|
||
|
parse_procedure(self.procedurePath)
|
||
|
self.queryModel.datas = self.getTableValue()
|
||
|
self.queryModel.layoutChanged.emit()
|
||
|
self.my_Signal.emit('')
|
||
|
|
||
|
def actionHandler(self):
|
||
|
row = self.tableView.currentIndex().row()
|
||
|
sqlOperation.deleteProcedures(self.queryModel.datas[row][0])
|
||
|
for i in json.loads(self.queryModel.datas[row][2]):
|
||
|
sqlOperation.deleteUsecase(i)
|
||
|
self.queryModel.remove_row(row)
|
||
|
self.my_Signal.emit('')
|
||
|
|
||
|
def search(self):
|
||
|
text = self.line.text()
|
||
|
self.queryModel.datas = sqlOperation.searchProcedures(text)
|
||
|
self.queryModel.layoutChanged.emit()
|
||
|
|
||
|
|
||
|
class proceduresWindow(AccountManagement):
|
||
|
proced_Signal = QtCore.pyqtSignal(str)
|
||
|
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
|
||
|
def _setdata_(self):
|
||
|
win8 = useCaseDroup()
|
||
|
win9 = proceduresList()
|
||
|
self.lis_name = ['用例组管理', '规程管理']
|
||
|
self.lis_win = [win8, win9]
|
||
|
self.lis_img = [
|
||
|
':/static/environment_settings_icon0.png',
|
||
|
':/static/NetworkSettings.png',
|
||
|
]
|
||
|
|
||
|
def changeData(self):
|
||
|
win = self.right_widget.currentWidget()
|
||
|
win.queryModel.datas = win.getTableValue()
|
||
|
win.queryModel.layoutChanged.emit()
|
||
|
win.my_Signal.connect(self.treeViewUpdate)
|
||
|
|
||
|
def treeViewUpdate(self):
|
||
|
self.proced_Signal.emit('')
|