ProjectDjango/Project.py

changeset 78
5822c2e2b1c7
parent 77
f8e92eaaba6e
child 80
34b6482eb9f6
--- a/ProjectDjango/Project.py	Tue Dec 20 12:26:33 2016 +0100
+++ b/ProjectDjango/Project.py	Tue Dec 20 16:15:21 2016 +0100
@@ -270,6 +270,24 @@
         self.aboutDjangoAct.triggered.connect(self.__djangoInfo)
         self.actions.append(self.aboutDjangoAct)
         
+        ##############################
+        ## check action below       ##
+        ##############################
+        
+        self.checkAct = E5Action(
+            self.tr('Check Project'),
+            self.tr('Check Project'),
+            0, 0,
+            self, 'django_check_project')
+        self.checkAct.setStatusTip(self.tr(
+            'Inspects the Django project for common problems'))
+        self.checkAct.setWhatsThis(self.tr(
+            """<b>Check Project</b>"""
+            """<p>This inspects the Django project for common problems.</p>"""
+        ))
+        self.checkAct.triggered.connect(self.__performCheck)
+        self.actions.append(self.checkAct)
+        
         self.__initDatabaseActions()
         self.__initDatabaseSqlActions()
         self.__initMigrationActions()
@@ -816,6 +834,8 @@
         menu.addAction(self.startGlobalApplicationAct)
         menu.addAction(self.startLocalApplicationAct)
         menu.addSeparator()
+        menu.addAction(self.checkAct)
+        menu.addSeparator()
         menu.addMenu(self.__initDatabaseMenu())
         menu.addMenu(self.__initMigrationsMenu())
         menu.addSeparator()
@@ -3219,3 +3239,46 @@
                     self.tr('The translations editor process ({0}) could'
                             ' not be started.')
                     .format(os.path.basename(editor)))
+    
+    ##################################################################
+    ## slots below implement check functions
+    ##################################################################
+    
+    def __performCheck(self):
+        """
+        Private slot to inspect the project for common problems.
+        """
+        try:
+            path = self.__sitePath()
+        except DjangoNoSiteSelectedException:
+            return
+        
+        from .DjangoCheckOptionsDialog import DjangoCheckOptionsDialog
+        dlg = DjangoCheckOptionsDialog(
+            self.__getPythonExecutable(), path, self.getRecentApplications(),
+            self.__plugin.getPreferences("CheckDeployMode"),
+        )
+        if dlg.exec_() == QDialog.Accepted:
+            deploy, tags, appsStr, settingsFile = dlg.getData()
+            self.__plugin.setPreferences("CheckDeployMode", deploy)
+            if appsStr != "":
+                self.setMostRecentApplication(appsStr)
+            apps = appsStr.split()
+            
+            args = []
+            args.append(self.__getPythonExecutable())
+            args.append("manage.py")
+            args.append("check")
+            for tag in tags:
+                args.append("--tag")
+                args.append(tag)
+            if deploy:
+                args.append("--deploy")
+                if settingsFile:
+                    args.append("--settings={0}".format(settingsFile))
+            args += apps
+            
+            dia = DjangoDialog(self.tr("Check Project"))
+            res = dia.startProcess(args, path, mergedOutput=True)
+            if res:
+                dia.exec_()

eric ide

mercurial