ProjectFlask/FlaskMigrateExtension/MigrateProjectExtension.py

Tue, 24 Nov 2020 19:37:56 +0100

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

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 #########################################################

eric ide

mercurial