Commit 9c04fa93 authored by wanli's avatar wanli

新增重新打包功能,删除无用代码

parent 1c54c989
...@@ -26,7 +26,7 @@ logger = logging.getLogger("AppsManager") ...@@ -26,7 +26,7 @@ logger = logging.getLogger("AppsManager")
@ThreadMaker @ThreadMaker
def build_application(user, uuid): def build_application(user, uuid):
signalManager.actionAddBuildLog.emit(user, uuid) signalManager.actionAddBuildLog.emit(user, uuid, isMove=False)
class AppsManager(object): class AppsManager(object):
def __init__(self): def __init__(self):
...@@ -94,8 +94,6 @@ class AppsManager(object): ...@@ -94,8 +94,6 @@ class AppsManager(object):
app_info['md5'] = str(app_info['md5']) app_info['md5'] = str(app_info['md5'])
app_info.update({ "epk_size": os.path.getsize(os.sep.join([config.get("UPLOAD_PATH"), epk_filename])) })
result = BuildLogs(app=app, app_path=epk_filename, app_info=app_info, create_by=editor, create_at=datetime.now(), update_by=editor, update_at=datetime.now()) result = BuildLogs(app=app, app_path=epk_filename, app_info=app_info, create_by=editor, create_at=datetime.now(), update_by=editor, update_at=datetime.now())
commit() commit()
AppLogs(app_name=app.app_name, app_path=epk_filename, app_version=data.get("app_version"), app_info=app_info, create_by=editor, create_at=datetime.now()) AppLogs(app_name=app.app_name, app_path=epk_filename, app_version=data.get("app_version"), app_info=app_info, create_by=editor, create_at=datetime.now())
...@@ -116,10 +114,68 @@ class AppsManager(object): ...@@ -116,10 +114,68 @@ class AppsManager(object):
return result, "delete app {}.".format("success" if result else "fail") return result, "delete app {}.".format("success" if result else "fail")
def get(self, user, data): def get(self, user, data):
result = Apps.get(**data) # 重新打包
if result: if not data.get("uuid"):
result = result.to_dict(only=["uuid", "name", "create_at", "update_at"]) return False, "app uuid can not be null"
return result, "get app {}.".format("success" if result else "no data")
with db_session:
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
# 根据app查询应用,获取应用有哪些文件
# 按格式创建文件夹,将这些文件移动到这个文件夹
# 将这些零散文件进行打包
# 更新数据库对应文件的路径
app = Apps.get(uuid=data.get("uuid"))
if not app:
return None, "app not found"
source_files = Annex.select().filter(app=app)
if not source_files:
return None, "apps file not found"
dir_format = "{}-{}-{}".format(app.app_name, app.app_version, datetime.now().strftime("%Y%m%d%H%M%S"))
upload_dir = os.sep.join([config.get("UPLOAD_PATH"), config.get("UPLOAD_DIR"), "evueapps"])
target_dir = os.sep.join([upload_dir, editor.account, dir_format])
dest_dir = os.sep.join([target_dir, "src"])
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
app_files = []
for sf in source_files:
target_file = os.sep.join([config.get("UPLOAD_PATH"), sf.path])
filename = os.path.basename(target_file)
name, suffix = os.path.splitext(filename)
name = re.sub(r"_\d{14}$", "", name)
dst_file = os.path.normpath(os.sep.join([dest_dir, name + suffix]))
shutil.copy(os.path.normpath(target_file), dst_file)
app_files.append([sf.id, dst_file])
# 这里面存在一个逻辑问题,就是将文件拷贝过去之后,需要在Annex表重新生成有感这个EPK文件所有资源文件的记录
# 否则会在下次重新打包时候,找不到相关资源文件报错
# 打包成EPK文件
epk = EpkApp(appName=app.app_name, appDir=dest_dir, appVersion=app.app_version, output=target_dir)
app_info = epk.pack()
app_info['md5'] = str(app_info['md5'])
# 更新数据库对应文件路径
# 将文件拷贝过去后,需要重新更新数据库文件记录
epk_path = os.sep.join([target_dir.replace(config.get("UPLOAD_PATH"), ""), "{}.epk".format(app.app_name)]).replace('\\', '/')
build = BuildLogs.get(app=app)
if build:
build.set(app_path=epk_path, app_info=app_info, update_by=editor, update_at=datetime.now())
commit()
# 新增一条AppLogs
AppLogs(app_name=app.app_name, app_path=epk_path, app_version=app.app_version, app_info=app_info, create_by=editor, create_at=datetime.now())
commit()
return { 'app_name': app.app_name, 'app_path': epk_path }, "rebuild app {}.".format("success" if app_info else "fail")
def getList(self, user, data): def getList(self, user, data):
if not data or len(data) <= 0: if not data or len(data) <= 0:
......
...@@ -17,6 +17,7 @@ from app.setting import config ...@@ -17,6 +17,7 @@ from app.setting import config
from model import fullStackDB from model import fullStackDB
from model.apps import Apps from model.apps import Apps
from model.annex import Annex from model.annex import Annex
from model.app_logs import AppLogs
from model.build_logs import BuildLogs from model.build_logs import BuildLogs
from model.user import User from model.user import User
from utils import sql_filter from utils import sql_filter
...@@ -56,9 +57,7 @@ class BuildLogsManager(object): ...@@ -56,9 +57,7 @@ class BuildLogsManager(object):
app_files = [] app_files = []
for sf in source_files: for sf in source_files:
parsed_result = urlparse(sf.path) target_file = os.sep.join([config.get("UPLOAD_PATH"), sf.path])
target_file = os.sep.join([config.get("UPLOAD_PATH"), parsed_result.path.replace('\\', ' / ')])
filename = os.path.basename(target_file) filename = os.path.basename(target_file)
name, suffix = os.path.splitext(filename) name, suffix = os.path.splitext(filename)
name = re.sub(r"_\d{14}$", "", name) name = re.sub(r"_\d{14}$", "", name)
...@@ -66,14 +65,10 @@ class BuildLogsManager(object): ...@@ -66,14 +65,10 @@ class BuildLogsManager(object):
shutil.move(os.path.normpath(target_file), dst_file) shutil.move(os.path.normpath(target_file), dst_file)
app_files.append([sf.id, dst_file]) app_files.append([sf.id, dst_file])
try: # 打包成EPK文件
# 打包成EPK文件 epk = EpkApp(appName=app.app_name, appDir=dest_dir, appVersion=app.app_version, output=target_dir)
epk = EpkApp(appName=app.app_name, appDir=dest_dir, appVersion=app.app_version, output=target_dir) app_info = epk.pack()
app_info = epk.pack() app_info['md5'] = str(app_info['md5'])
except Exception as e:
logger.error(e)
traceback.print_exc()
return False, e
# 更新数据库对应文件路径 # 更新数据库对应文件路径
for sf in source_files: for sf in source_files:
...@@ -86,10 +81,19 @@ class BuildLogsManager(object): ...@@ -86,10 +81,19 @@ class BuildLogsManager(object):
epk_path = os.sep.join([target_dir.replace(config.get("UPLOAD_PATH"), ""), "{}.epk".format(app.app_name)]).replace('\\', '/') epk_path = os.sep.join([target_dir.replace(config.get("UPLOAD_PATH"), ""), "{}.epk".format(app.app_name)]).replace('\\', '/')
app_info['md5'] = str(app_info['md5']) # build = BuildLogs.get(app=app)
# if build:
# build.delete()
# commit()
# 新增一条BuildLogs
result = BuildLogs(app=app, app_path=epk_path, app_info=app_info, create_by=editor, create_at=datetime.now(), update_by=editor, update_at=datetime.now()) result = BuildLogs(app=app, app_path=epk_path, app_info=app_info, create_by=editor, create_at=datetime.now(), update_by=editor, update_at=datetime.now())
commit() commit()
# 新增一条AppLogs
AppLogs(app_name=app.app_name, app_path=epk_path, app_version=app.app_version, app_info=app_info, create_by=editor, create_at=datetime.now())
commit()
return epk_path, "add build_logs {}.".format("success" if result else "fail") return epk_path, "add build_logs {}.".format("success" if result else "fail")
def delete(self, user, uuid): def delete(self, user, uuid):
......
...@@ -38,6 +38,14 @@ export function getBuildApp(id) { ...@@ -38,6 +38,14 @@ export function getBuildApp(id) {
}) })
} }
export function rebuildApp(params) {
return request({
url: "/api/v1/evm_store/apps/get",
method: "post",
data: params,
});
}
export function buildApp(id) { export function buildApp(id) {
return request({ return request({
url: `/api/v1/evm_store/apps/build/${id}`, url: `/api/v1/evm_store/apps/build/${id}`,
......
...@@ -73,10 +73,16 @@ ...@@ -73,10 +73,16 @@
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
min-width="180" min-width="260"
fixed="right" fixed="right"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
size="mini"
type="success"
@click="handleRebuild(scope.$index, scope.row)"
>重新打包</el-button
>
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
...@@ -249,6 +255,7 @@ import { ...@@ -249,6 +255,7 @@ import {
getAppsList, getAppsList,
deleteApp, deleteApp,
addApp, addApp,
rebuildApp,
updateApp, updateApp,
getBuildApp, getBuildApp,
addFramework, addFramework,
...@@ -315,7 +322,7 @@ export default { ...@@ -315,7 +322,7 @@ export default {
this.list = res.data.map((item) => { this.list = res.data.map((item) => {
if (item.app_build_log && item.app_build_log.app_info) if (item.app_build_log && item.app_build_log.app_info)
item.epk_size = item.epk_size =
(item.app_build_log.app_info.epk_size / 1024).toFixed(2) + "KB"; (item.app_build_log.app_info.buff_length / 1024).toFixed(2) + "KB";
else item.epk_size = ""; else item.epk_size = "";
return item; return item;
}); });
...@@ -335,16 +342,22 @@ export default { ...@@ -335,16 +342,22 @@ export default {
this.form.pagenum = e; this.form.pagenum = e;
this.fetchData(mapTrim(this.form)); this.fetchData(mapTrim(this.form));
}, },
handleBuild(index, row) { handleRebuild(index, row) {
console.log(index); console.log(index)
getBuildApp(row.uuid) rebuildApp({ uuid: row.uuid }).then(res => {
.then((res) => { download(`${res.data.app_name}.epk`, res.data.app_path)
download(`${res.data.app_name}.epk`, res.data.app_path); this.$message.success(res.message)
this.$message.success(res.message); }).catch(err => {
this.$message.error(err.message)
}) })
.catch((err) => { },
console.log(err); handleBuild(index, row) {
this.$message.error(err.message); console.log(index)
getBuildApp(row.uuid).then((res) => {
download(`${res.data.app_name}.epk`, res.data.app_path)
this.$message.success(res.message)
}).catch((err) => {
this.$message.error(err.message)
}); });
}, },
handleEdit(index, row) { handleEdit(index, row) {
...@@ -460,14 +473,15 @@ export default { ...@@ -460,14 +473,15 @@ export default {
}); });
}, },
onAddFramework() { onAddFramework() {
this.frameworkDialog = true; this.frameworkDialog = true
}, },
onAdd() { onAdd() {
setTimeout(() => { setTimeout(() => {
this.clear(); this.clear();
}, 100); }, 100)
this.dialogTitle = "添加"; this.post.sort = this.form.pagesize * (this.form.pagenum - 1) + this.list.length + 1
this.dialogVisible = true; this.dialogTitle = "添加"
this.dialogVisible = true
}, },
onSubmit() { onSubmit() {
this.form.pagenum = 1; this.form.pagenum = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment