ProjectDjango/DjangoSquashMigrationSelectionDialog.py

Tue, 10 Dec 2024 15:48:57 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:48:57 +0100
branch
eric7
changeset 197
2667e16a3379
parent 192
a4b66a1acea6
child 199
5dfb03b8ee4c
permissions
-rw-r--r--

Updated copyright for 2025.

75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
197
2667e16a3379 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 192
diff changeset
3 # Copyright (c) 2016 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter data needed to squash migrations.
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
172
ea7980ded4f3 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 169
diff changeset
12 from PyQt6.QtCore import pyqtSlot
ea7980ded4f3 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 169
diff changeset
13 from PyQt6.QtGui import QIcon
ea7980ded4f3 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 169
diff changeset
14 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
161
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 148
diff changeset
16 from .Ui_DjangoSquashMigrationSelectionDialog import (
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
17 Ui_DjangoSquashMigrationSelectionDialog,
161
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 148
diff changeset
18 )
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class DjangoSquashMigrationSelectionDialog(
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
22 QDialog, Ui_DjangoSquashMigrationSelectionDialog
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
23 ):
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing a dialog to enter data needed to squash migrations.
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
27
148
4cb7aa43845d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
28 def __init__(self, migrations, django, suffix, parent=None):
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Constructor
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
31
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param migrations dictionary containing the available migrations
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type dict
125
d280acf98fb5 - additions for Django > 1.9.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 121
diff changeset
34 @param django reference to the Django project object
d280acf98fb5 - additions for Django > 1.9.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 121
diff changeset
35 @type Project
148
4cb7aa43845d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
36 @param suffix icon suffix
4cb7aa43845d Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
37 @type str
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param parent reference to the parent widget
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type QWidget
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
169
b8f263e05c39 - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
41 super().__init__(parent)
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.setupUi(self)
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
43
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
44 self.__appliedIcon = QIcon(
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
45 os.path.join(
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
46 os.path.dirname(__file__), "icons", "applied-{0}".format(suffix)
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
47 )
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
48 )
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
49
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__migrations = migrations
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
51 self.applicationComboBox.addItems([""] + sorted(self.__migrations.keys()))
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.on_applicationComboBox_activated("")
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
53
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 msh = self.minimumSizeHint()
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.resize(max(self.width(), msh.width()), msh.height())
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
56
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 def __updateOkButton(self):
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 Private slot to set the enabled state of the OK button.
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
61 enabled = bool(self.applicationComboBox.currentText()) and bool(
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
62 self.endMigrationComboBox.currentText()
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
63 )
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
64 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enabled)
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
65
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @pyqtSlot(str)
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 def on_applicationComboBox_activated(self, app):
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 Private slot to update the migrations combo boxes.
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
70
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @param app name of the selected application
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @type str
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.startMigrationComboBox.clear()
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.endMigrationComboBox.clear()
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 if app:
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
77 for combo in [self.startMigrationComboBox, self.endMigrationComboBox]:
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 combo.addItem("")
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 for applied, migration in self.__migrations[app]:
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 if applied:
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 combo.addItem(self.__appliedIcon, migration)
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 else:
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 combo.addItem(migration)
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__updateOkButton()
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
85
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @pyqtSlot(str)
192
a4b66a1acea6 Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 191
diff changeset
87 def on_endMigrationComboBox_activated(self, migration): # noqa: U100
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 Private slot handling the selection of a migration.
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
90
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 @param migration name of the selected migration
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 @type str
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__updateOkButton()
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
95
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 def getData(self):
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Public method to retrieve the data entered by the user.
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
99
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @return tuple containing the selected app, the start migration,
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 the end migration and a flag indicating no optimization is wanted
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 @rtype tuple of three str and a bool
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
169
b8f263e05c39 - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
104 startMigration = (
b8f263e05c39 - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
105 self.startMigrationComboBox.currentText()
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
106 if self.startMigrationComboBox.isEnabled()
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
107 else ""
169
b8f263e05c39 - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
108 )
b8f263e05c39 - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 168
diff changeset
109 name = self.nameEdit.text() if self.nameEdit.isEnabled() else ""
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
110
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 return (
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.applicationComboBox.currentText(),
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 startMigration,
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.endMigrationComboBox.currentText(),
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.noOptimizeCheckBox.isChecked(),
180
64339135bd61 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 175
diff changeset
116 name,
75
0165ce437462 Continued adding support for the various migration commands.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 )

eric ide

mercurial