From 63352f7ba44d6f5844d9122047920efb21a182af Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Mon, 12 Sep 2022 10:47:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=87=E7=BA=A7=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E8=A6=86=E7=9B=96txt=E7=9B=AE=E5=BD=95=E7=9A=84?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E8=A7=84=E5=AE=9A=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/admin.html | 6 ++++-- utils/update.py | 28 +++++++++++++++++++++------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/templates/admin.html b/templates/admin.html index 838c2a9..0ed443a 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -40,7 +40,8 @@ $.get("/admin/update_ver",function(data,status){ console.log(data); if(data.code === 200){ - alert(data.msg+'\n除主程序app.py需要自行检测替换升级外,其他关键文件全部更新完毕'); + // alert(data.msg+'\n除主程序app.py需要自行检测替换升级外,其他关键文件全部更新完毕'); + alert(data.msg); location.reload(); }else{ alert(data.msg||'未知数据,具体到数据控制台查看'); @@ -153,7 +154,8 @@ $.get("/admin/force_update",function(data,status){ console.log(data); if(data.code === 200){ - alert(data.msg+'\n除主程序app.py需要自行检测替换升级外,其他关键文件全部更新完毕'); + // alert(data.msg+'\n除主程序app.py需要自行检测替换升级外,其他关键文件全部更新完毕'); + alert(data.msg); location.reload(); }else{ alert(data.msg||'未知数据,具体到数据控制台查看'); diff --git a/utils/update.py b/utils/update.py index 45e32d1..287adde 100644 --- a/utils/update.py +++ b/utils/update.py @@ -62,7 +62,9 @@ def del_file(filepath): if os.path.isfile(file_path): os.remove(file_path) -def copytree(src, dst): +def copytree(src, dst, ignore=None): + if ignore is None: + ignore = [] dirs = os.listdir(src) # 获取目录下的所有文件包括文件夹 # print(dirs) for dir in dirs: # 遍历文件或文件夹 @@ -71,19 +73,30 @@ def copytree(src, dst): if os.path.isdir(from_dir): # 判断是否为文件夹 if not os.path.exists(to_dir): # 判断目标文件夹是否存在,不存在则创建 os.mkdir(to_dir) - copytree(from_dir, to_dir) # 迭代 遍历子文件夹并复制文件 + copytree(from_dir, to_dir,ignore) # 迭代 遍历子文件夹并复制文件 elif os.path.isfile(from_dir): # 如果为文件,则直接复制文件 - shutil.copy(from_dir, to_dir) # 复制文件 + if ignore: + regxp = '|'.join(ignore).replace('\\','/') # 组装正则 + to_dir_str = str(to_dir).replace('\\','/') + if not re.search(rf'{regxp}', to_dir_str, re.M): + shutil.copy(from_dir, to_dir) # 复制文件 + else: + shutil.copy(from_dir, to_dir) # 复制文件 -def force_copy_files(from_path,to_path): +def force_copy_files(from_path, to_path, exclude_files=None): # print(f'开始拷贝文件{from_path}=>{to_path}') + if exclude_files is None: + exclude_files = [] logger.info(f'开始拷贝文件{from_path}=>{to_path}') try: if sys.version_info < (3, 8): - copytree(from_path, to_path) + copytree(from_path, to_path,exclude_files) else: - shutil.copytree(from_path, to_path, dirs_exist_ok=True) + if len(exclude_files) > 0: + shutil.copytree(from_path, to_path, dirs_exist_ok=True,ignore=shutil.ignore_patterns(*exclude_files)) + else: + shutil.copytree(from_path, to_path, dirs_exist_ok=True) except Exception as e: logger.info(f'拷贝文件{from_path}=>{to_path}发生错误:{e}') @@ -98,8 +111,9 @@ def copy_to_update(): return False # 千万不能覆盖super,base paths = ['js','models','controllers','libs','static','templates','utils','txt'] + exclude_files = ['txt/pycms0.json','txt/pycms1.json','txt/pycms2.json'] for path in paths: - force_copy_files(os.path.join(dr_path, path),os.path.join(base_path, path)) + force_copy_files(os.path.join(dr_path, path),os.path.join(base_path, path),exclude_files) try: shutil.copy(os.path.join(dr_path, 'app.py'), os.path.join(base_path, 'app.py')) # 复制文件 except Exception as e: -- GitLab