ProjectFlask/FlaskMigrateExtension/MigrateSummaryDialog.py

Sat, 31 Dec 2022 16:27:49 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:27:49 +0100
branch
eric7
changeset 82
bb14c648099b
parent 75
7a30d96ea9f6
child 83
d8788dc3442f
permissions
-rw-r--r--

Updated copyright for 2023.

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
82
bb14c648099b Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 75
diff changeset
3 # Copyright (c) 2020 - 2023 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"),
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
119 self.tr(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
120 """The Flask process could not be""" """ started."""
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
121 ),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
122 )
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
123 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
124 self.summaryWidget.resizeColumnToContents(column)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
125
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
126 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
127 False
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
128 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
129 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
130 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
131 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
132 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
133 True
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
134 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
135 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setFocus(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
136 Qt.FocusReason.OtherFocusReason
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
137 )
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
138
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def __processOutput(self, output):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 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
142 list.
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
143
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @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
145 @type str
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.summaryWidget.clear()
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
148 self.upDownButton.setEnabled(False)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
149 self.__currentItemIndex = 1000000
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
150 self.__currentRevision = ""
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
151
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 lines = output.splitlines()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 for line in lines:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 isCurrent = False
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 oldRev, rest = line.split("->")
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 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
157 newRev, *labels = rest.split()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 if labels:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 labelList = [
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
160 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
161 ]
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 labelsStr = ", ".join(labelList)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 if "current" in labelList:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 isCurrent = True
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 else:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 labelsStr = ""
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
167
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
168 itm = QTreeWidgetItem(
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
169 self.summaryWidget,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
170 [
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
171 oldRev.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
172 newRev.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
173 message.strip(),
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
174 labelsStr,
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
175 ],
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
176 )
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if isCurrent:
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 font = itm.font(0)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 font.setBold(True)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 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
181 itm.setFont(column, font)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
182
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
183 self.__currentItemIndex = self.summaryWidget.indexOfTopLevelItem(itm)
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
184 self.__currentRevision = newRev.strip()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
185
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 @pyqtSlot()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 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
188 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 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
190 """
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
191 items = self.summaryWidget.selectedItems()
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
192 if items:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
193 index = self.summaryWidget.indexOfTopLevelItem(items[0])
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
194 if 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("Upgrade"))
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
196 elif index > self.__currentItemIndex:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
197 self.upDownButton.setText(self.tr("Downgrade"))
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
198 self.upDownButton.setEnabled(index != self.__currentItemIndex)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
199 else:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
200 self.upDownButton.setEnabled(False)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
201
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @pyqtSlot()
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
203 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
204 """
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
205 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
206 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 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
208 rev = itm.text(1)
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
209 if self.upDownButton.text() == self.tr("Upgrade"):
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
210 self.__migrateProject.upgradeDatabase(revision=rev)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
211 else:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
212 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
213 self.showSummary()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
214
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 @pyqtSlot(QAbstractButton)
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 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
217 """
36
548dea93941c Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
218 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
219
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @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
221 @type QAbstractButton
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 """
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
223 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
224 self.__cancelProcess()
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
225
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 @pyqtSlot()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 def __cancelProcess(self):
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 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
230 """
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 if (
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
232 self.__process is not None
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
233 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
234 ):
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__process.terminate()
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 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
237 self.__process.waitForFinished(3000)
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
238
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.__process = None
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
240
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
241 def __selectItem(self, revision):
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
242 """
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
243 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
244
39
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
245 @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
246 @type str
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
247 """
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
248 if revision:
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
249 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
250 if items:
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
251 # select the first item
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
252 items[0].setSelected(True)
120f30d7b949 MigrateSummaryDialog: fine tuned the dialog handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
253 self.summaryWidget.scrollToItem(
70
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
254 items[0], QAbstractItemView.ScrollHint.PositionAtCenter
22e1d0f69668 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
255 )

eric ide

mercurial