ProjectFlask/FlaskMigrateExtension/MigrateProjectExtension.py

Thu, 26 Nov 2020 20:11:25 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 26 Nov 2020 20:11:25 +0100
changeset 34
a91c6a1eb23f
parent 33
c82b296a21ae
child 35
65a377b7a52c
permissions
-rw-r--r--

Added the action to upgrade or downgrade the database.

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
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
11 import glob
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt5.QtCore import pyqtSlot, QObject, QProcess
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
14 from PyQt5.QtWidgets import QMenu, QDialog, QInputDialog, QLineEdit
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from E5Gui import E5MessageBox
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from E5Gui.E5Application import e5App
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from E5Gui.E5Action import E5Action
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 import Utilities
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from ..FlaskCommandDialog import FlaskCommandDialog
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
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
25 # TODO: add a submenu with action for the commands with command options
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
26 # TODO: add a submenu to show the created SQL commands (--sql option)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class MigrateProject(QObject):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 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
30 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 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
32 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @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
36 @type ProjectFlaskPlugin
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @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
38 @type Project
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param parent parent
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type QObject
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 super(MigrateProject, self).__init__(parent)
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 self.__plugin = plugin
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__project = project
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
46
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
47 self.__e5project = e5App().getObject("Project")
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 def initActions(self):
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 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
52 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.actions = []
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.migrateConfigAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.tr('Configure Migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.tr('&Configure Migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self, 'flask_config_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.migrateConfigAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 '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
62 self.migrateConfigAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """<b>Configure Migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """<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
65 """ flask-migrate.</p>"""
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.migrateConfigAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__configureMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.actions.append(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.migrateInstallAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.tr('Install flask-migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.tr('&Install flask-migrate'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self, 'flask_install_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.migrateInstallAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 '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'))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.migrateInstallAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """<b>Install flask-migrate</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """<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
82 """ environment using the pip interface.</p>"""
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.migrateInstallAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__installFlaskMigrate)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.actions.append(self.migrateInstallAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.migrateAvailabilityAct = E5Action(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.tr('Check flask-migrate Availability'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.tr('Check flask-migrate &Availability'),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 0, 0,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self, 'flask_check_migrate')
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.migrateAvailabilityAct.setStatusTip(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 '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
95 self.migrateAvailabilityAct.setWhatsThis(self.tr(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """<b>Check flask-migrate Availability</b>"""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """<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
98 ))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.migrateAvailabilityAct.triggered.connect(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__checkAvailability)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.actions.append(self.migrateAvailabilityAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 ## 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
105 #########################################################
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
106
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
107 self.migrateInitAct = E5Action(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
108 self.tr('Initialize Migrations'),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
109 self.tr('&Initialize Migrations'),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
110 0, 0,
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
111 self, 'flask_init_migrations')
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
112 self.migrateInitAct.setStatusTip(self.tr(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
113 'Initialize support for database migrations'))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
114 self.migrateInitAct.setWhatsThis(self.tr(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
115 """<b>Initialize Migrations</b>"""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
116 """<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
117 """ 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
118 ))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
119 self.migrateInitAct.triggered.connect(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
120 self.__initMigrations)
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
121 self.actions.append(self.migrateInitAct)
29
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 ## 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
125 #########################################################
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
126
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
127 self.migrateCreateAct = E5Action(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
128 self.tr('Create Migration'),
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
129 self.tr('&Create Migration'),
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
130 0, 0,
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
131 self, 'flask_create_migration')
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
132 self.migrateCreateAct.setStatusTip(self.tr(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
133 'Create a new migration for the current database'))
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
134 self.migrateCreateAct.setWhatsThis(self.tr(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
135 """<b>Create Migration</b>"""
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
136 """<p>Creates a new migration for the current database"""
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
137 """ and stores it in the configured migrations directory.</p>"""
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
138 ))
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
139 self.migrateCreateAct.triggered.connect(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
140 self.__createMigration)
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
141 self.actions.append(self.migrateCreateAct)
29
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 ## 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
145 #########################################################
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
146
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
147 self.upgradeDatabaseAct = E5Action(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
148 self.tr('Upgrade Database'),
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
149 self.tr('&Upgrade Database'),
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
150 0, 0,
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
151 self, 'flask_upgrade_database')
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
152 self.upgradeDatabaseAct.setStatusTip(self.tr(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
153 'Upgrade the database to the current migration'))
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
154 self.upgradeDatabaseAct.setWhatsThis(self.tr(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
155 """<b>Upgrade Database</b>"""
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
156 """<p>Upgrades the database to the current migration.</p>"""
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
157 ))
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
158 self.upgradeDatabaseAct.triggered.connect(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
159 self.__upgradeDatabase)
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
160 self.actions.append(self.upgradeDatabaseAct)
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
161
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 # TODO: add action for flask db downgrade
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
163 self.downgradeDatabaseAct = E5Action(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
164 self.tr('Downgrade Database'),
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
165 self.tr('&Downgrade Database'),
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
166 0, 0,
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
167 self, 'flask_downgrade_database')
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
168 self.downgradeDatabaseAct.setStatusTip(self.tr(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
169 'Downgrade the database to the previous version'))
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
170 self.downgradeDatabaseAct.setWhatsThis(self.tr(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
171 """<b>Downgrade Database</b>"""
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
172 """<p>Downgrades the database to the previous version.</p>"""
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
173 ))
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
174 self.downgradeDatabaseAct.triggered.connect(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
175 self.__downgradeDatabase)
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
176 self.actions.append(self.downgradeDatabaseAct)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 def initMenu(self):
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 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
181
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @return the menu generated
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 @rtype QMenu
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 menu = QMenu(self.tr("Database"))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 menu.setTearOffEnabled(True)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 menu.addAction(self.migrateConfigAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 menu.addSeparator()
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
190 menu.addAction(self.migrateInitAct)
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
191 menu.addSeparator()
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
192 menu.addAction(self.migrateCreateAct)
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
193 menu.addSeparator()
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
194 menu.addAction(self.upgradeDatabaseAct)
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
195 menu.addAction(self.downgradeDatabaseAct)
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
196 menu.addSeparator()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 menu.addAction(self.migrateAvailabilityAct)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 menu.addAction(self.migrateInstallAct)
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 return menu
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 def determineCapability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 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
205 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 available = self.__flaskMigrateAvailable()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 self.__project.setCapability("migrate", available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.migrateConfigAct.setEnabled(available)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.migrateInstallAct.setEnabled(not available)
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
211
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
212 self.migrateInitAct.setEnabled(available)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 def __flaskMigrateAvailable(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 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
217
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 @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
219 @rtype bool
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 """
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
221 interpreter = self.__project.getVirtualenvInterpreter()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 if interpreter and Utilities.isinpath(interpreter):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 detector = os.path.join(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 os.path.dirname(__file__), "FlaskMigrateDetector.py")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 proc = QProcess()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 proc.setProcessChannelMode(QProcess.MergedChannels)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 proc.start(interpreter, [detector])
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 finished = proc.waitForFinished(30000)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 if finished and proc.exitCode() == 0:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 return True
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 return False
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
234 def __migrationsDirectory(self, abspath=False):
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
235 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
236 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
237 directory.
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
238
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
239 @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
240 @type bool
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
241 @return path of the migrations directory
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
242 @rtype str
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
243 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
244 migrations = ""
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
245
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
246 self.__ensureMigrateConfigured()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
247
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
248 migrations = self.__project.getData("migrate",
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
249 "migrationsDirectory")
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
250 if migrations:
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
251 if abspath:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
252 migrations = self.__e5project.getAbsoluteUniversalPath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
253 migrations)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
254 else:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
255 workdir = self.__project.getApplication()[0]
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
256 migrations = os.path.relpath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
257 self.__e5project.getAbsoluteUniversalPath(migrations),
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
258 workdir
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
259 )
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
260 else:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
261 if abspath:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
262 migrations = self.__e5project.getAbsoluteUniversalPath(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
263 "migrations")
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
264
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
265 return migrations
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
266
29
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 ## Menu related slots below
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 ########################################################
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 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 def __configureMigrate(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 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
275 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 from .MigrateConfigDialog import MigrateConfigDialog
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 dlg = MigrateConfigDialog(config)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 if dlg.exec() == QDialog.Accepted:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 config = dlg.getConfiguration()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 self.__project.setData("migrate", "", config)
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 def __ensureMigrateConfigured(self):
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 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
287 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 config = self.__project.getData("migrate", "")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 if not config:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 self.__configureMigrate()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 def __installFlaskMigrate(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 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
296 environment.
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 language = e5App().getObject("Project").getProjectLanguage()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 if language == "Python3":
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 venvName = self.__plugin.getPreferences(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 "VirtualEnvironmentNamePy3")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 venvName = ""
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 if venvName:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 interpreter = self.__project.getFullCommand("python")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 pip = e5App().getObject("Pip")
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 pip.installPackages(["flask-migrate"], interpreter=interpreter)
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 E5MessageBox.critical(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 self.tr("Install flask-migrate"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 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
314 " because no virtual environment has been"
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 " configured."))
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 @pyqtSlot()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 def __checkAvailability(self):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 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
321 """
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 self.determineCapability()
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 if self.__project.hasCapability("migrate"):
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 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
325 else:
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 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
327 E5MessageBox.information(
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 None,
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 self.tr("flask-migrate Availability"),
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 msg)
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 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 ## 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
334 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
336 @pyqtSlot()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
337 def __initMigrations(self):
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
338 """
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
339 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
340 """
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
341 title = self.tr("Initialize Migrations")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
342
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
343 self.__ensureMigrateConfigured()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
344 migrations = self.__migrationsDirectory()
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
345
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
346 args = ["init"]
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
347 if migrations:
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
348 args += ["--directory", migrations]
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
349
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
350 multidb = E5MessageBox.yesNo(
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
351 None,
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
352 self.tr("Multiple Databases"),
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
353 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
354 """ activated?"""))
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
355 if multidb:
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
356 args.append("--multidb")
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
357
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
358 dlg = FlaskCommandDialog(
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
359 self.__project, title=title,
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
360 msgSuccess=self.tr("\nMigrations initialized successfully.")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
361 )
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
362 if dlg.startCommand("db", args):
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
363 dlg.exec()
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
364 if dlg.normalExit():
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
365 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
366 self.__migrationsDirectory(abspath=True)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
367 ):
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
368 for fileName in files:
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
369 fullName = os.path.join(root, fileName)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
370 self.__e5project.appendFile(fullName)
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
371
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
372 browser = (e5App().getObject("ProjectBrowser")
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
373 .getProjectBrowser("others"))
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
374 alembic = os.path.join(
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
375 self.__migrationsDirectory(abspath=True),
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
376 "alembic.ini"
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
377 )
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
378 browser.sourceFile.emit(alembic)
31
e614add95516 Added the action to initialize the migrations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
379
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 ## 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
382 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
384 @pyqtSlot()
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
385 def __createMigration(self):
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
386 """
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
387 Private slot to create a new database migration.
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
388 """
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
389 title = self.tr("Create Migration")
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
390
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
391 self.__ensureMigrateConfigured()
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
392 migrations = self.__migrationsDirectory()
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
393
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
394 message, ok = QInputDialog.getText(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
395 None,
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
396 title,
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
397 self.tr("Enter a short message for the migration:"),
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
398 QLineEdit.Normal)
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
399 if ok:
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
400 args = ["migrate"]
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
401 if migrations:
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
402 args += ["--directory", migrations]
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
403 if message:
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
404 args += ["--message", message]
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
405
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
406 dlg = FlaskCommandDialog(
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
407 self.__project, title=title,
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
408 msgSuccess=self.tr("\nMigration created successfully.")
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
409 )
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
410 if dlg.startCommand("db", args):
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
411 dlg.exec()
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
412 if dlg.normalExit():
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
413 versionsPattern = os.path.join(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
414 self.__migrationsDirectory(abspath=True),
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
415 "versions", "*.py")
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
416 for fileName in glob.iglob(versionsPattern):
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
417 self.__e5project.appendFile(fileName)
33
c82b296a21ae Added the 'flask db migrate' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
418
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 #########################################################
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 ## 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
421 #########################################################
34
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
422
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
423 @pyqtSlot()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
424 def __upgradeDatabase(self):
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
425 """
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
426 Private slot to upgrade the database to the current migration.
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
427 """
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
428 title = self.tr("Upgrade Database")
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
429
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
430 self.__ensureMigrateConfigured()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
431 migrations = self.__migrationsDirectory()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
432
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
433 args = ["upgrade"]
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
434 if migrations:
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
435 args += ["--directory", migrations]
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
436
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
437 dlg = FlaskCommandDialog(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
438 self.__project, title=title,
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
439 msgSuccess=self.tr("\nDatabase upgraded successfully.")
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
440 )
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
441 if dlg.startCommand("db", args):
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
442 dlg.exec()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
443
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
444 @pyqtSlot()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
445 def __downgradeDatabase(self):
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
446 """
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
447 Private slot to downgrade the database to the previous version.
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
448 """
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
449 title = self.tr("downgrade Database")
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
450
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
451 self.__ensureMigrateConfigured()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
452 migrations = self.__migrationsDirectory()
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
453
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
454 args = ["downgrade"]
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
455 if migrations:
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
456 args += ["--directory", migrations]
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
457
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
458 dlg = FlaskCommandDialog(
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
459 self.__project, title=title,
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
460 msgSuccess=self.tr("\nDatabase downgraded successfully.")
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
461 )
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
462 if dlg.startCommand("db", args):
a91c6a1eb23f Added the action to upgrade or downgrade the database.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 33
diff changeset
463 dlg.exec()

eric ide

mercurial