ProjectDjango/Project.py

changeset 115
90abe0ca004d
parent 113
9b7adb12b409
child 119
5c6209f8abf0
equal deleted inserted replaced
114:eca3e8221306 115:90abe0ca004d
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
2453 2459
2454 args = [] 2460 args = []
2455 args.append("manage.py") 2461 args.append("manage.py")
2456 args.append("showmigrations") 2462 args.append("showmigrations")
2457 args.append("--list") 2463 args.append("--list")
2464 # TODO: add support for --database DATABASE for Django 1.9.0+
2458 2465
2459 migrations = {} 2466 migrations = {}
2460 proc = QProcess() 2467 proc = QProcess()
2461 if path: 2468 if path:
2462 proc.setWorkingDirectory(path) 2469 proc.setWorkingDirectory(path)
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)
2564 args.append("manage.py") 2572 args.append("manage.py")
2565 args.append("squashmigrations") 2573 args.append("squashmigrations")
2566 args.append("--noinput") 2574 args.append("--noinput")
2567 if noOptimize: 2575 if noOptimize:
2568 args.append("--no-optimize") 2576 args.append("--no-optimize")
2577 # TODO: add --squashed-name SQUASHED_NAME for Django 2.0.0+
2569 args.append(app) 2578 args.append(app)
2570 if start: 2579 if start:
2571 args.append(start) 2580 args.append(start)
2572 args.append(end) 2581 args.append(end)
2573 2582
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
3003 3026
3004 args = [] 3027 args = []
3005 args.append(self.__getPythonExecutable()) 3028 args.append(self.__getPythonExecutable())
3006 args.append("manage.py") 3029 args.append("manage.py")
3007 args.append("makemessages") 3030 args.append("makemessages")
3031 # TODO: rename this --locale
3008 args.append("-l") 3032 args.append("-l")
3009 args.append(code) 3033 args.append(code)
3010 3034
3011 try: 3035 try:
3012 wd = self.__sitePath() 3036 wd = self.__sitePath()
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().

eric ide

mercurial