Tue, 24 Nov 2020 19:37:56 +0100
Moved all code dealing with virtual environments to the main Project class.
29
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de> |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the project support for flask-migrate. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import os |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt5.QtCore import pyqtSlot, QObject, QProcess |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt5.QtWidgets import QMenu, QDialog |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from E5Gui import E5MessageBox |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from E5Gui.E5Application import e5App |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from E5Gui.E5Action import E5Action |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | import Utilities |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | from ..FlaskCommandDialog import FlaskCommandDialog |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | class MigrateProject(QObject): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | Class implementing the flask-migrate project support. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | def __init__(self, plugin, project, parent=None): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | Constructor |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @param plugin reference to the plugin object |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @type ProjectFlaskPlugin |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @param project reference to the project object |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @type Project |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | @param parent parent |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @type QObject |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | super(MigrateProject, self).__init__(parent) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__plugin = plugin |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__project = project |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | def initActions(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Public method to define the flask-migrate actions. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | # TODO: implement flask-migrate actions |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | self.actions = [] |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.migrateConfigAct = E5Action( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.tr('Configure Migrate'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.tr('&Configure Migrate'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | 0, 0, |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self, 'flask_config_migrate') |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.migrateConfigAct.setStatusTip(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | 'Shows a dialog to edit the configuration for flask-migrate')) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | self.migrateConfigAct.setWhatsThis(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | """<b>Configure Migrate</b>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """<p>Shows a dialog to edit the configuration for""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ flask-migrate.</p>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | )) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.migrateConfigAct.triggered.connect( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | self.__configureMigrate) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.actions.append(self.migrateConfigAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | self.migrateInstallAct = E5Action( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self.tr('Install flask-migrate'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | self.tr('&Install flask-migrate'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | 0, 0, |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self, 'flask_install_migrate') |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | self.migrateInstallAct.setStatusTip(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | 'Installs the flask-migrate extension into the configured' |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | ' environment')) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | self.migrateInstallAct.setWhatsThis(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | """<b>Install flask-migrate</b>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """<p>Installs the flask-migrate extension into the configured""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ environment using the pip interface.</p>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | )) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | self.migrateInstallAct.triggered.connect( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.__installFlaskMigrate) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | self.actions.append(self.migrateInstallAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.migrateAvailabilityAct = E5Action( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.tr('Check flask-migrate Availability'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | self.tr('Check flask-migrate &Availability'), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | 0, 0, |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self, 'flask_check_migrate') |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | self.migrateAvailabilityAct.setStatusTip(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | 'Check the availability of the flask-migrate extension')) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.migrateAvailabilityAct.setWhatsThis(self.tr( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | """<b>Check flask-migrate Availability</b>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | """<p>Check the availability of the flask-migrate extension.</p>""" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | )) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | self.migrateAvailabilityAct.triggered.connect( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.__checkAvailability) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.actions.append(self.migrateAvailabilityAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | ## action to initialize the database migration system |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | # TODO: add action for flask db init |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | ## action to create a new database migration |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | # TODO: add action for flask db migrate |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | ## action to up- and downgrade a databse |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | # TODO: add action for flask db upgrade |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | # TODO: add action for flask db downgrade |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | def initMenu(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | Public method to initialize the flask-migrate menu. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | @return the menu generated |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | @rtype QMenu |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | menu = QMenu(self.tr("Database")) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | menu.setTearOffEnabled(True) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | menu.addAction(self.migrateConfigAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | menu.addSeparator() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | menu.addAction(self.migrateAvailabilityAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | menu.addAction(self.migrateInstallAct) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | return menu |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | def determineCapability(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | Public method to determine the availability of flask-migrate. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | available = self.__flaskMigrateAvailable() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | self.__project.setCapability("migrate", available) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | self.migrateConfigAct.setEnabled(available) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.migrateInstallAct.setEnabled(not available) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | def __flaskMigrateAvailable(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | Private method to check, if the 'flask-babel' package is available. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | @return flag indicating the availability of 'flask-babel' |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | @rtype bool |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | """ |
30
76c86fe13f36
Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
29
diff
changeset
|
149 | interpreter = self.__project.getVirtualenvInterpreter() |
29
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | if interpreter and Utilities.isinpath(interpreter): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | detector = os.path.join( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | os.path.dirname(__file__), "FlaskMigrateDetector.py") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | proc = QProcess() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | proc.setProcessChannelMode(QProcess.MergedChannels) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | proc.start(interpreter, [detector]) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | finished = proc.waitForFinished(30000) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | if finished and proc.exitCode() == 0: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | return True |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | return False |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | ######################################################## |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | ## Menu related slots below |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | ######################################################## |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | @pyqtSlot() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | def __configureMigrate(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | Private slot to show a dialog to edit the migrate configuration. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | # TODO: implement MigrateConfigDialog |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | from .MigrateConfigDialog import MigrateConfigDialog |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | config = self.__project.getData("migrate", "") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | dlg = MigrateConfigDialog(config) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | if dlg.exec() == QDialog.Accepted: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | config = dlg.getConfiguration() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | self.__project.setData("migrate", "", config) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | def __ensureMigrateConfigured(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | Private method to ensure, that flask-migrate has been configured. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | @return flag indicating successful configuration |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | @rtype bool |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | config = self.__project.getData("migrate", "") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | if not config: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | self.__configureMigrate() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | return True |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | return False |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | @pyqtSlot() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | def __installFlaskMigrate(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | Private slot to install the flask-migrate extension into the configured |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | environment. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | language = e5App().getObject("Project").getProjectLanguage() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | if language == "Python3": |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | venvName = self.__plugin.getPreferences( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | "VirtualEnvironmentNamePy3") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | else: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | venvName = "" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | if venvName: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | interpreter = self.__project.getFullCommand("python") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | pip = e5App().getObject("Pip") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | pip.installPackages(["flask-migrate"], interpreter=interpreter) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | self.determineCapability() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | else: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | E5MessageBox.critical( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | None, |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | self.tr("Install flask-migrate"), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | self.tr("The 'flask-migrate' extension could not be installed" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | " because no virtual environment has been" |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | " configured.")) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | @pyqtSlot() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | def __checkAvailability(self): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | Private slot to check the availability of the 'flask-babel' extension. |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | """ |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | self.determineCapability() |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | if self.__project.hasCapability("migrate"): |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | msg = self.tr("The 'flask-migrate' extension is installed.") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | else: |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | msg = self.tr("The 'flask-migrate' extension is not installed.") |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | E5MessageBox.information( |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | None, |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | self.tr("flask-migrate Availability"), |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | msg) |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | ## slot to initialize the database migration system |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | ## slot to create a new database migration |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | ######################################################### |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | ## slots to up- and downgrade a databse |
a8817ea36587
Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | ######################################################### |