--- 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_()