diff --git a/dingxin_toolbox_drf/settings.py b/dingxin_toolbox_drf/settings.py index de05218..e2a359f 100644 --- a/dingxin_toolbox_drf/settings.py +++ b/dingxin_toolbox_drf/settings.py @@ -17,6 +17,11 @@ import os BASE_DIR = Path(__file__).resolve().parent.parent print(BASE_DIR) + +# 服务器IP +SERVER_IP = '172.16.1.63' +# SERVER_IP = '' + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ @@ -41,6 +46,7 @@ INSTALLED_APPS = [ 'corsheaders', # coreapi生成接口文档 'rest_framework.authtoken', # Token验证应用 'django_filters', + 'channels', 'update', 'mock', ] @@ -76,6 +82,9 @@ TEMPLATES = [ WSGI_APPLICATION = 'dingxin_toolbox_drf.wsgi.application' +# 设置ASGI +ASGI_APPLICATION = '' + # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases diff --git a/mock/views.py b/mock/views.py index 26c9f90..3de0523 100644 --- a/mock/views.py +++ b/mock/views.py @@ -14,6 +14,7 @@ from django.core.management.commands.runserver import Command as runserver import socket from mock.mock_templates import * from mock.cinema_sql import * +from dingxin_toolbox_drf.settings import SERVER_IP ZZ_URL = 'https://zzcs.yinghezhong.com' mock_config = dict() @@ -212,8 +213,10 @@ def get_response(request): # 获取本机 IP 地址: def get_local_ip(): - r = runserver() - ip = socket.gethostbyname(socket.gethostname()) + ip = SERVER_IP + if SERVER_IP == '': + r = runserver() + ip = socket.gethostbyname(socket.gethostname()) print(ip) return ip diff --git a/update/utils/db_compare.py b/update/utils/db_compare.py index 5108ca3..b3a22c6 100644 --- a/update/utils/db_compare.py +++ b/update/utils/db_compare.py @@ -1,4 +1,5 @@ import os +import subprocess import pymysql from update.utils.git_util import GitUtil from dingxin_toolbox_drf.settings import BASE_DIR @@ -20,7 +21,9 @@ class DbCompare: # 生成对比文件 def gen_diff_file(self): if os.path.exists(self.diff_sql_path): + print('remove diff_sql_path') os.remove(self.diff_sql_path) + print(os.path.exists(self.diff_sql_path)) # serv_host = '127.0.0.1' # serv_user = 'dingxin' @@ -41,15 +44,18 @@ class DbCompare: cmd = f'mysqldiff {server_1} {server_2} --changes-for=server2 --difftype=sql --force --quiet --skip-table-options {db_name}:cine > {self.diff_sql_path}' print(cmd) + # result = subprocess.run(cmd) result = os.system(cmd) - print(result) + print('gen_diff_file', result) return self.diff_sql_path # 针对降级的情况,需要屏蔽掉语句中的drop语句,此处可能有错误的风险,待验证 def remove_drop(self): # 如果清理后的文件存在则删除 if os.path.exists(self.clear_diff_sql_path): + print('remove clear_diff_sql_path') os.remove(self.clear_diff_sql_path) + print(os.path.exists(self.clear_diff_sql_path)) # 打开生成的差异sql,如果遇到ALTER语句则进入alter模式,将ALTER下面的语句写入temp中,如果是DROP就跳过,当遇到换行时就结束alter模式,把temp写入主列表 with open(self.diff_sql_path, 'r', encoding='utf-8') as f: sql_list = [] @@ -66,6 +72,12 @@ class DbCompare: pass elif line.strip().startswith('[PASS]'): pass + elif line.strip().startswith('+'): + pass + elif line.strip().startswith('-'): + pass + elif line.strip().startswith('@'): + pass elif line.strip().startswith('ALTER DEFINER'): temp.append(line) alter_definer = 1 @@ -123,6 +135,6 @@ class DbCompare: diff_cmd = f'mysql -h{self.target_server} -P{self.target_port} -u{self.target_user} -p{self.target_pwd} < {self.clear_diff_sql_path}' create_cmd = f'mysql -h{self.target_server} -P{self.target_port} -u{self.target_user} -p{self.target_pwd} < {self.create_sql_path}' diff_result = os.system(diff_cmd) - print(diff_result) + print('diff_result', diff_result) create_result = os.system(create_cmd) - print(create_result) + print('create_result', create_result) diff --git a/update/utils/git_util.py b/update/utils/git_util.py index ac658a2..cc2fc2b 100644 --- a/update/utils/git_util.py +++ b/update/utils/git_util.py @@ -162,6 +162,13 @@ class GitUtil: return m.hexdigest() # 返回md5对象 +class GitDbUtil: + def __init__(self): + pass + + @staticmethod + def get_short_version(): + return Release.objects.exclude(status='0').order_by('-ver_id').all() # if __name__ == '__main__': # git_util = GitUtil() # # git_util.clone() diff --git a/update/views.py b/update/views.py index ec3f0f9..ee1107a 100644 --- a/update/views.py +++ b/update/views.py @@ -17,7 +17,7 @@ from django_filters.rest_framework import DjangoFilterBackend from django.core.cache import cache from update.utils.get_version import GetVersion from rest_framework.decorators import action -from update.utils.git_util import GitUtil +from update.utils.git_util import GitUtil, GitDbUtil from update.utils.cmd_extcute import UpdateCommandUtil from update.utils.db_compare import DbCompare from update.utils.client_util import ClientUtil @@ -75,13 +75,6 @@ def update_user(request, *args, **kwargs): return JsonResponse({'result': 'success'} if result == 1 else {'result': 'fail'}) -def get_git_version(request): - git_util = GitUtil() - git_ver = git_util.get_short_version() - serializer = ReleaseSerializer(instance=git_ver, many=True) - return JsonResponse(serializer.data, safe=False) - - def get_operation_cmd(request): update_cmd = UpdateCommandUtil() no_sys_cmd = update_cmd.get_no_sys_cmd() @@ -89,6 +82,13 @@ def get_operation_cmd(request): return JsonResponse(serializer.data, safe=False) +def get_git_version(request): + git_db_util = GitDbUtil + git_ver = git_db_util.get_short_version() + serializer = ReleaseSerializer(instance=git_ver, many=True) + return JsonResponse(serializer.data, safe=False) + + # 测试用接口 def write_git_version_to_db(request): git_util = GitUtil('')