2012 args.append(self.__getPythonExecutable()) |
2012 args.append(self.__getPythonExecutable()) |
2013 args.append("manage.py") |
2013 args.append("manage.py") |
2014 args.append("runserver") |
2014 args.append("runserver") |
2015 if self.__plugin.getPreferences("UseIPv6"): |
2015 if self.__plugin.getPreferences("UseIPv6"): |
2016 args.append("--ipv6") |
2016 args.append("--ipv6") |
|
2017 # TODO: add support for --nothreading |
2017 addr = self.__plugin.getPreferences("ServerAddress") |
2018 addr = self.__plugin.getPreferences("ServerAddress") |
2018 if addr: |
2019 if addr: |
2019 args.append(addr) |
2020 args.append(addr) |
2020 |
2021 |
2021 try: |
2022 try: |
2100 |
2101 |
2101 args = [] |
2102 args = [] |
2102 args.append(self.__getPythonExecutable()) |
2103 args.append(self.__getPythonExecutable()) |
2103 args.append("manage.py") |
2104 args.append("manage.py") |
2104 args.append("inspectdb") |
2105 args.append("inspectdb") |
|
2106 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2105 |
2107 |
2106 try: |
2108 try: |
2107 path = self.__sitePath() |
2109 path = self.__sitePath() |
2108 except DjangoNoSiteSelectedException: |
2110 except DjangoNoSiteSelectedException: |
2109 return |
2111 return |
2134 args = [] |
2136 args = [] |
2135 args.append(self.__getPythonExecutable()) |
2137 args.append(self.__getPythonExecutable()) |
2136 args.append("manage.py") |
2138 args.append("manage.py") |
2137 args.append("flush") |
2139 args.append("flush") |
2138 args.append("--noinput") |
2140 args.append("--noinput") |
|
2141 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2139 |
2142 |
2140 dia = DjangoDialog( |
2143 dia = DjangoDialog( |
2141 title, |
2144 title, |
2142 msgSuccess=self.tr("Database tables flushed" |
2145 msgSuccess=self.tr("Database tables flushed" |
2143 " successfully.")) |
2146 " successfully.")) |
2155 args = Utilities.parseOptionString(consoleCmd) |
2158 args = Utilities.parseOptionString(consoleCmd) |
2156 args[0] = Utilities.getExecutablePath(args[0]) |
2159 args[0] = Utilities.getExecutablePath(args[0]) |
2157 args.append(self.__getPythonExecutable()) |
2160 args.append(self.__getPythonExecutable()) |
2158 args.append("manage.py") |
2161 args.append("manage.py") |
2159 args.append("dbshell") |
2162 args.append("dbshell") |
|
2163 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2160 try: |
2164 try: |
2161 wd = self.__sitePath() |
2165 wd = self.__sitePath() |
2162 self.__adjustWorkingDirectory(args, wd) |
2166 self.__adjustWorkingDirectory(args, wd) |
2163 started, pid = QProcess.startDetached(args[0], args[1:], wd) |
2167 started, pid = QProcess.startDetached(args[0], args[1:], wd) |
2164 if not started: |
2168 if not started: |
2196 |
2200 |
2197 args = [] |
2201 args = [] |
2198 args.append(self.__getPythonExecutable()) |
2202 args.append(self.__getPythonExecutable()) |
2199 args.append("manage.py") |
2203 args.append("manage.py") |
2200 args.append(command) |
2204 args.append(command) |
|
2205 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2201 args += apps |
2206 args += apps |
2202 |
2207 |
2203 fileFilter = self.tr("SQL Files (*.sql)") |
2208 fileFilter = self.tr("SQL Files (*.sql)") |
2204 |
2209 |
2205 dia = DjangoDialog(title, fixed=True, linewrap=False, |
2210 dia = DjangoDialog(title, fixed=True, linewrap=False, |
2311 args.append(self.__getPythonExecutable()) |
2316 args.append(self.__getPythonExecutable()) |
2312 args.append("manage.py") |
2317 args.append("manage.py") |
2313 args.append("sqlmigrate") |
2318 args.append("sqlmigrate") |
2314 if backwards: |
2319 if backwards: |
2315 args.append("--backwards") |
2320 args.append("--backwards") |
|
2321 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2316 args.append(app) |
2322 args.append(app) |
2317 args.append(migration) |
2323 args.append(migration) |
2318 |
2324 |
2319 fileFilter = self.tr("SQL Files (*.sql)") |
2325 fileFilter = self.tr("SQL Files (*.sql)") |
2320 |
2326 |
2523 args.append(migration.replace(" ", "_")) |
2530 args.append(migration.replace(" ", "_")) |
2524 if dryRun: |
2531 if dryRun: |
2525 args.append("--dry-run") |
2532 args.append("--dry-run") |
2526 if empty: |
2533 if empty: |
2527 args.append("--empty") |
2534 args.append("--empty") |
|
2535 # TODO: add support for --merge (Enables fixing of migration conflicts.) |
2528 if apps: |
2536 if apps: |
2529 args += apps |
2537 args += apps |
2530 |
2538 |
2531 dia = DjangoDialog(title, showInput=True) |
2539 dia = DjangoDialog(title, showInput=True) |
2532 res = dia.startProcess(args, path) |
2540 res = dia.startProcess(args, path) |
2588 |
2597 |
2589 args = [] |
2598 args = [] |
2590 args.append(self.__getPythonExecutable()) |
2599 args.append(self.__getPythonExecutable()) |
2591 args.append("manage.py") |
2600 args.append("manage.py") |
2592 args.append("diffsettings") |
2601 args.append("diffsettings") |
|
2602 # TODO: add support for --default MODULE as of Django 1.11.0 |
|
2603 # TODO: add support for --output {hash,unified} as of Django 2.0.0 |
|
2604 # with hash being the default |
2593 |
2605 |
2594 try: |
2606 try: |
2595 path = self.__sitePath() |
2607 path = self.__sitePath() |
2596 except DjangoNoSiteSelectedException: |
2608 except DjangoNoSiteSelectedException: |
2597 return |
2609 return |
2612 args[0] = Utilities.getExecutablePath(args[0]) |
2624 args[0] = Utilities.getExecutablePath(args[0]) |
2613 args.append(self.__getPythonExecutable()) |
2625 args.append(self.__getPythonExecutable()) |
2614 args.append("manage.py") |
2626 args.append("manage.py") |
2615 args.append("shell") |
2627 args.append("shell") |
2616 language = self.__e5project.getProjectLanguage() |
2628 language = self.__e5project.getProjectLanguage() |
|
2629 # TODO: add support for --interface {ipython,bpython,python} as of Djanngo 1.10.0 |
|
2630 # TODO: don't use this for Django 1.10.0+ |
2617 if language == "Python2": |
2631 if language == "Python2": |
2618 if self.__plugin.getPreferences("UsePlainPythonPy2"): |
2632 if self.__plugin.getPreferences("UsePlainPythonPy2"): |
2619 args.append("--plain") |
2633 args.append("--plain") |
2620 else: |
2634 else: |
2621 if self.__plugin.getPreferences("UsePlainPythonPy3"): |
2635 if self.__plugin.getPreferences("UsePlainPythonPy3"): |
2638 |
2652 |
2639 def __createCacheTables(self): |
2653 def __createCacheTables(self): |
2640 """ |
2654 """ |
2641 Private slot to create the tables for the SQL caching backend. |
2655 Private slot to create the tables for the SQL caching backend. |
2642 """ |
2656 """ |
|
2657 # TODO: this doesn't need the tables anymore |
|
2658 # TODO: add support for the --database DATABASE option for Django 1.9.0+ |
2643 title = self.tr("Create Cache Tables") |
2659 title = self.tr("Create Cache Tables") |
2644 |
2660 |
2645 try: |
2661 try: |
2646 wd = self.__sitePath() |
2662 wd = self.__sitePath() |
2647 except DjangoNoSiteSelectedException: |
2663 except DjangoNoSiteSelectedException: |
2695 args.append("dumpdata") |
2711 args.append("dumpdata") |
2696 args.append("--format={0}".format(dumpFormat)) |
2712 args.append("--format={0}".format(dumpFormat)) |
2697 args.append("--indent={0}".format(indent)) |
2713 args.append("--indent={0}".format(indent)) |
2698 for excl in excls: |
2714 for excl in excls: |
2699 args.append("--exclude={0}".format(excl)) |
2715 args.append("--exclude={0}".format(excl)) |
|
2716 # TODO: add support for --database DATABASE for Django 1.9.0+ |
2700 args += appls |
2717 args += appls |
2701 |
2718 |
2702 if dumpFormat == "json": |
2719 if dumpFormat == "json": |
2703 fileFilters = self.tr("JSON Files (*.json)") |
2720 fileFilters = self.tr("JSON Files (*.json)") |
2704 elif dumpFormat == "xml": |
2721 elif dumpFormat == "xml": |
2721 try: |
2738 try: |
2722 wd = self.__sitePath() |
2739 wd = self.__sitePath() |
2723 except DjangoNoSiteSelectedException: |
2740 except DjangoNoSiteSelectedException: |
2724 return |
2741 return |
2725 |
2742 |
|
2743 # TODO: use the old DjangoLoaddataDataDialog for __runTestServer before modifying this |
2726 from .DjangoLoaddataDataDialog import DjangoLoaddataDataDialog |
2744 from .DjangoLoaddataDataDialog import DjangoLoaddataDataDialog |
2727 dlg = DjangoLoaddataDataDialog(self, self.__ui) |
2745 dlg = DjangoLoaddataDataDialog(self, self.__ui) |
2728 if dlg.exec_() == QDialog.Accepted: |
2746 if dlg.exec_() == QDialog.Accepted: |
2729 fixtures = dlg.getData() |
2747 fixtures = dlg.getData() |
2730 |
2748 |
2731 args = [] |
2749 args = [] |
2732 args.append(self.__getPythonExecutable()) |
2750 args.append(self.__getPythonExecutable()) |
2733 args.append("manage.py") |
2751 args.append("manage.py") |
2734 args.append("loaddata") |
2752 args.append("loaddata") |
|
2753 # TODO: add support for --exclude EXCLUDE as of Django 1.11.0 |
|
2754 # TODO: add support for --ignorenonexistent |
|
2755 # TODO: add support for --database DATABASE for Django 1.9.0+ |
|
2756 # TODO: add support for --app APP_LABEL |
2735 args += fixtures |
2757 args += fixtures |
2736 |
2758 |
2737 dia = DjangoDialog(title) |
2759 dia = DjangoDialog(title) |
2738 res = dia.startProcess(args, wd) |
2760 res = dia.startProcess(args, wd) |
2739 if res: |
2761 if res: |
2793 fixtures. |
2815 fixtures. |
2794 """ |
2816 """ |
2795 consoleCmd = self.__isSpawningConsole( |
2817 consoleCmd = self.__isSpawningConsole( |
2796 self.__plugin.getPreferences("ConsoleCommand"))[1] |
2818 self.__plugin.getPreferences("ConsoleCommand"))[1] |
2797 if consoleCmd: |
2819 if consoleCmd: |
|
2820 # TODO: use the old DjangoLoaddataDataDialog for this |
2798 from .DjangoLoaddataDataDialog import DjangoLoaddataDataDialog |
2821 from .DjangoLoaddataDataDialog import DjangoLoaddataDataDialog |
2799 dlg = DjangoLoaddataDataDialog(self, self.__ui) |
2822 dlg = DjangoLoaddataDataDialog(self, self.__ui) |
2800 if dlg.exec_() == QDialog.Accepted: |
2823 if dlg.exec_() == QDialog.Accepted: |
2801 fixtures = dlg.getData() |
2824 fixtures = dlg.getData() |
2802 |
2825 |
3056 if locale: |
3080 if locale: |
3057 args = [] |
3081 args = [] |
3058 args.append(self.__getPythonExecutable()) |
3082 args.append(self.__getPythonExecutable()) |
3059 args.append("manage.py") |
3083 args.append("manage.py") |
3060 args.append("makemessages") |
3084 args.append("makemessages") |
|
3085 # TODO: this seems to be not supported anymore |
3061 args.append("--no-obsolete") |
3086 args.append("--no-obsolete") |
|
3087 # TODO: rename this --locale |
3062 args.append("-l") |
3088 args.append("-l") |
3063 args.append(locale) |
3089 args.append(locale) |
3064 argsLists.append(args) |
3090 argsLists.append(args) |
3065 |
3091 |
3066 if len(argsLists) == 0: |
3092 if len(argsLists) == 0: |
3104 if locale: |
3130 if locale: |
3105 args = [] |
3131 args = [] |
3106 args.append(self.__getPythonExecutable()) |
3132 args.append(self.__getPythonExecutable()) |
3107 args.append("manage.py") |
3133 args.append("manage.py") |
3108 args.append("makemessages") |
3134 args.append("makemessages") |
|
3135 # TODO: rename this --locale |
3109 args.append("-l") |
3136 args.append("-l") |
3110 args.append(locale) |
3137 args.append(locale) |
3111 argsLists.append(args) |
3138 argsLists.append(args) |
3112 |
3139 |
3113 if len(argsLists) == 0: |
3140 if len(argsLists) == 0: |
3135 args = [] |
3162 args = [] |
3136 args.append(self.__getPythonExecutable()) |
3163 args.append(self.__getPythonExecutable()) |
3137 args.append("manage.py") |
3164 args.append("manage.py") |
3138 args.append("makemessages") |
3165 args.append("makemessages") |
3139 args.append("-a") |
3166 args.append("-a") |
|
3167 # TODO: this seems to be not supported anymore |
3140 args.append("--no-obsolete") |
3168 args.append("--no-obsolete") |
3141 |
3169 |
3142 try: |
3170 try: |
3143 wd = self.__sitePath() |
3171 wd = self.__sitePath() |
3144 except DjangoNoSiteSelectedException: |
3172 except DjangoNoSiteSelectedException: |
3216 args.append(self.__getPythonExecutable()) |
3244 args.append(self.__getPythonExecutable()) |
3217 args.append("manage.py") |
3245 args.append("manage.py") |
3218 args.append("compilemessages") |
3246 args.append("compilemessages") |
3219 args.append("-l") |
3247 args.append("-l") |
3220 args.append(locale) |
3248 args.append(locale) |
|
3249 # TODO: add support for --use-fuzzy per Preferences |
3221 argsLists.append(args) |
3250 argsLists.append(args) |
3222 |
3251 |
3223 if len(argsLists) == 0: |
3252 if len(argsLists) == 0: |
3224 E5MessageBox.warning( |
3253 E5MessageBox.warning( |
3225 None, |
3254 None, |
3251 |
3280 |
3252 args = [] |
3281 args = [] |
3253 args.append(self.__getPythonExecutable()) |
3282 args.append(self.__getPythonExecutable()) |
3254 args.append("manage.py") |
3283 args.append("manage.py") |
3255 args.append("compilemessages") |
3284 args.append("compilemessages") |
|
3285 # TODO: add support for --use-fuzzy per Preferences |
3256 |
3286 |
3257 try: |
3287 try: |
3258 wd = self.__sitePath() |
3288 wd = self.__sitePath() |
3259 except DjangoNoSiteSelectedException: |
3289 except DjangoNoSiteSelectedException: |
3260 E5MessageBox.warning( |
3290 E5MessageBox.warning( |
3339 |
3369 |
3340 dia = DjangoDialog(self.tr("Check Project")) |
3370 dia = DjangoDialog(self.tr("Check Project")) |
3341 res = dia.startProcess(args, path, mergedOutput=True) |
3371 res = dia.startProcess(args, path, mergedOutput=True) |
3342 if res: |
3372 if res: |
3343 dia.exec_() |
3373 dia.exec_() |
|
3374 |
|
3375 # TODO: add support for sendtestemail for Django 1.9.0+ |
|
3376 # sendtestemail [email [email ...]] |
|
3377 # --managers Mails the email addresses specified in MANAGERS using mail_managers(). |
|
3378 # --admins Mails the email addresses specified in ADMINS using mail_admins(). |