ProjectFlask/Project.py

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

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

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

2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de>
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Flask project support.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
12 from PyQt5.QtCore import (
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
13 pyqtSlot, QObject, QProcess, QProcessEnvironment, QTimer, QFileInfo
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
14 )
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
15 from PyQt5.QtWidgets import QMenu, QDialog
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
17 from E5Gui import E5MessageBox, E5FileDialog
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from E5Gui.E5Action import E5Action
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from E5Gui.E5Application import e5App
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from Globals import isWindowsPlatform
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import UI.PixmapCache
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Utilities
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
26 from .FlaskBabelExtension.PyBabelProjectExtension import PyBabelProject
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
27 from .FlaskMigrateExtension.MigrateProjectExtension import MigrateProject
15
3f5c05eb2d5f Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
28
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class Project(QObject):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Class implementing the Flask project support.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 def __init__(self, plugin, iconSuffix, parent=None):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Constructor
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param plugin reference to the plugin object
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type ProjectFlaskPlugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param iconSuffix suffix for the icons
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param parent parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type QObject
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 super(Project, self).__init__(parent)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__plugin = plugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__iconSuffix = iconSuffix
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__ui = parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__e5project = e5App().getObject("Project")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__menus = {} # dictionary with references to menus
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
55 self.__formsBrowser = None
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
56 self.__hooksInstalled = False
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
58 self.__serverDialog = None
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
59 self.__routesDialog = None
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
60 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
61
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
62 self.__projectData = {
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
63 "flask": {},
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
64 "pybabel": {},
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
65 "migrate": {},
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
66 }
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
67
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__flaskVersions = {
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 "python": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 "flask": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "werkzeug": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 }
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
73
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
74 self.__capabilities = {}
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
75
27
b73e9af0d496 Added actions to check the availability of the flask-babel extension and to install it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
76 self.__pybabelProject = PyBabelProject(self.__plugin, self, self)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
77 self.__migrateProject = MigrateProject(self.__plugin, self, self)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def initActions(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Public method to define the Flask actions.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.actions = []
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
84
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
85 ##############################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
86 ## run actions below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
87 ##############################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
88
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
89 self.runServerAct = E5Action(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
90 self.tr('Run Server'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
91 self.tr('Run &Server'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
92 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 self, 'flask_run_server')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
94 self.runServerAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 'Starts the Flask Web server'))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
96 self.runServerAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
97 """<b>Run Server</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
98 """<p>Starts the Flask Web server.</p>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
99 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
100 self.runServerAct.triggered.connect(self.__runServer)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
101 self.actions.append(self.runServerAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
102
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
103 self.runDevServerAct = E5Action(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
104 self.tr('Run Development Server'),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
105 self.tr('Run &Development Server'),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
106 0, 0,
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
107 self, 'flask_run_dev_server')
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
108 self.runDevServerAct.setStatusTip(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
109 'Starts the Flask Web server in development mode'))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
110 self.runDevServerAct.setWhatsThis(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
111 """<b>Run Development Server</b>"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
112 """<p>Starts the Flask Web server in development mode.</p>"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
113 ))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
114 self.runDevServerAct.triggered.connect(self.__runDevelopmentServer)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
115 self.actions.append(self.runDevServerAct)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
116
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
117 self.askForServerOptionsAct = E5Action(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
118 self.tr('Ask for Server Start Options'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
119 self.tr('Ask for Server Start Options'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
120 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
121 self, 'flask_ask_server_options')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
122 self.askForServerOptionsAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
123 'Ask for server start options'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
124 self.askForServerOptionsAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
125 """<b>Ask for Server Start Options</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
126 """<p>Asks for server start options before the Flask Web server"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
127 """ is started. If this is unchecked, the server is started with"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
128 """ default parameters.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
129 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
130 self.askForServerOptionsAct.setCheckable(True)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
131 self.actions.append(self.askForServerOptionsAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
132
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
133 ###############################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
134 ## shell action below ##
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
135 ###############################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
136
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
137 self.runPythonShellAct = E5Action(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
138 self.tr('Start Flask Python Console'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
139 self.tr('Start Flask &Python Console'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
140 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
141 self, 'flask_python_console')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
142 self.runPythonShellAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
143 'Starts an interactive Python interpreter'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
144 self.runPythonShellAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
145 """<b>Start Flask Python Console</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
146 """<p>Starts an interactive Python interpreter.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
147 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
148 self.runPythonShellAct.triggered.connect(self.__runPythonShell)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
149 self.actions.append(self.runPythonShellAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
150
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
151 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
152 ## routes action below ##
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
153 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
154
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
155 self.showRoutesAct = E5Action(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
156 self.tr('Show Routes'),
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
157 self.tr('Show &Routes'),
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
158 0, 0,
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
159 self, 'flask_show_routes')
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
160 self.showRoutesAct.setStatusTip(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
161 'Shows a dialog with the routes of the flask app'))
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
162 self.showRoutesAct.setWhatsThis(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
163 """<b>Show Routes</b>"""
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
164 """<p>Shows a dialog with the routes of the flask app.</p>"""
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
165 ))
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
166 self.showRoutesAct.triggered.connect(self.__showRoutes)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
167 self.actions.append(self.showRoutesAct)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
168
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 ##################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 ## documentation action below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 ##################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 self.documentationAct = E5Action(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 self.tr('Documentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 self.tr('D&ocumentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
177 self, 'flask_documentation')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
178 self.documentationAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
179 'Shows the help viewer with the Flask documentation'))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
180 self.documentationAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
181 """<b>Documentation</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
182 """<p>Shows the help viewer with the Flask documentation.</p>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
183 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
184 self.documentationAct.triggered.connect(self.__showDocumentation)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
185 self.actions.append(self.documentationAct)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 ## about action below ##
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.aboutFlaskAct = E5Action(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.tr('About Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.tr('About &Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 0, 0,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self, 'flask_about')
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.aboutFlaskAct.setStatusTip(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 'Shows some information about Flask'))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.aboutFlaskAct.setWhatsThis(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """<b>About Flask</b>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """<p>Shows some information about Flask.</p>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 ))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.aboutFlaskAct.triggered.connect(self.__flaskInfo)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.actions.append(self.aboutFlaskAct)
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
204
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
205 self.__pybabelProject.initActions()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
206 self.__migrateProject.initActions()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 def initMenu(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 Public method to initialize the Flask menu.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @return the menu generated
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 @rtype QMenu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.__menus = {} # clear menus references
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
217 self.__menus["pybabel"] = self.__pybabelProject.initMenu()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
218 self.__menus["migrate"] = self.__migrateProject.initMenu()
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
219
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 menu = QMenu(self.tr('&Flask'), self.__ui)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 menu.setTearOffEnabled(True)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
223 menu.addAction(self.runServerAct)
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
224 menu.addAction(self.runDevServerAct)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
225 menu.addAction(self.askForServerOptionsAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
226 menu.addSeparator()
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
227 menu.addAction(self.runPythonShellAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
228 menu.addSeparator()
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
229 menu.addAction(self.showRoutesAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
230 menu.addSeparator()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
231 menu.addMenu(self.__menus["migrate"])
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
232 menu.addSeparator()
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
233 menu.addMenu(self.__menus["pybabel"])
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
234 menu.addSeparator()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
235 menu.addAction(self.documentationAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
236 menu.addSeparator()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 menu.addAction(self.aboutFlaskAct)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.__menus["main"] = menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 return menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 def getMenu(self, name):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 Public method to get a reference to the requested menu.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 @param name name of the menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 @return reference to the menu or None, if no menu with the given
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 name exists
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 @rtype QMenu or None
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 if name in self.__menus:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 return self.__menus[name]
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 return None
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 def getMenuNames(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 Public method to get the names of all menus.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 @return menu names
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 return list(self.__menus.keys())
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
267 def projectOpenedHooks(self):
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
268 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
269 Public method to add our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
270 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
271 if self.__e5project.getProjectType() == "Flask":
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
272 self.__formsBrowser = (
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
273 e5App().getObject("ProjectBrowser")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
274 .getProjectBrowser("forms"))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
275 self.__formsBrowser.addHookMethodAndMenuEntry(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
276 "newForm", self.newForm, self.tr("New template..."))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
277
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
278 self.__determineCapabilities()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
279
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
280 self.__pybabelProject.projectOpenedHooks()
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
281
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
282 self.__hooksInstalled = True
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
283
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
284 def projectClosedHooks(self):
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
285 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
286 Public method to remove our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
287 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
288 self.__pybabelProject.projectClosedHooks()
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
289
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
290 if self.__hooksInstalled:
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
291 self.__formsBrowser.removeHookMethod("newForm")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
292 self.__formsBrowser = None
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
293
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
294 self.__hooksInstalled = False
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
295
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
296 def newForm(self, dirPath):
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
297 """
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
298 Public method to create a new form.
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
299
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
300 @param dirPath full directory path for the new form file
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
301 @type str
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
302 """
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
303 from .FormSelectionDialog import FormSelectionDialog
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
304
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
305 dlg = FormSelectionDialog()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
306 if dlg.exec() == QDialog.Accepted:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
307 template = dlg.getTemplateText()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
308
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
309 fileFilters = self.tr(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
310 "HTML Files (*.html);;"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
311 "HTML Files (*.htm);;"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
312 "All Files (*)")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
313 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
314 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
315 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
316 dirPath,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
317 fileFilters,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
318 None,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
319 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
320 if fname:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
321 ext = QFileInfo(fname).suffix()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
322 if not ext:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
323 ex = selectedFilter.split("(*")[1].split(")")[0]
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
324 if ex:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
325 fname += ex
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
326
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
327 if os.path.exists(fname):
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
328 res = E5MessageBox.yesNo(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
329 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
330 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
331 self.tr("""The file already exists! Overwrite"""
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
332 """ it?"""),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
333 icon=E5MessageBox.Warning)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
334 if not res:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
335 # user selected to not overwrite
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
336 return
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
337
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
338 try:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
339 with open(fname, "w", encoding="utf-8") as f:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
340 f.write(template)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
341 except OSError as err:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
342 E5MessageBox.critical(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
343 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
344 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
345 self.tr("<p>The new form file <b>{0}</b> could"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
346 " not be created.</p><p>Problem: {1}</p>")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
347 .format(fname, str(err)))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
348 return
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
349
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
350 self.__e5project.appendFile(fname)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
351 self.__formsBrowser.sourceFile.emit(fname)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
352
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 ## slots below implement general functionality
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 def projectClosed(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 Public method to handle the closing of a project.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 """
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
361 for dlg in (self.__serverDialog, self.__routesDialog):
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
362 if dlg is not None:
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
363 dlg.close()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 def supportedPythonVariants(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 Public method to get the supported Python variants.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 @return list of supported Python variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 variants = []
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 virtEnv = self.__getVirtualEnvironment()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 if virtEnv:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 fullCmds = Utilities.getExecutablePaths("flask")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 for fullCmd in fullCmds:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 try:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 with open(fullCmd, 'r', encoding='utf-8') as f:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 l0 = f.readline()
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
390 except OSError:
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 l0 = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 if self.__isSuitableForVariant("Python3", l0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 break
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 return variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 def __isSuitableForVariant(self, variant, line0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 Private method to test, if a detected command file is suitable for the
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 given Python variant.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 @param variant Python variant to test for
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 @param line0 first line of the executable
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 @return flag indicating a suitable file was found
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 @rtype bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 l0 = line0.lower()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 ok = (variant.lower() in l0 or
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 "{0}.".format(variant[-1]) in l0)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 ok |= "pypy3" in l0
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 return ok
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 def __getVirtualEnvironment(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 Private method to get the path of the virtual environment.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 @return path of the virtual environment
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 language = self.__e5project.getProjectLanguage()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 if language == "Python3":
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 venvName = self.__plugin.getPreferences(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 "VirtualEnvironmentNamePy3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 venvName = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 if venvName:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 virtEnv = self.__virtualEnvManager.getVirtualenvDirectory(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 venvName)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 virtEnv = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 if virtEnv and not os.path.exists(virtEnv):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 virtEnv = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 return virtEnv # __IGNORE_WARNING_M834__
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 def getFlaskCommand(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 Public method to build the Flask command.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 @return full flask command
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
448 return self.getFullCommand("flask")
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
449
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
450 def getFullCommand(self, command):
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
451 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
452 Public method to get the full command for a given command name.
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
453
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
454 @param command command name
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
455 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
456 @return full command
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
457 @rtype str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
458 """
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 virtualEnv = self.__getVirtualEnvironment()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 fullCmds = [
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
462 os.path.join(virtualEnv, "Scripts", command + '.exe'),
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
463 os.path.join(virtualEnv, "bin", command + '.exe'),
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
464 command # fall back to just cmd
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 ]
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 fullCmds = [
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
468 os.path.join(virtualEnv, "bin", command),
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
469 os.path.join(virtualEnv, "local", "bin", command),
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
470 Utilities.getExecutablePath(command),
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
471 command # fall back to just cmd
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 ]
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
473 for command in fullCmds:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
474 if os.path.exists(command):
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
475 break
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
476 return command
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 @pyqtSlot()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 def __flaskInfo(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 Private slot to show some info about Flask.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 versions = self.getFlaskVersionStrings()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
484 url = "https://palletsprojects.com/p/flask/"
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 msgBox = E5MessageBox.E5MessageBox(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 E5MessageBox.Question,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 self.tr("About Flask"),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 "<p>Flask is a lightweight WSGI web application framework."
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 " It is designed to make getting started quick and easy,"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 " with the ability to scale up to complex applications.</p>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 "<p><table>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 "<tr><td>Flask Version:</td><td>{0}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 "<tr><td>Werkzeug Version:</td><td>{1}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 "<tr><td>Python Version:</td><td>{2}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 "<tr><td>Flask URL:</td><td><a href=\"{3}\">"
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
498 "The Pallets Projects - Flask</a></td></tr>"
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
499 "</table></p>",
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
500 "Do not translate the program names."
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 ).format(versions["flask"], versions["werkzeug"],
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 versions["python"], url),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 modal=True,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 buttons=E5MessageBox.Ok)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 msgBox.setIconPixmap(UI.PixmapCache.getPixmap(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 os.path.join("ProjectFlask", "icons",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 "flask64-{0}".format(self.__iconSuffix))))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 msgBox.exec()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 def getFlaskVersionStrings(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 Public method to get the Flask, Werkzeug and Python versions as a
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 string.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 @return dictionary containing the Flask, Werkzeug and Python versions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 @rtype dict
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 if not self.__flaskVersions["flask"]:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 cmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 proc = QProcess()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 proc.start(cmd, ["--version"])
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 if proc.waitForFinished(10000):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 output = str(proc.readAllStandardOutput(), "utf-8")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 for line in output.lower().splitlines():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 key, version = line.strip().split(None, 1)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 self.__flaskVersions[key] = version
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 return self.__flaskVersions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
530 def prepareRuntimeEnvironment(self, development=False):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
531 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
532 Public method to prepare a QProcessEnvironment object and determine
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
533 the appropriate working directory.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
534
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
535 @param development flag indicating development mode
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
536 @type bool
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
537 @return tuple containing the working directory and a prepared
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
538 environment object to be used with QProcess
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
539 @rtype tuple of (str, QProcessEnvironment)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
540 """
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
541 workdir, app = self.getApplication()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
542 env = QProcessEnvironment.systemEnvironment()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
543 env.insert("FLASK_APP", app)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
544 if development:
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
545 env.insert("FLASK_ENV", "development")
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
546
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
547 return workdir, env
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
548
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
549 def getApplication(self):
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
550 """
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
551 Public method to determine the application name and the respective
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
552 working directory.
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
553
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
554 @return tuple containing the working directory and the application name
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
555 @rtype tuple of (str, str)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
556 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
557 mainScript = self.__e5project.getMainScript(normalized=True)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
558 if not mainScript:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
559 E5MessageBox.critical(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
560 self.__ui,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
561 self.tr("Prepare Environment"),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
562 self.tr("""The project has no configured main script"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
563 """ (= Flask application). Aborting..."""))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
564 return "", None
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
565
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
566 scriptPath, scriptName = os.path.split(mainScript)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
567 if scriptName == "__init__.py":
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
568 workdir, app = os.path.split(scriptPath)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
569 else:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
570 workdir, app = scriptPath, scriptName
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
571 return workdir, app
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
572
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
573 def getData(self, category, key):
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
574 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
575 Public method to get data stored in the project store.
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
576
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
577 @param category data category
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
578 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
579 @param key data key
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
580 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
581 @return referenced data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
582 @rtype any
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
583 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
584 if category not in self.__projectData:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
585 self.__projectData[category] = {}
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
586
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
587 if not self.__projectData[category]:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
588 data = self.__e5project.getData(
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
589 "PROJECTTYPESPECIFICDATA", category)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
590 if data is not None:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
591 self.__projectData[category] = data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
592
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
593 data = self.__projectData[category]
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
594 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
595 # return complete category dictionary
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
596 return data
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
597 elif key in data:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
598 # return individual entry
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
599 return data[key]
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
600 else:
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
601 # failure
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
602 return None
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
603
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
604 def setData(self, category, key, value):
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
605 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
606 Public method to store data in the project store.
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
607
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
608 @param category data category
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
609 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
610 @param key data key
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
611 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
612 @param value data to be stored
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
613 @type any (serializable type)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
614 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
615 if category not in self.__projectData:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
616 self.__projectData[category] = {}
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
617
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
618 if not self.__projectData[category]:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
619 data = self.__e5project.getData(
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
620 "PROJECTTYPESPECIFICDATA", category)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
621 if data is not None:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
622 self.__projectData[category] = data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
623
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
624 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
625 # update the complete category
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
626 self.__projectData[category] = value
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
627 else:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
628 # update individual entry
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
629 self.__projectData[category][key] = value
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
630
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
631 self.__e5project.setData(
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
632 "PROJECTTYPESPECIFICDATA", category, self.__projectData[category])
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
633
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
634 def __determineCapabilities(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
635 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
636 Private method to determine capabilities provided by supported
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
637 extensions.
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
638 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
639 # 1. support for flask-babel (i.e. pybabel)
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
640 self.__pybabelProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
641
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
642 # 2. support for flask-migrate
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
643 self.__migrateProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
644
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
645 def hasCapability(self, key):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
646 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
647 Public method to check, if a capability is available.
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
648
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
649 @param key key of the capability to check
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
650 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
651 @return flag indicating the availability of the capability
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
652 @rtype bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
653 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
654 try:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
655 return self.__capabilities[key]
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
656 except KeyError:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
657 return False
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
658
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
659 def setCapability(self, key, available):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
660 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
661 Public method to set the availability status of a capability.
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
662
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
663 @param key key of the capability to set
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
664 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
665 @param available flag indicating the availability of the capability
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
666 @type bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
667 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
668 self.__capabilities[key] = available
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
669
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
670 ##################################################################
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
671 ## slot below implements project specific flask configuration
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
672 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
673
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
674 @pyqtSlot()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
675 def __configureFlaskForProject(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
676 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
677 Private slot to configure the project specific flask parameters.
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
678 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
679 # TODO: implement the flask project config dialog
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
680 # 1. check boxes to override flask-babel and flask-migrate
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
681 # 2. support for project specific virtual environment
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
682
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
683 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
684 ## slot below implements documentation function
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
685 ##################################################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
686
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
687 def __showDocumentation(self):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
688 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
689 Private slot to show the helpviewer with the Flask documentation.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
690 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
691 page = self.__plugin.getPreferences("FlaskDocUrl")
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
692 self.__ui.launchHelpViewer(page)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
693
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 ##################################################################
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
695 ## slots below implement run functions for the server
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
698 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
699 def __runServer(self, development=False):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
701 Private slot to start the Flask Web server.
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
703 @param development flag indicating development mode
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 @type bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
706 from .RunServerDialog import RunServerDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
707
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
708 if self.__serverDialog is not None:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
709 self.__serverDialog.close()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
710
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
711 askForOptions = self.askForServerOptionsAct.isChecked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
712 dlg = RunServerDialog(self.__plugin, self)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
713 if dlg.startServer(development=development,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
714 askForOptions=askForOptions):
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
715 dlg.show()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
716 self.__serverDialog = dlg
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
718 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
719 def __runDevelopmentServer(self):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
721 Private slot to start the Flask Web server in development mode.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
722 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
723 self.__runServer(development=True)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
724
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
725 ##################################################################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
726 ## slots below implement functions for the flask console
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
727 ##################################################################
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
728
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
729 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
730 def __runPythonShell(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
731 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
732 Private slot to start a Python console in the app context.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
733 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
734 workdir, env = self.prepareRuntimeEnvironment()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
735 if env is not None:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
736 command = self.getFlaskCommand()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
737
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
738 consoleCmd = self.__plugin.getPreferences("ConsoleCommand")
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
739 if consoleCmd:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
740 self.__terminatePythonShell()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
741
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
742 args = Utilities.parseOptionString(consoleCmd)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
743 args[0] = Utilities.getExecutablePath(args[0])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
744 args += [command, "shell"]
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
745
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
746 self.__shellProcess = QProcess()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
747 self.__shellProcess.setProcessEnvironment(env)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
748 self.__shellProcess.setWorkingDirectory(workdir)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
749 self.__shellProcess.finished.connect(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
750 self.__shellProcessFinished)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
751
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
752 self.__shellProcess.start(args[0], args[1:])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
753 self.__shellProcess.waitForStarted(10000)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
754
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
755 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
756 def __shellProcessFinished(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
757 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
758 Private slot connected to the finished signal.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
759 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
760 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
761
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
762 def __terminatePythonShell(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
763 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
764 Private method to terminate the current Python console.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
765 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
766 if (
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
767 self.__shellProcess is not None and
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
768 self.__shellProcess.state() != QProcess.NotRunning
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
769 ):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
770 self.__shellProcess.terminate()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
771 QTimer.singleShot(2000, self.__shellProcess.kill)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
772 self.__shellProcess.waitForFinished(3000)
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
773
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
774 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
775 ## slots below implement various debugging functions
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
776 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
777
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
778 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
779 def __showRoutes(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
780 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
781 Private slot showing all URL dispatch routes.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
782 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
783 from .RoutesDialog import RoutesDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
784
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
785 if self.__routesDialog is not None:
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
786 self.__routesDialog.close()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
787
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
788 dlg = RoutesDialog(self)
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
789 if dlg.showRoutes():
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
790 dlg.show()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
791 self.__routesDialog = dlg

eric ide

mercurial