diff --git a/spug_api/apps/account/management/commands/update.py b/spug_api/apps/account/management/commands/update.py index f6558bc..9fd2f4a 100644 --- a/spug_api/apps/account/management/commands/update.py +++ b/spug_api/apps/account/management/commands/update.py @@ -2,7 +2,6 @@ # Copyright: (c) # Released under the MIT License. from django.core.management.base import BaseCommand -from django.core.management import call_command from django.conf import settings import subprocess import requests @@ -16,7 +15,7 @@ class Command(BaseCommand): res = requests.get('https://gitee.com/api/v5/repos/openspug/spug/releases/latest').json() version = res.get('tag_name') if not version: - return self.stderr.write(self.style.ERROR('获取新版本失败,排除网络问题后可至官方论坛反馈')) + return self.stderr.write(self.style.ERROR('获取新版本失败,排除网络问题后请附带输出内容至官方论坛反馈')) if version == settings.SPUG_VERSION: return self.stdout.write(self.style.SUCCESS('当前已是最新版本')) answer = input(f'发现新版本 {version} 是否更新[y|n]?') @@ -32,7 +31,7 @@ class Command(BaseCommand): ] task = subprocess.Popen(' && '.join(commands), shell=True) if task.wait() != 0: - return self.stderr.write(self.style.ERROR('获取更新失败,排除网络问题后可至官方论坛反馈。')) + return self.stderr.write(self.style.ERROR('获取更新失败,排除网络问题后请附带输出内容至官方论坛反馈。')) # update api commands = [ @@ -42,7 +41,7 @@ class Command(BaseCommand): ] task = subprocess.Popen(' && '.join(commands), shell=True) if task.wait() != 0: - return self.stderr.write(self.style.ERROR('获取更新失败,排除网络问题后可至官方论坛反馈。')) + return self.stderr.write(self.style.ERROR('获取更新失败,排除网络问题后请附带输出内容至官方论坛反馈。')) # update dep commands = [ @@ -51,12 +50,18 @@ class Command(BaseCommand): ] task = subprocess.Popen(' && '.join(commands), shell=True) if task.wait() != 0: - return self.stderr.write(self.style.ERROR('更新依赖包失败,排除网络问题后可至官方论坛反馈。')) + return self.stderr.write(self.style.ERROR('更新依赖包失败,排除网络问题后请附带输出内容至官方论坛反馈。')) # update db apps = [x.split('.')[-1] for x in settings.INSTALLED_APPS if x.startswith('apps.')] - call_command('makemigrations', *apps) - call_command('migrate') + commands = [ + f'cd {settings.BASE_DIR}', + f'./manage.py makemigrations ' + ' '.join(apps), + f'./manage.py migrate' + ] + task = subprocess.Popen(' && '.join(commands), shell=True) + if task.wait() != 0: + return self.stderr.write(self.style.ERROR('更新表结构失败,请附带输出内容至官方论坛反馈。')) self.stdout.write(self.style.SUCCESS('''升级成功,请自行重启服务,如果通过官方文档安装一般重启命令为 Docker: docker restart $CONTAINER_ID