프로젝트

일반

사용자정보

개정판 261421bd

ID261421bd1252e1a62f0c4533cd505e79d5bf085f
상위 f6966a92
하위 eab3e43f, a907a6f2

함의성이(가) 약 4년 전에 추가함

issue #1489: save load test

Change-Id: I335641d851c0a4af097aa8777322803ea7de5930

차이점 보기:

DTI_PID/DTI_PID/AppDocData.py
2614 2614
        return attrs
2615 2615

  
2616 2616
    def save_hmb_model(self, model: QStandardItemModel):
2617
        """ no more used """
2617 2618
        """save hmb model to database"""
2618 2619

  
2619 2620
        with self.project.database.connect() as conn:
......
2693 2694
        with app_doc_data.project.database.connect() as conn:
2694 2695
            try:
2695 2696
                cursor = conn.cursor()
2697
                """delete stream line which has stream number is given data"""
2698
                sql = "delete from HMB_From_To where Stream_No_UID=?"
2699
                params = (stream_line_list[0][3],)
2700
                cursor.execute(sql, params)
2701
                """up to here"""
2702

  
2696 2703
                for stream_line in stream_line_list:
2697
                    """delete stream line which has stream number is given data"""
2698
                    sql = "delete from Streamlines where HMB_UID=(select UID from HMB where StreamNumber=?)"
2699
                    params = (stream_line[0],)
2704
                    sql = f"insert into HMB_From_To(UID,[Drawing_UID],[From_Component_UID],[To_Component_UID],[Stream_No_UID]) values" \
2705
                          f"(?,?,?,?,?)"
2706
                    params = (str(uuid.uuid4()), stream_line[0], stream_line[1], stream_line[2], stream_line[3])
2700 2707
                    cursor.execute(sql, params)
2701
                    """up to here"""
2702

  
2703
                    sql = f"insert into Streamlines(HMB_UID,[From_UID],[From],[To_UID],[To]) values" \
2704
                          f"((select UID from HMB where StreamNumber=?),?,?,?,?)"
2705
                    params = (stream_line[0], stream_line[1], stream_line[2], stream_line[3], stream_line[4])
2706
                    affected = cursor.execute(sql, params)
2707 2708
            except Exception as ex:
2708 2709
                # Roll back any change if something goes wrong
2709 2710
                conn.rollback()
......
2721 2722
                # Get a cursor object
2722 2723
                cursor = conn.cursor()
2723 2724

  
2724
                sql = f"select A.*,B.Name as From_Drawing,C.Name as To_Drawing from Streamlines A " \
2725
                      f"left join Drawings B on A.From_UID=B.UID " \
2726
                      f"left join Drawings C on A.To_UID=C.UID where HMB_UID = ?"
2725
                sql = f"select h.Drawing_UID, h.From_Component_UID, h.To_Component_UID, d.Name from HMB_From_To h " \
2726
                      f"inner join Drawings d on d.UID=h.Drawing_UID " \
2727
                      f"where Stream_No_UID = ?"
2727 2728
                sql = self.project.database.to_sql(sql)
2728 2729
                params = (hmb_uid,)
2729 2730
                cursor.execute(sql, params)
DTI_PID/DTI_PID/HMBDialog.py
26 26
        try:
27 27
            self.ui = Ui_HMBDialog()
28 28
            self.ui.setupUi(self)
29
            self.ui.buttonBox.button(QDialogButtonBox.Ok).setIcon(QIcon(':/newPrefix/OK.svg'))
30
            self.ui.buttonBox.button(QDialogButtonBox.Cancel).setIcon(QIcon(':/newPrefix/Remove.svg'))
29
            #self.ui.buttonBox.button(QDialogButtonBox.Ok).setIcon(QIcon(':/newPrefix/OK.svg'))
30
            self.ui.buttonBox.button(QDialogButtonBox.Close).setIcon(QIcon(':/newPrefix/Remove.svg'))
31 31

  
32 32
            self.fill_hmb_data(None)
33 33
            self.ui.tableViewHMB.setAlternatingRowColors(True)
......
49 49
            return
50 50

  
51 51
        model = QStandardItemModel()
52
        header = ['UID', 'StreamNumber']
53

  
52 54
        for hmb in hmbs:
53 55
            UID = hmb.uid
54 56
            STREAM_NO = hmb.stream_no
55 57
            items = [QStandardItem(UID), QStandardItem(STREAM_NO)]
56 58

  
57
            header = ['UID', 'StreamNumber']
58 59
            for data in sorted(hmb.data, key=lambda param:param.index):
59
                header.append(data.name + ' (' + data.unit + ')')
60
                if hmbs.index(hmb) == 0:
61
                    header.append(data.name + ' (' + data.unit + ')')
60 62
                items.append(QStandardItem(data.value))
61 63
            model.appendRow(items)
62 64

  
......
115 117
            self.fill_hmb_data(None)
116 118

  
117 119
    def accept(self):
120
        """no more used"""
118 121
        """accept dialog"""
119 122
        from HMBTable import HMBTable, HMBData
120 123
        from SymbolAttr import SymbolAttr
DTI_PID/DTI_PID/HMB_UI.py
1 1
# -*- coding: utf-8 -*-
2 2

  
3
# Form implementation generated from reading ui file '.\UI\HMB.ui'
3
# Form implementation generated from reading ui file './UI/HMB.ui'
4 4
#
5
# Created by: PyQt5 UI code generator 5.13.1
5
# Created by: PyQt5 UI code generator 5.11.3
6 6
#
7 7
# WARNING! All changes made in this file will be lost!
8 8

  
9

  
10 9
from PyQt5 import QtCore, QtGui, QtWidgets
11 10

  
12

  
13 11
class Ui_HMBDialog(object):
14 12
    def setupUi(self, HMBDialog):
15 13
        HMBDialog.setObjectName("HMBDialog")
......
44 42
        self.gridLayout.addLayout(self.gridLayout_5, 0, 0, 1, 1)
45 43
        self.buttonBox = QtWidgets.QDialogButtonBox(HMBDialog)
46 44
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
47
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
45
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
48 46
        self.buttonBox.setObjectName("buttonBox")
49 47
        self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1)
50 48

  
......
57 55
        _translate = QtCore.QCoreApplication.translate
58 56
        HMBDialog.setWindowTitle(_translate("HMBDialog", "HMB"))
59 57
        self.label_4.setText(_translate("HMBDialog", "Import HMB : "))
58

  
60 59
import MainWindow_rc
60

  
61
if __name__ == "__main__":
62
    import sys
63
    app = QtWidgets.QApplication(sys.argv)
64
    HMBDialog = QtWidgets.QDialog()
65
    ui = Ui_HMBDialog()
66
    ui.setupUi(HMBDialog)
67
    HMBDialog.show()
68
    sys.exit(app.exec_())
69

  
DTI_PID/DTI_PID/StreamlineDialog.py
74 74
        """load hmb data and fill table view"""
75 75
        import uuid
76 76

  
77
        rows = AppDocData.get_hmb_data_from(None)
77
        hmbs = AppDocData.get_hmb_data_from(None)
78
        if not hmbs:
79
            return
80

  
78 81
        model = QStandardItemModel()
79
        for row in rows:
80
            UID = row['UID'] if row['UID'] else str(uuid.uuid4())
81
            items = [QStandardItem(UID), QStandardItem(row['StreamNumber']),
82
                     QStandardItem(row['StreamDescription']), QStandardItem(row['DATACASE']),
83
                     QStandardItem(row['STREAMPHASE']), QStandardItem(row['Unitno']),
84
                     QStandardItem(row['OVERALLVAPORFRACTION']), QStandardItem(row['OVERALLTEMPERATURE']),
85
                     QStandardItem(row['OVERALLPRESSURE']), QStandardItem(row['OVERALLMOLECULARWEIGHT']),
86
                     QStandardItem(row['OVERALLMOLARFLOW']), QStandardItem(row['OVERALLMASSFLOW']),
87
                     QStandardItem(row['OVERALLACTUALVOLUMEFLOW']), QStandardItem(row['OVERALLMASSDENSITY']),
88
                     QStandardItem(row['OVERALLVISCOSITY']), QStandardItem(row['OVERALLMASSHEATCAPACITY']),
89
                     QStandardItem(row['OVERALLHEATFLOW']), QStandardItem(row['OverallMassEnthalpy']),
90
                     QStandardItem(row['OverallSp.Gravity']), QStandardItem(row['OverallAPIGravity']),
91
                     QStandardItem(row['OverallCriticalPressure']), QStandardItem(row['OverallCriticalTemperature']),
92
                     QStandardItem(row['OverallUOPKfactor']), QStandardItem(row['LIQUIDMOLEFRACTION']),
93
                     QStandardItem(row['VaporTemperature']), QStandardItem(row['VaporPressure']),
94
                     QStandardItem(row['VaporPseudocriticalTemperature']),
95
                     QStandardItem(row['VaporPseudocriticalPressure']), QStandardItem(row['VAPORMOLARRATE']),
96
                     QStandardItem(row['VAPORMASSRATE']), QStandardItem(row['VAPORACTUALVOLUMERATE']),
97
                     QStandardItem(row['VAPORSTD.VOLUMERATE']), QStandardItem(row['VAPORMOLECULARWEIGHT']),
98
                     QStandardItem(row['VaporHeatFlow']), QStandardItem(row['VAPORCOMPRESSIBILITY']),
99
                     QStandardItem(row['VAPORSPECIFICENTHALPY']), QStandardItem(row['VAPORSPECIFICHEATCAPACITY']),
100
                     QStandardItem(row['IDEALVAPORSPECIFICHEATRATIO']), QStandardItem(row['VAPORACTUALDENSITY']),
101
                     QStandardItem(row['VAPORTHERMALCONDUCTIVITY']), QStandardItem(row['VAPORVISCOSITY']),
102
                     QStandardItem(row['LiquidTemperature']), QStandardItem(row['LiquidPressure']),
103
                     QStandardItem(row['LiquidPseudocriticalTemperature']),
104
                     QStandardItem(row['LiquidPseudocriticalPressure']),
105
                     QStandardItem(row['LIQUIDMOLARRATE']), QStandardItem(row['LIQUIDMASSRATE']),
106
                     QStandardItem(row['LIQUIDACTUALVOLUMEFLOW']), QStandardItem(row['LIQUIDSTD.VOLUMEFLOW']),
107
                     QStandardItem(row['LIQUIDMOLECULARWEIGHT']), QStandardItem(row['LiquidHeatFlow']),
108
                     QStandardItem(row['LIQUIDSPECIFICENTHALPY']),
109
                     QStandardItem(row['LIQUIDBoilingPointPressureatStreamT']),
110
                     QStandardItem(row['LIQUIDSPECIFICHEATCAPACITY']), QStandardItem(row['LIQUIDACTUALDENSITY']),
111
                     QStandardItem(row['LiquidStdDensity']), QStandardItem(row['LiquidSpecificGravity@15°C']),
112
                     QStandardItem(row['LIQUIDSURFACETENSION']), QStandardItem(row['LIQUIDTHERMALCONDUCTIVITY']),
113
                     QStandardItem(row['LIQUIDVISCOSITY']), QStandardItem(row['AQUEOUSPseudocriticalTemperature']),
114
                     QStandardItem(row['AQUEOUSPseudocriticalPressure']), QStandardItem(row['AQUEOUSMOLARRATE']),
115
                     QStandardItem(row['AQUEOUSMASSRATE']), QStandardItem(row['AQUEOUSACTUALVOLUMEFLOW']),
116
                     QStandardItem(row['AQUEOUSSTD.LIQUIDFLOW']), QStandardItem(row['AQUEOUSMolecularWeight']),
117
                     QStandardItem(row['AQUEOUSHeatFlow']), QStandardItem(row['AQUEOUSSPECIFICENTHALPY']),
118
                     QStandardItem(row['AQUEOUSBoilingPointPressureatStreamT']),
119
                     QStandardItem(row['AQUEOUSSPECIFICHEATCAPACITY']),
120
                     QStandardItem(row['AQUEOUSACTUALDENSITY']), QStandardItem(row['AQUEOUSStdDensity']),
121
                     QStandardItem(row['AQUEOUSSpecificGravity@15°C']),
122
                     QStandardItem(row['AQUEOUSSURFACETENSION']),
123
                     QStandardItem(row['AQUEOUSTHERMALCONDUCTIVITY']), QStandardItem(row['AQUEOUSVISCOSITY']),
124
                     QStandardItem(row['DataSource'])]
82
        header = ['UID', 'Stream No']
83

  
84
        for hmb in hmbs:
85
            UID = hmb.uid
86
            STREAM_NO = hmb.stream_no
87
            items = [QStandardItem(UID), QStandardItem(STREAM_NO)]
88

  
89
            for data in sorted(hmb.data, key=lambda param:param.index):
90
                if hmbs.index(hmb) == 0:
91
                    header.append(data.name + ' (' + data.unit + ')')
92
                items.append(QStandardItem(data.value))
125 93
            model.appendRow(items)
126 94

  
127
        model.setHorizontalHeaderLabels(['UID', 'Stream No',
128
                                         'StreamDescription', 'DATACASE', 'STREAMPHASE',
129
                                         'Unitno', 'OVERALLVAPORFRACTION', 'OVERALLTEMPERATURE', 'OVERALLPRESSURE',
130
                                         'OVERALLMOLECULARWEIGHT', 'OVERALLMOLARFLOW', 'OVERALLMASSFLOW',
131
                                         'OVERALLACTUALVOLUMEFLOW', 'OVERALLMASSDENSITY', 'OVERALLVISCOSITY',
132
                                         'OVERALLMASSHEATCAPACITY', 'OVERALLHEATFLOW', 'OverallMassEnthalpy',
133
                                         'OverallSp.Gravity', 'OverallAPIGravity', 'OverallCriticalPressure',
134
                                         'OverallCriticalTemperature', 'OverallUOPKfactor',
135
                                         'LIQUIDMOLEFRACTION', 'VaporTemperature', 'VaporPressure',
136
                                         'VaporPseudocriticalTemperature', 'VaporPseudocriticalPressure',
137
                                         'VAPORMOLARRATE', 'VAPORMASSRATE', 'VAPORACTUALVOLUMERATE',
138
                                         'VAPORSTD.VOLUMERATE', 'VAPORMOLECULARWEIGHT', 'VaporHeatFlow',
139
                                         'VAPORCOMPRESSIBILITY', 'VAPORSPECIFICENTHALPY',
140
                                         'VAPORSPECIFICHEATCAPACITY', 'IDEALVAPORSPECIFICHEATRATIO',
141
                                         'VAPORACTUALDENSITY', 'VAPORTHERMALCONDUCTIVITY', 'VAPORVISCOSITY',
142
                                         'LiquidTemperature', 'LiquidPressure',
143
                                         'LiquidPseudocriticalTemperature', 'LiquidPseudocriticalPressure',
144
                                         'LIQUIDMOLARRATE', 'LIQUIDMASSRATE', 'LIQUIDACTUALVOLUMEFLOW',
145
                                         'LIQUIDSTD.VOLUMEFLOW', 'LIQUIDMOLECULARWEIGHT', 'LiquidHeatFlow',
146
                                         'LIQUIDSPECIFICENTHALPY', 'LIQUIDBoilingPointPressureatStreamT',
147
                                         'LIQUIDSPECIFICHEATCAPACITY', 'LIQUIDACTUALDENSITY',
148
                                         'LiquidStdDensity', 'LiquidSpecificGravity@15°C',
149
                                         'LIQUIDSURFACETENSION', 'LIQUIDTHERMALCONDUCTIVITY', 'LIQUIDVISCOSITY',
150
                                         'AQUEOUSPseudocriticalTemperature', 'AQUEOUSPseudocriticalPressure',
151
                                         'AQUEOUSMOLARRATE', 'AQUEOUSMASSRATE', 'AQUEOUSACTUALVOLUMEFLOW',
152
                                         'AQUEOUSSTD.LIQUIDFLOW', 'AQUEOUSMolecularWeight', 'AQUEOUSHeatFlow',
153
                                         'AQUEOUSSPECIFICENTHALPY', 'AQUEOUSBoilingPointPressureatStreamT',
154
                                         'AQUEOUSSPECIFICHEATCAPACITY', 'AQUEOUSACTUALDENSITY', 'AQUEOUSStdDensity',
155
                                         'AQUEOUSSpecificGravity@15°C', 'AQUEOUSSURFACETENSION',
156
                                         'AQUEOUSTHERMALCONDUCTIVITY', 'AQUEOUSVISCOSITY', 'DataSource'])
95
        model.setHorizontalHeaderLabels(header)
96

  
157 97
        self.ui.tableViewStreamNo.setModel(model)
158 98
        self.ui.tableViewStreamNo.resizeColumnsToContents()
159 99
        self.ui.tableViewStreamNo.setEditTriggers(QAbstractItemView.NoEditTriggers)
......
176 116

  
177 117
            app_doc_data = AppDocData.instance()
178 118
            rows = app_doc_data.get_stream_lines(uid)
179
            for row_ in rows:
180
                from_ = row_['From'] if row_['From'] else row_['From_UID']
181
                from_item = QStandardItem(from_)
182
                from_item.setData(row_['From_UID'], Qt.UserRole)
119
            if rows:
120
                for row_ in rows:
121
                    from_ = row_['From_Component_UID']
122
                    from_item = QStandardItem(from_)
123
                    from_item.setData(row_['From_Component_UID'], Qt.UserRole)
183 124

  
184
                to_ = row_['To'] if row_['To'] else row_['To_UID']
185
                to_item = QStandardItem(to_)
186
                to_item.setData(row_['To_UID'], Qt.UserRole)
125
                    to_ = row_['To_Component_UID']
126
                    to_item = QStandardItem(to_)
127
                    to_item.setData(row_['To_Component_UID'], Qt.UserRole)
187 128

  
188
                from_drawing = row_['From_Drawing']
189
                to_drawing = row_['To_Drawing']
190
                items = [QStandardItem(from_drawing if from_drawing == to_drawing else 'error'), from_item, to_item]
191
                model.appendRow(items)
129
                    drawing = row_['Name']
130
                    drawing_item = QStandardItem(drawing)
131
                    drawing_item.setData(row_['Drawing_UID'], Qt.UserRole)
132

  
133
                    items = [drawing_item, from_item, to_item]
134
                    model.appendRow(items)
192 135

  
193 136
            model.setHorizontalHeaderLabels(['Drawing No', 'From', 'To'])
194 137
            self.ui.tableViewFromTo.setModel(model)
......
229 172
            self.ui.tableViewProperties.resizeColumnsToContents()
230 173
            self.ui.tableViewProperties.setEditTriggers(QAbstractItemView.NoEditTriggers)
231 174
            self.ui.tableViewProperties.setRowHidden(0, True)  # hide all columns except index is 1
175
            self.ui.tableViewProperties.verticalHeader().setVisible(False)
232 176

  
233 177
    def on_add_new_from_to(self):
234 178
        """add a new from/to record"""
179
        if not self.ui.tableViewFromTo.model():
180
            return
235 181
        rows = self.ui.tableViewFromTo.model().rowCount()
236 182
        index = self.ui.tableViewFromTo.model().index(rows, 0)
237
        self.ui.tableViewFromTo.model().insertRow(rows, [QStandardItem(), QStandardItem(), QStandardItem()])
183

  
184
        app_doc_data = AppDocData.instance()
185
        drawing_item = QStandardItem(app_doc_data.activeDrawing.name)
186
        drawing_item.setData(app_doc_data.activeDrawing.UID, Qt.UserRole)
187

  
188
        self.ui.tableViewFromTo.model().insertRow(rows, [drawing_item, QStandardItem(), QStandardItem()])
238 189
        self.ui.tableViewFromTo.selectionModel().setCurrentIndex(index, QItemSelectionModel.NoUpdate)
239 190

  
240 191
        from_button = FromToWidget(self.ui.tableViewFromTo, 1)
......
280 231
    def on_save_from_to(self):
281 232
        """save current from/to data"""
282 233
        row = self.ui.tableViewStreamNo.selectionModel().currentIndex().row()
283
        stream_no = self.ui.tableViewStreamNo.model().item(row, 1).text()
234
        stream_no_uid = self.ui.tableViewStreamNo.model().item(row, 0).text()
284 235

  
285 236
        from_to_data = []
286 237

  
287 238
        model = self.ui.tableViewFromTo.model()
288 239
        for row in range(model.rowCount()):
240
            drawing_ = model.item(row, 0)
241
            drawing_uid = drawing_.data(Qt.UserRole)
289 242
            from_ = model.item(row, 1)
290 243
            from_uid = from_.data(Qt.UserRole)
291
            to_ = model.item(row, 1)
244
            to_ = model.item(row, 2)
292 245
            to_uid = to_.data(Qt.UserRole)
293 246

  
294
            from_to_data.append((stream_no, from_uid, from_.text(), to_uid, to_.text()))
247
            from_to_data.append((drawing_uid, from_uid, to_uid, stream_no_uid))
295 248

  
296 249
        AppDocData.save_stream_line_data(from_to_data)
297 250

  
DTI_PID/DTI_PID/UI/HMB.ui
61 61
      <enum>Qt::Horizontal</enum>
62 62
     </property>
63 63
     <property name="standardButtons">
64
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
64
      <set>QDialogButtonBox::Close</set>
65 65
     </property>
66 66
    </widget>
67 67
   </item>
DTI_PID/DTI_PID/UI/Streamline.ui
6 6
   <rect>
7 7
    <x>0</x>
8 8
    <y>0</y>
9
    <width>672</width>
9
    <width>1136</width>
10 10
    <height>471</height>
11 11
   </rect>
12 12
  </property>
DTI_PID/DTI_PID/UI/Streamline_UI.py
11 11
class Ui_StreamlineDialog(object):
12 12
    def setupUi(self, StreamlineDialog):
13 13
        StreamlineDialog.setObjectName("StreamlineDialog")
14
        StreamlineDialog.resize(672, 471)
14
        StreamlineDialog.resize(1136, 471)
15 15
        self.gridLayout_3 = QtWidgets.QGridLayout(StreamlineDialog)
16 16
        self.gridLayout_3.setObjectName("gridLayout_3")
17 17
        self.buttonBox = QtWidgets.QDialogButtonBox(StreamlineDialog)
minorTools/xmlTextSearcher.py
3 3
def finder():
4 4
    print("finder start")
5 5
    
6
    targetText = ['>Motor<']
6
    targetText = ['>Fan<']
7 7
    path = 'W:\ID2_Project\SOGT\Temp'
8 8

  
9 9
    print("target : " + str(len(targetText)))

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)