ProjectDjango/Project.py

changeset 70
77f58dfc7eaa
parent 65
bceb78c1b1f0
child 72
0f95786f7868
--- a/ProjectDjango/Project.py	Mon Aug 15 17:50:01 2016 +0200
+++ b/ProjectDjango/Project.py	Tue Nov 08 19:07:42 2016 +0100
@@ -16,6 +16,7 @@
 import sys
 import os
 import re
+import shutil
 
 from PyQt5.QtCore import QObject, QTimer, QUrl, QFileInfo
 from PyQt5.QtGui import QDesktopServices
@@ -1031,7 +1032,7 @@
             else:
                 cmd = self.__getDjangoAdminCommand(variant)
                 if isWindowsPlatform():
-                    if variant.lower() in cmd.lower():
+                    if cmd:
                         variants.append(variant)
                 else:
                     try:
@@ -1135,13 +1136,23 @@
         else:
             if isWindowsPlatform():
                 debugEnv = self.__getDebugEnvironment(language)
-                cmd = os.path.join(debugEnv, "Scripts", "django-admin.py")
+                for cmd in [
+                    # standard Python
+                    os.path.join(debugEnv, "Scripts", "django-admin.py"),
+                    # PyPy
+                    os.path.join(debugEnv, "bin", "django-admin.py"),
+                ]:
+                    if os.path.exists(cmd):
+                        break
+                else:
+                    cmd = ""
             else:
                 if language == "Python2":
                     cmds = ["django-admin2.py", "django-admin2",
                             "django-admin.py-2.7", "django-admin.py-2.6"]
                 elif language == "Python3":
                     cmds = ["django-admin3.py", "django-admin3",
+                            "django-admin.py-3.6", "django-admin.py-3.5",
                             "django-admin.py-3.4", "django-admin.py-3.3",
                             "django-admin.py-3.2"]
                 else:
@@ -1162,28 +1173,50 @@
         @return python command (string)
         """
         language = self.__e5project.getProjectLanguage()
-        pythonExe = "python"
+        virtualEnv = self.__getVirtualEnvironment()
         if isWindowsPlatform():
-            pythonExe += ".exe"
+            pythonExeList = ["python.exe", "pypy.exe"]
+            if not virtualEnv:
+                virtualEnv = self.__getDebugEnvironment(language)
+            for pythonExe in pythonExeList:
+                for python in [
+                    os.path.join(virtualEnv, "Scripts", pythonExe),
+                    os.path.join(virtualEnv, "bin", pythonExe),
+                    os.path.join(virtualEnv, pythonExe)
+                ]:
+                    if os.path.exists(python):
+                       break
+                else:
+                    python = ""
+                
+                if python:
+                    break
+            else:
+                python = ""
         else:
             if language == "Python3":
-                pythonExe = "python3"
+                pythonExeList = ["python3", "pypy3"]
             elif language == "Python2":
-                pythonExe = "python2"
-        virtualEnv = self.__getVirtualEnvironment()
-        if isWindowsPlatform() and not virtualEnv:
-            virtualEnv = self.__getDebugEnvironment(language)
-        if virtualEnv:
-            if isWindowsPlatform():
-                python = os.path.join(virtualEnv, "Scripts", pythonExe)
-                if not os.path.exists(python):
-                    python = os.path.join(virtualEnv, pythonExe)
+                pythonExeList = ["python2", "pypy2"]
+            if not virtualEnv:
+                pythonExeList.append("pypy")
+                virtualEnv = self.__getDebugEnvironment(language)
+            
+            for pythonExe in pythonExeList:
+                for python in [
+                    os.path.join(virtualEnv, "bin", pythonExe),
+                    # omit the version character
+                    os.path.join(virtualEnv, "bin", pythonExe)[:-1],
+                ]:
+                    if os.path.exists(python):
+                       break
+                else:
+                    python = ""
+            
+                if python:
+                    break
             else:
-                python = os.path.join(virtualEnv, "bin", pythonExe)
-                if not os.path.exists(python):
-                    python = python[:-1]    # omit the version character
-        else:
-            python = pythonExe
+                python = ""
         
         return python
     
@@ -1199,8 +1232,8 @@
             self.tr("About Django"),
             self.tr(
                 "<p>Django is a high-level Python Web framework that"
-                " encourages rapid "
-                "development and clean, pragmatic design.</p>"
+                " encourages rapid development and clean, pragmatic"
+                " design.</p>"
                 "<p><table>"
                 "<tr><td>Version:</td><td>{0}</td></tr>"
                 "<tr><td>URL:</td><td><a href=\"{1}\">"
@@ -1372,6 +1405,11 @@
         """
         title = self.tr("Start Django Project")
         
+        # remove the project directory if it exists already
+        ppath = os.path.join(path, projectName)
+        if os.path.exists(ppath):
+            shutil.rmtree(ppath, ignore_errors=True)
+        
         args = []
         if Utilities.isWindowsPlatform():
             args.append(self.__getPythonExecutable())
@@ -1445,6 +1483,11 @@
         """
         title = self.tr("Start Django Application")
         
+        # remove the application directory if it exists already
+        apath = os.path.join(path, applName)
+        if os.path.exists(apath):
+            shutil.rmtree(apath, ignore_errors=True)
+        
         args = []
         if isGlobal:
             if Utilities.isWindowsPlatform():

eric ide

mercurial