ProjectFlask/FlaskMigrateExtension/MigrateProjectExtension.py

Wed, 25 Nov 2020 19:39:04 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 25 Nov 2020 19:39:04 +0100
changeset 32
80fc8deac8fe
parent 31
e614add95516
child 33
c82b296a21ae
permissions
-rw-r--r--

Finished the 'flask db init' command support.

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
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
43
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
44 self.__e5project = e5App().getObject("Project")
29
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 def initActions(self):
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 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
49 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 # TODO: implement flask-migrate actions
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.actions = []
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.migrateConfigAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.tr('Configure Migrate'),
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 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self, 'flask_config_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.migrateConfigAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 '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
60 self.migrateConfigAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """<b>Configure Migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """<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
63 """ flask-migrate.</p>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.migrateConfigAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.__configureMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.actions.append(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.migrateInstallAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.tr('Install flask-migrate'),
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 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self, 'flask_install_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.migrateInstallAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 '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
76 ' environment'))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.migrateInstallAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 """<b>Install flask-migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """<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
80 """ environment using the pip interface.</p>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.migrateInstallAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__installFlaskMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.actions.append(self.migrateInstallAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.migrateAvailabilityAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.tr('Check flask-migrate Availability'),
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 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self, 'flask_check_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.migrateAvailabilityAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 '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
93 self.migrateAvailabilityAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """<b>Check flask-migrate Availability</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """<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
96 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.migrateAvailabilityAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__checkAvailability)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.actions.append(self.migrateAvailabilityAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
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 ## 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
103 #########################################################
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
104
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
105 self.migrateInitAct = E5Action(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
106 self.tr('Initialize Migrations'),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
107 self.tr('&Initialize Migrations'),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
108 0, 0,
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
109 self, 'flask_init_migrations')
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
110 self.migrateInitAct.setStatusTip(self.tr(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
111 'Initialize support for database migrations'))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
112 self.migrateInitAct.setWhatsThis(self.tr(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
113 """<b>Initialize Migrations</b>"""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
114 """<p>Initializes the support for database migrations to be"""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
115 """ stored in the configured migrations directory.</p>"""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
116 ))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
117 self.migrateInitAct.triggered.connect(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
118 self.__initMigrations)
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
119 self.actions.append(self.migrateInitAct)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 # 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
121
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 ## 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
124 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 # 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
126
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 ## 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
129 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 # 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
131 # 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
132
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def initMenu(self):
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 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
136
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @return the menu generated
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @rtype QMenu
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 menu = QMenu(self.tr("Database"))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 menu.setTearOffEnabled(True)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 menu.addAction(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 menu.addSeparator()
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
145 menu.addAction(self.migrateInitAct)
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
146 menu.addSeparator()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 menu.addAction(self.migrateAvailabilityAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 menu.addAction(self.migrateInstallAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return menu
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 def determineCapability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 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
155 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 available = self.__flaskMigrateAvailable()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.__project.setCapability("migrate", available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.migrateConfigAct.setEnabled(available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.migrateInstallAct.setEnabled(not available)
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
161
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
162 self.migrateInitAct.setEnabled(available)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def __flaskMigrateAvailable(self):
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 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
167
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @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
169 @rtype bool
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
171 interpreter = self.__project.getVirtualenvInterpreter()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 if interpreter and Utilities.isinpath(interpreter):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 detector = os.path.join(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 os.path.dirname(__file__), "FlaskMigrateDetector.py")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 proc = QProcess()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 proc.setProcessChannelMode(QProcess.MergedChannels)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 proc.start(interpreter, [detector])
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 finished = proc.waitForFinished(30000)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if finished and proc.exitCode() == 0:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 return True
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 return False
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
184 def __migrationsDirectory(self, abspath=False):
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
185 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
186 Private method to calculate the path of the configured migrations
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
187 directory.
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
188
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
189 @param abspath flag indicating to return an absolute path
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
190 @type bool
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
191 @return path of the migrations directory
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
192 @rtype str
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
193 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
194 migrations = ""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
195
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
196 self.__ensureMigrateConfigured()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
197
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
198 migrations = self.__project.getData("migrate",
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
199 "migrationsDirectory")
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
200 if migrations:
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
201 if abspath:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
202 migrations = self.__e5project.getAbsoluteUniversalPath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
203 migrations)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
204 else:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
205 workdir = self.__project.getApplication()[0]
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
206 migrations = os.path.relpath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
207 self.__e5project.getAbsoluteUniversalPath(migrations),
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
208 workdir
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
209 )
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
210 else:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
211 if abspath:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
212 migrations = self.__e5project.getAbsoluteUniversalPath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
213 "migrations")
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
214
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
215 return migrations
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
216
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 ########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 ## Menu related slots below
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 ########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 def __configureMigrate(self):
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 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
225 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 # TODO: implement MigrateConfigDialog
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 from .MigrateConfigDialog import MigrateConfigDialog
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 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 dlg = MigrateConfigDialog(config)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 if dlg.exec() == QDialog.Accepted:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 config = dlg.getConfiguration()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.__project.setData("migrate", "", config)
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 def __ensureMigrateConfigured(self):
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 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
238 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 if not config:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.__configureMigrate()
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 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 def __installFlaskMigrate(self):
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 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
247 environment.
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 language = e5App().getObject("Project").getProjectLanguage()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 if language == "Python3":
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 venvName = self.__plugin.getPreferences(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 "VirtualEnvironmentNamePy3")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 venvName = ""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 if venvName:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 interpreter = self.__project.getFullCommand("python")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 pip = e5App().getObject("Pip")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 pip.installPackages(["flask-migrate"], interpreter=interpreter)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 E5MessageBox.critical(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 self.tr("Install flask-migrate"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 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
265 " because no virtual environment has been"
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 " configured."))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 def __checkAvailability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 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
272 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 if self.__project.hasCapability("migrate"):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 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
276 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 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
278 E5MessageBox.information(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 self.tr("flask-migrate Availability"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 msg)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 ## 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
285 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
287 @pyqtSlot()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
288 def __initMigrations(self):
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
289 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
290 Private slot to initialize the database migration system.
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
291 """
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
292 title = self.tr("Initialize Migrations")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
293
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
294 self.__ensureMigrateConfigured()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
295 migrations = self.__migrationsDirectory()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
296
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
297 args = ["init"]
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
298 if migrations:
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
299 args += ["--directory", migrations]
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
300
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
301 multidb = E5MessageBox.yesNo(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
302 None,
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
303 self.tr("Multiple Databases"),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
304 self.tr("""Shall the support for multiple databases be"""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
305 """ activated?"""))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
306 if multidb:
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
307 args.append("--multidb")
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
308
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
309 dlg = FlaskCommandDialog(
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
310 self.__project, title=title,
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
311 msgSuccess=self.tr("\nMigrations initialized successfully.")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
312 )
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
313 if dlg.startCommand("db", args):
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
314 dlg.exec()
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
315 if dlg.normalExit():
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
316 for root, _dirs, files in os.walk(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
317 self.__migrationsDirectory(abspath=True)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
318 ):
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
319 for fileName in files:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
320 fullName = os.path.join(root, fileName)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
321 self.__e5project.appendFile(fullName)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
322
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
323 browser = (e5App().getObject("ProjectBrowser")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
324 .getProjectBrowser("others"))
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
325 alembic = os.path.join(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
326 self.__migrationsDirectory(abspath=True),
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
327 "alembic.ini"
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
328 )
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
329 browser.sourceFile.emit(alembic)
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
330
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 ## 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
333 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 ## 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
337 #########################################################

eric ide

mercurial