hytos / DTI_PID / DTI_PID / DataTransferDialog.py @ e57134bc
이력 | 보기 | 이력해설 | 다운로드 (5.98 KB)
1 |
# coding: utf-8
|
---|---|
2 |
""" This is Data Transfer dialog module """
|
3 |
|
4 |
import os |
5 |
import sys |
6 |
from PyQt5.QtCore import * |
7 |
from PyQt5.QtGui import * |
8 |
from PyQt5.QtWidgets import * |
9 |
|
10 |
from AppDocData import AppDocData, MessageType |
11 |
|
12 |
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + '\\UI') |
13 |
import DataTransfer_UI |
14 |
|
15 |
class QDataTransferDialog(QDialog): |
16 |
""" This Data Trasnfer dialog class """
|
17 |
|
18 |
def __init__(self, parent): |
19 |
QDialog.__init__(self, parent)
|
20 |
|
21 |
self.ui = DataTransfer_UI.Ui_DataTransferDialog()
|
22 |
self.ui.setupUi(self) |
23 |
self.ui.lineEditPassword.setEchoMode(QLineEdit.Password)
|
24 |
self.ui.pushButtonTestConnection.clicked.connect(self.on_test_connection_clicked) |
25 |
|
26 |
self.ui.treeWidgetDrawingList.setHeaderHidden(False) |
27 |
self.ui.treeWidgetDrawingList.header().setStretchLastSection(False) |
28 |
self.ui.treeWidgetDrawingList.setHeaderLabels([self.tr('Name'), self.tr('DateTime')]) |
29 |
self.ui.treeWidgetDrawingList.header().setSectionResizeMode(0, QHeaderView.ResizeToContents) |
30 |
self.ui.treeWidgetDrawingList.header().setSectionResizeMode(1, QHeaderView.ResizeToContents) |
31 |
self.load_data()
|
32 |
|
33 |
def load_data(self): |
34 |
""" load mssql server information and drawing list """
|
35 |
from AppDocData import AppDocData |
36 |
|
37 |
configs = AppDocData.instance().getConfigs('Data Transfer')
|
38 |
for config in configs: |
39 |
if 'Server' == config.key: |
40 |
self.ui.lineEditServer.setText(config.value)
|
41 |
elif 'User' == config.key: |
42 |
self.ui.lineEditUser.setText(config.value)
|
43 |
elif 'Password' == config.key: |
44 |
self.ui.lineEditPassword.setText(config.value)
|
45 |
|
46 |
self.load_drawing_list()
|
47 |
|
48 |
def load_drawing_list(self): |
49 |
""" load drawing list """
|
50 |
|
51 |
try:
|
52 |
app_doc_data = AppDocData.instance() |
53 |
drawings = app_doc_data.getDrawings() |
54 |
|
55 |
self.ui.treeWidgetDrawingList.clear()
|
56 |
self.ui.treeWidgetDrawingList.root = QTreeWidgetItem(self.ui.treeWidgetDrawingList, [self.tr('P&ID Drawings'), '']) |
57 |
self.ui.treeWidgetDrawingList.root.setFlags(self.ui.treeWidgetDrawingList.root.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable) |
58 |
self.ui.treeWidgetDrawingList.root.setCheckState(0, Qt.Unchecked) |
59 |
for drawing in drawings: |
60 |
item = QTreeWidgetItem(self.ui.treeWidgetDrawingList.root, [drawing.name, drawing.datetime])
|
61 |
item.setIcon(0, QIcon(':newPrefix/image.png')) |
62 |
item.setFlags(item.flags() | Qt.ItemIsUserCheckable) |
63 |
item.setCheckState(0, Qt.Unchecked)
|
64 |
item.setData(0, Qt.UserRole, drawing)
|
65 |
|
66 |
self.ui.treeWidgetDrawingList.root.setText(0, self.tr('P&ID Drawings')+'({})'.format(self.ui.treeWidgetDrawingList.root.childCount())) |
67 |
self.ui.treeWidgetDrawingList.expandItem(self.ui.treeWidgetDrawingList.root) |
68 |
self.ui.treeWidgetDrawingList.setSortingEnabled(True) |
69 |
self.ui.treeWidgetDrawingList.root.sortChildren(0, Qt.AscendingOrder) |
70 |
self.ui.treeWidgetDrawingList.resizeColumnToContents(0) |
71 |
except Exception as ex: |
72 |
from App import App |
73 |
message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
74 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
75 |
|
76 |
def on_test_connection_clicked(self): |
77 |
""" test if connection is success or not """
|
78 |
from AppDocData import AppDocData |
79 |
from AppDatabase import AppDatabase |
80 |
|
81 |
server = self.ui.lineEditServer.text()
|
82 |
user = self.ui.lineEditUser.text()
|
83 |
password = self.ui.lineEditPassword.text()
|
84 |
if server and user and password: |
85 |
app_doc_data = AppDocData.instance() |
86 |
database = AppDatabase('MSSQL', self.ui.lineEditServer.text(), self.ui.lineEditUser.text(), self.ui.lineEditPassword.text(), db_path=app_doc_data.project.getName()) |
87 |
try:
|
88 |
conn = database.connect() |
89 |
with conn:
|
90 |
QMessageBox.information(self, self.tr('Information'), self.tr('Test connection is success')) |
91 |
except Exception as ex: |
92 |
mb = QMessageBox() |
93 |
mb.setIcon(QMessageBox.Critical) |
94 |
mb.setWindowTitle(self.tr('Error')) |
95 |
mb.setText('{}'.format(ex))
|
96 |
mb.exec_() |
97 |
|
98 |
def accept(self): |
99 |
""" save sql information to database """
|
100 |
from AppDocData import Config |
101 |
from AppDatabase import AppDatabase |
102 |
|
103 |
try:
|
104 |
app_doc_data = AppDocData.instance() |
105 |
|
106 |
configs = [] |
107 |
server = self.ui.lineEditServer.text()
|
108 |
user = self.ui.lineEditUser.text()
|
109 |
password = self.ui.lineEditPassword.text()
|
110 |
configs.append(Config('Data Transfer', 'Server', server)) |
111 |
configs.append(Config('Data Transfer', 'User', user)) |
112 |
configs.append(Config('Data Transfer', 'Password', password)) |
113 |
AppDocData.instance().saveConfigs(configs) |
114 |
|
115 |
database = AppDatabase('MSSQL', server, user, password, db_path=app_doc_data.project.getName())
|
116 |
checked = [self.ui.treeWidgetDrawingList.root.child(i) for i in range(self.ui.treeWidgetDrawingList.root.childCount()) \ |
117 |
if self.ui.treeWidgetDrawingList.root.child(i).checkState(0) == Qt.Checked] |
118 |
self.ui.progressBarDataTransfer.setMaximum(len(checked)) |
119 |
|
120 |
for item in checked: |
121 |
drawing = item.data(0, Qt.UserRole)
|
122 |
drawing.transfer(database) |
123 |
self.ui.progressBarDataTransfer.setValue(self.ui.progressBarDataTransfer.value() + 1) |
124 |
QApplication.processEvents() |
125 |
|
126 |
QDialog.accept(self)
|
127 |
except Exception as ex: |
128 |
from App import App |
129 |
message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno) |
130 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |