ProjectFlask/FlaskMigrateExtension/MigrateSummaryDialog.py

Mon, 28 Oct 2024 17:11:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 28 Oct 2024 17:11:28 +0100
branch
eric7
changeset 85
fcb5126077b1
parent 84
f39230b845e4
child 87
075f7667f69d
permissions
-rw-r--r--

- changed to the new style header
- ensured proper parent relationship of modal dialogs
- included compiled form files

35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
83
d8788dc3442f Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 82
diff changeset
3 # Copyright (c) 2020 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog showing a summary of all created.migrations.
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
75
7a30d96ea9f6 Resorted the import statements with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 72
diff changeset
10 from PyQt6.QtCore import QEventLoop, QProcess, Qt, QTimer, pyqtSlot
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
11 from PyQt6.QtGui import QGuiApplication
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
12 from PyQt6.QtWidgets import (
75
7a30d96ea9f6 Resorted the import statements with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 72
diff changeset
13 QAbstractButton,
7a30d96ea9f6 Resorted the import statements with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 72
diff changeset
14 QAbstractItemView,
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
15 QDialog,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
16 QDialogButtonBox,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
17 QTreeWidgetItem,
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 )
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
72
4557829a4acf Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 70
diff changeset
20 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor, EricOverridenCursor
4557829a4acf Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 70
diff changeset
21 from eric7.EricWidgets import EricMessageBox
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from .Ui_MigrateSummaryDialog import Ui_MigrateSummaryDialog
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 class MigrateSummaryDialog(QDialog, Ui_MigrateSummaryDialog):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Class implementing a dialog showing a summary of all created.migrations.
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
30
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def __init__(self, project, migrateProject, migrations="", parent=None):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
34
36
548dea93941c Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
35 @param project reference to the project object
548dea93941c Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
36 @type Project
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param migrateProject reference to the migrate project extension
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type MigrateProject
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param migrations directory path containing the migrations
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type str
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param parent reference to the parent widget
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type QWidget
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
61
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
44 super().__init__(parent)
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.setupUi(self)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
46
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__refreshButton = self.buttonBox.addButton(
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
48 self.tr("Refresh"), QDialogButtonBox.ButtonRole.ActionRole
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
49 )
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__refreshButton.clicked.connect(self.showSummary)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
51
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__project = project
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__migrateProject = migrateProject
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__migrations = migrations
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
55
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__process = None
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
57 self.__currentItemIndex = 1000000
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
58 self.__currentRevision = ""
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
59
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def showSummary(self):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Public method to show the migrations summary.
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 workdir, env = self.__project.prepareRuntimeEnvironment()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if env is not None:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.show()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.raise_()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
68
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
69 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
70 False
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
71 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
72 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
73 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
74 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
75 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
76 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
77 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
78 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setFocus(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
79 Qt.FocusReason.OtherFocusReason
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
80 )
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
81 QGuiApplication.processEvents(
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
82 QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
83 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
84
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 command = self.__project.getFlaskCommand()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
86
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__process = QProcess()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__process.setProcessEnvironment(env)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.__process.setWorkingDirectory(workdir)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
90
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 args = ["db", "history", "--indicate-current"]
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 if self.__migrations:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 args += ["--directory", self.__migrations]
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
94
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
95 with EricOverrideCursor():
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
96 self.__process.start(command, args)
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
97 ok = self.__process.waitForStarted(10000)
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 if ok:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
99 ok = self.__process.waitForFinished(10000)
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
100 if ok:
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
101 out = str(self.__process.readAllStandardOutput(), "utf-8")
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
102 self.__processOutput(out)
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
103 self.__selectItem(self.__currentRevision)
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
104 else:
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
105 with EricOverridenCursor():
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
106 EricMessageBox.critical(
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
107 None,
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
108 self.tr("Migrations Summary"),
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
109 self.tr(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
110 """The Flask process did not finish"""
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
111 """ within 10 seconds."""
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
112 ),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
113 )
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 else:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
115 with EricOverridenCursor():
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
116 EricMessageBox.critical(
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
117 None,
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
118 self.tr("Migrations Summary"),
84
f39230b845e4 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 83
diff changeset
119 self.tr("""The Flask process could not be started."""),
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
120 )
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
121 for column in range(self.summaryWidget.columnCount()):
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
122 self.summaryWidget.resizeColumnToContents(column)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
123
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
124 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
125 False
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
126 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
127 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
128 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
129 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
130 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
131 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
132 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
133 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setFocus(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
134 Qt.FocusReason.OtherFocusReason
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
135 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
136
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 def __processOutput(self, output):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 Private method to process the flask output and populate the summary
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 list.
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
141
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @param output output of the flask process
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @type str
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.summaryWidget.clear()
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
146 self.upDownButton.setEnabled(False)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
147 self.__currentItemIndex = 1000000
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
148 self.__currentRevision = ""
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
149
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 lines = output.splitlines()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 for line in lines:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 isCurrent = False
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 oldRev, rest = line.split("->")
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 rest, message = rest.split(",", 1)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 newRev, *labels = rest.split()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if labels:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 labelList = [
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
158 label.replace("(", "").replace(")", "") for label in labels
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 ]
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 labelsStr = ", ".join(labelList)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 if "current" in labelList:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 isCurrent = True
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 else:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 labelsStr = ""
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
165
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
166 itm = QTreeWidgetItem(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
167 self.summaryWidget,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
168 [
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
169 oldRev.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
170 newRev.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
171 message.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
172 labelsStr,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
173 ],
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
174 )
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 if isCurrent:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 font = itm.font(0)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 font.setBold(True)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 for column in range(self.summaryWidget.columnCount()):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 itm.setFont(column, font)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
180
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
181 self.__currentItemIndex = self.summaryWidget.indexOfTopLevelItem(itm)
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
182 self.__currentRevision = newRev.strip()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
183
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 @pyqtSlot()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def on_summaryWidget_itemSelectionChanged(self):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 Private slot to handle the selection of an entry.
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
189 items = self.summaryWidget.selectedItems()
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
190 if items:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
191 index = self.summaryWidget.indexOfTopLevelItem(items[0])
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
192 if index < self.__currentItemIndex:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
193 self.upDownButton.setText(self.tr("Upgrade"))
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
194 elif index > self.__currentItemIndex:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
195 self.upDownButton.setText(self.tr("Downgrade"))
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
196 self.upDownButton.setEnabled(index != self.__currentItemIndex)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
197 else:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
198 self.upDownButton.setEnabled(False)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
199
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 @pyqtSlot()
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
201 def on_upDownButton_clicked(self):
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
203 Private slot to upgrade/downgrade to the selected revision.
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 itm = self.summaryWidget.selectedItems()[0]
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 rev = itm.text(1)
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
207 if self.upDownButton.text() == self.tr("Upgrade"):
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
208 self.__migrateProject.upgradeDatabase(revision=rev)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
209 else:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
210 self.__migrateProject.downgradeDatabase(revision=rev)
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 self.showSummary()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
212
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 @pyqtSlot(QAbstractButton)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 def on_buttonBox_clicked(self, button):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 """
36
548dea93941c Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
216 Private slot handling a button press of the button box.
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
217
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 @param button reference to the pressed button
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @type QAbstractButton
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 """
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
221 if button is self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.__cancelProcess()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
223
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 @pyqtSlot()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 def __cancelProcess(self):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 Private slot to terminate the current process.
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 if (
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
230 self.__process is not None
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
231 and self.__process.state() != QProcess.ProcessState.NotRunning
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 ):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.__process.terminate()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 QTimer.singleShot(2000, self.__process.kill)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__process.waitForFinished(3000)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
236
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 self.__process = None
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
238
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
239 def __selectItem(self, revision):
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
240 """
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
241 Private method to select an item given its revision.
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
242
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
243 @param revision revision of the item to select
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
244 @type str
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
245 """
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
246 if revision:
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
247 items = self.summaryWidget.findItems(revision, Qt.MatchFlag.MatchExactly, 1)
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
248 if items:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
249 # select the first item
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
250 items[0].setSelected(True)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
251 self.summaryWidget.scrollToItem(
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
252 items[0], QAbstractItemView.ScrollHint.PositionAtCenter
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
253 )

eric ide

mercurial