ProjectFlask/FlaskMigrateExtension/MigrateProjectExtension.py

Tue, 24 Nov 2020 19:23:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 24 Nov 2020 19:23:28 +0100
changeset 29
a8817ea36587
child 30
76c86fe13f36
permissions
-rw-r--r--

Started implementing support for the 'flask-migrate' extension.

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 # TODO: move virtual env stuff to Project
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 def initActions(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 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
50 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 # TODO: implement flask-migrate actions
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.actions = []
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.migrateConfigAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.tr('Configure Migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.tr('&Configure Migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self, 'flask_config_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.migrateConfigAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 '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
61 self.migrateConfigAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """<b>Configure Migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """<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
64 """ flask-migrate.</p>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.migrateConfigAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__configureMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.actions.append(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.migrateInstallAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.tr('Install flask-migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.tr('&Install flask-migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self, 'flask_install_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.migrateInstallAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 '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
77 ' environment'))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.migrateInstallAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """<b>Install flask-migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """<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
81 """ environment using the pip interface.</p>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.migrateInstallAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__installFlaskMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.actions.append(self.migrateInstallAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.migrateAvailabilityAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.tr('Check flask-migrate Availability'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.tr('Check flask-migrate &Availability'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self, 'flask_check_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.migrateAvailabilityAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 '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
94 self.migrateAvailabilityAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """<b>Check flask-migrate Availability</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """<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
97 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.migrateAvailabilityAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.__checkAvailability)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.actions.append(self.migrateAvailabilityAct)
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 ## 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
104 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 # 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
106
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 ## 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
109 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 # 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
111
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 ## 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
114 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 # 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
116 # 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
117
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def initMenu(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 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
121
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @return the menu generated
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @rtype QMenu
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 = QMenu(self.tr("Database"))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 menu.setTearOffEnabled(True)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 menu.addAction(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 menu.addSeparator()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 menu.addAction(self.migrateAvailabilityAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 menu.addAction(self.migrateInstallAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 return menu
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 def determineCapability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 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
138 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 available = self.__flaskMigrateAvailable()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__project.setCapability("migrate", 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 self.migrateConfigAct.setEnabled(available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.migrateInstallAct.setEnabled(not available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 def __flaskMigrateAvailable(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 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
148
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 @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
150 @rtype bool
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 venvName = self.__plugin.getPreferences("VirtualEnvironmentNamePy3")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 interpreter = self.__virtualEnvManager.getVirtualenvInterpreter(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 venvName)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 if interpreter and Utilities.isinpath(interpreter):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 detector = os.path.join(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 os.path.dirname(__file__), "FlaskMigrateDetector.py")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 proc = QProcess()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 proc.setProcessChannelMode(QProcess.MergedChannels)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 proc.start(interpreter, [detector])
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 finished = proc.waitForFinished(30000)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 if finished and proc.exitCode() == 0:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 return True
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 return False
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 ########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 ## Menu related slots below
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 ########################################################
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 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 def __configureMigrate(self):
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 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
175 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 # TODO: implement MigrateConfigDialog
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 from .MigrateConfigDialog import MigrateConfigDialog
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 dlg = MigrateConfigDialog(config)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 if dlg.exec() == QDialog.Accepted:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 config = dlg.getConfiguration()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.__project.setData("migrate", "", config)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def __ensureMigrateConfigured(self):
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 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
188
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @return flag indicating successful configuration
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @rtype bool
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 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 if not config:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.__configureMigrate()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 return True
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 return False
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 def __installFlaskMigrate(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 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
203 environment.
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 language = e5App().getObject("Project").getProjectLanguage()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 if language == "Python3":
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 venvName = self.__plugin.getPreferences(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 "VirtualEnvironmentNamePy3")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 venvName = ""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 if venvName:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 interpreter = self.__project.getFullCommand("python")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 pip = e5App().getObject("Pip")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 pip.installPackages(["flask-migrate"], interpreter=interpreter)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 E5MessageBox.critical(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.tr("Install flask-migrate"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 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
221 " because no virtual environment has been"
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 " configured."))
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 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 def __checkAvailability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 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
228 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 if self.__project.hasCapability("migrate"):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 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
232 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 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
234 E5MessageBox.information(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 self.tr("flask-migrate Availability"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 msg)
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 ## 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
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 ## 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
245 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 ## 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
249 #########################################################

eric ide

mercurial