ProjectFlask/FlaskConfigDialog.py

changeset 52
caddf9f36f9f
parent 49
3866bd742041
child 60
02243723ac17
--- a/ProjectFlask/FlaskConfigDialog.py	Wed Dec 02 20:04:05 2020 +0100
+++ b/ProjectFlask/FlaskConfigDialog.py	Sat Dec 05 17:18:17 2020 +0100
@@ -15,18 +15,21 @@
 from .Ui_FlaskConfigDialog import Ui_FlaskConfigDialog
 
 import UI.PixmapCache
+import Preferences
 
 
 class FlaskConfigDialog(QDialog, Ui_FlaskConfigDialog):
     """
     Class implementing a dialog to configure project specific flask settings.
     """
-    def __init__(self, configuration, parent=None):
+    def __init__(self, configuration, project, parent=None):
         """
         Constructor
         
         @param configuration current project specific configuration
         @type dict
+        @param project reference to the flask project object
+        @type Project
         @param parent reference to the parent widget
         @type QWidget
         """
@@ -36,6 +39,8 @@
         self.newEnvironmentButton.setIcon(
             UI.PixmapCache.getIcon("virtualenvConfig"))
         
+        self.__project = project
+        
         self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
         
         self.virtualEnvironmentComboBox.addItem("")
@@ -87,31 +92,25 @@
         """
         Private slot to open a dialog for adding a new virtual environment.
         """
-##        self.__virtualEnvManager.createVirtualEnv()
-        from VirtualEnv.VirtualenvConfigurationDialog import (
-            VirtualenvConfigurationDialog
+        from .FlaskVirtualenvConfigurationDialog import (
+            FlaskVirtualenvConfigurationDialog
         )
         
-        dlg = VirtualenvConfigurationDialog(self)
+        e5Project = e5App().getObject("Project")
+        dlg = FlaskVirtualenvConfigurationDialog(
+            e5Project.getProjectPath(),
+            e5Project.getProjectName(),
+            self)
         if dlg.exec() == QDialog.Accepted:
             resultDict = dlg.getData()
             
-            if resultDict["envType"] == "conda":
-                # conda environments are not suitable
-                return
-            else:
-                # now do the call
-                from VirtualEnv.VirtualenvExecDialog import (
-                    VirtualenvExecDialog
-                )
-                dia = VirtualenvExecDialog(
-                    resultDict, self.__virtualEnvManager, self)
-                dia.show()
-                dia.start(resultDict["arguments"])
-                dia.exec()
-            
-            # reload the list of environments
-            currentEnvName = self.virtualEnvironmentComboBox.currentText()
+            # now do the call
+            from VirtualEnv.VirtualenvExecDialog import VirtualenvExecDialog
+            dia = VirtualenvExecDialog(
+                resultDict, self.__virtualEnvManager, self)
+            dia.show()
+            dia.start(resultDict["arguments"])
+            dia.exec()
             
             self.virtualEnvironmentComboBox.clear()
             self.virtualEnvironmentComboBox.addItem("")
@@ -121,4 +120,28 @@
                 ))
             )
             
-            self.virtualEnvironmentComboBox.setCurrentText(currentEnvName)
+            self.virtualEnvironmentComboBox.setCurrentText(
+                resultDict["logicalName"])
+            
+            self.__installFlask(resultDict["targetDirectory"])
+    
+    def __installFlask(self, venvDir):
+        """
+        Private method to install flask into the newly created environment.
+        
+        @param venvtDir  directory containing the virtual environment
+        @type str
+        """
+        from PipInterface.PipDialog import PipDialog
+        
+        interpreter = self.__project.getFullCommand("python", venvDir)
+        if Preferences.getPip("PipSearchIndex"):
+            indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
+            args = ["-m", "pip", "install", "--index-url", indexUrl]
+        else:
+            args = ["-m", "pip", "install"]
+        args.append("flask")
+        dia = PipDialog(self.tr('Install Flask'), self)
+        res = dia.startProcess(interpreter, args)
+        if res:
+            dia.exec()

eric ide

mercurial