Commit 4451a647 authored by wanli's avatar wanli

update

parent 7ac76301
......@@ -9,7 +9,6 @@ import logging
import traceback
from datetime import datetime
from pony.orm import *
from flask import request
from app import signalManager
from model import fullStackDB
from model.annex import Annex
......@@ -20,20 +19,20 @@ from utils import sql_filter, ThreadMaker
logger = logging.getLogger("AppsManager")
@ThreadMaker
def build_application(uuid):
signalManager.actionAddBuildLog.emit(uuid)
def build_application(user, uuid):
signalManager.actionAddBuildLog.emit(user, uuid)
class AppsManager(object):
def __init__(self):
super(AppsManager, self).__init__()
def add(self, data):
def add(self, user, data):
with db_session:
result = Apps.get(app_name=data.get("app_name"), is_delete=False)
if result:
return False, "app_name has been exists."
editor = User.get(id=request.current_user.get("id"))
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
......@@ -56,31 +55,38 @@ class AppsManager(object):
result = Apps(**data)
commit()
icon.app = result
commit()
if result:
for a in app_files:
Annex(app=result, title=a.get("filename"), path=a.get("filepath"), size=a.get("filesize"), create_by=editor, create_at=datetime.now(), update_by=editor, update_at=datetime.now())
flush()
commit()
build_application(str(result.uuid))
build_application(user, str(result.uuid))
return result, "add app {}.".format("success" if result else "fail")
def delete(self, uuid):
editor = User.get(id=request.current_user.get("id"))
if not editor:
return False, "current user is not exists"
def delete(self, user, uuid):
with db_session:
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
result = Apps.get(uuid=uuid)
if result:
result.delete()
result = fullStackDB.update(Apps, { 'uuid': uuid }, is_delete=True, delete_at=datetime.now(), delete_by=editor)
return result, "delete app {}.".format("success" if result else "fail")
return result, "delete app {}.".format("success" if result else "fail")
def get(self, data):
def get(self, user, data):
result = Apps.get(**data)
if result:
result = result.to_dict(only=["uuid", "name", "create_at", "update_at"])
return result, "get app {}.".format("success" if result else "no data")
def getList(self, data):
def getList(self, user, data):
if not data or len(data) <= 0:
return False, 0, "parameters can not be null."
......@@ -107,10 +113,9 @@ class AppsManager(object):
if result and len(result):
temp = []
for item in result:
t = item.to_dict(with_collections=True, related_objects=True, exclude=["app_annex", "app_download", "is_delete", "delete_by", "delete_at"])
t = item.to_dict(with_collections=True, related_objects=True, exclude=["app_annex", "app_download", "app_build_log", "is_delete", "delete_by", "delete_at"])
t.update({
"app_icon": item.app_icon.to_dict(only=["path"]),
# "app_build_log": item.app_build_log.to_dict(only=["app_path"]),
"create_by": item.create_by.to_dict(only=["uuid", "username"]),
"update_by": item.update_by.to_dict(only=["uuid", "username"]),
"create_at": item.create_at.strftime("%Y-%m-%d %H:%M:%S") if item.create_at else None,
......@@ -121,13 +126,13 @@ class AppsManager(object):
return result, count, "get app {}.".format("success" if result else "no data")
def update(self, uuid, data):
def update(self, user, uuid, data):
# 当参数为空时,直接返回错误
if len(data) <= 0 or (len(data.keys()) == 1 and "id" in data):
return False, "app can not be null."
with db_session:
editor = User.get(id=request.current_user.get("id"))
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
......@@ -162,7 +167,7 @@ class AppsManager(object):
result.set(update_at=datetime.now(), update_by=editor, **data)
commit()
build_application(str(result.uuid))
build_application(user, str(result.uuid))
return result, "update app {}.".format("success" if result else "fail")
......
......@@ -13,7 +13,6 @@ import traceback
from urllib.parse import urlparse, urljoin
from datetime import datetime
from pony.orm import *
from flask import request
from app.setting import config
from model import fullStackDB
from model.apps import Apps
......@@ -29,9 +28,9 @@ class BuildLogsManager(object):
def __init__(self):
super(BuildLogsManager, self).__init__()
def add(self, app):
def add(self, user, app):
with db_session:
editor = User.get(id=request.current_user.get("id"))
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
......@@ -93,8 +92,8 @@ class BuildLogsManager(object):
return epk_path, "add build_logs {}.".format("success" if result else "fail")
def delete(self, uuid):
editor = User.get(id=request.current_user.get("id"))
def delete(self, user, uuid):
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
......@@ -152,13 +151,13 @@ class BuildLogsManager(object):
return result, count, "get build_logs {}.".format("success" if result else "no data")
def update(self, uuid, data):
def update(self, user, uuid, data):
# 当参数为空时,直接返回错误
if len(data) <= 0 or (len(data.keys()) == 1 and "id" in data):
return False, "parameters can not be null."
# 查询请求者是否存在
editor = User.get(id=request.current_user.get("id"))
editor = User.get(id=user)
if not editor:
return False, "current user is not exists"
......
......@@ -94,20 +94,7 @@ class DownloadManager(object):
epk_path = None
with db_session:
# 判断应用UUID是否等于evue_launcher
if data.get("id") == "evue_launcher":
# 读取evue_launcher.evue和evue_dock.evue以及相关资源文件
# launcher_file = Apps.get(name="evue_launcher")
# if not launcher_file:
# launcher_file = Framework.get(name="evue_launcher")
# if not launcher_file:
# return False, "evue_launcher not found"
# else:
# launcher_file = launcher_file.annex
# dock_file = Framework.get(name="evue_dock")
# if not dock_file:
# return False, "evue_launcher not found"
if data.get("id") == "evue_launcher123":
# 按照格式创建文件夹
dir_format = datetime.now().strftime("%Y%m%d%H%M%S")
build_path = os.sep.join([os.getcwd(), config.get("UPLOAD_DIR"), conf.get('application', 'launcher_dir'), data.get("imei"), dir_format])
......@@ -118,17 +105,20 @@ class DownloadManager(object):
if not os.path.exists(build_source_path):
os.mkdir(build_source_path)
# target_path = launcher_file.assets.get("files", []) + dock_file.assets.get("files", [])
# # 将取evue_launcher.evue和evue_dock.evue以及相关资源文件复制到这个目录下
# for f in target_path:
# tf = convert_url_to_local_path(f)
# if not os.path.exists(tf):
# return False, "{} not found".format(tf)
# filename = os.path.basename(tf)
# name, suffix = os.path.splitext(filename)
# name = re.sub(r"_\d{14}$", "", name)
# shutil.copy(tf, os.sep.join([build_source_path, name + suffix]))
# 判断下name为evue_launcher的文件是否存在
# 存在则移动到目标文件夹中
launcher = Apps.get(app_name="evue_launcher")
if launcher:
# 查找所有关联文件,复制到目标文件夹中
for f in launcher.app_annex:
tf = convert_url_to_local_path(f.path)
if not os.path.exists(tf):
continue
filename = os.path.basename(tf)
name, suffix = os.path.splitext(filename)
name = re.sub(r"_\d{14}$", "", name)
shutil.copy(tf, os.sep.join([build_source_path, name + suffix]))
temp = []
# 读取当前系统所有应用及其资源文件
......@@ -147,18 +137,6 @@ class DownloadManager(object):
'id': str(val.uuid),
})
if val.app_annex:
# 需要将每个应用的文件拷贝到目标文件夹中
for f in val.app_annex:
tf = convert_url_to_local_path(f.path)
if not os.path.exists(tf):
return False, "{} not found".format(tf)
filename = os.path.basename(tf)
name, suffix = os.path.splitext(filename)
name = re.sub(r"_\d{14}$", "", name)
shutil.copy(tf, os.sep.join([build_source_path, name + suffix]))
if len(temp) % 4 == 0 and temp:
result_json.append(copy.deepcopy(temp))
temp = []
......@@ -166,6 +144,7 @@ class DownloadManager(object):
if temp:
result_json.append(copy.deepcopy(temp))
json_str = json.dumps(result_json, sort_keys=False, ensure_ascii=False)
with open(os.sep.join([build_source_path, 'evue_dock_apps.json']), 'w') as json_file:
json_file.write(json_str)
......@@ -175,7 +154,7 @@ class DownloadManager(object):
epk_path = os.sep.join([build_path, 'evue_launcher.epk'])
else:
# 根据应用UUID查找相关应用
app = Apps.get(uuid=data.get("id"), is_delete=False)
app = Apps.get(app_name=data.get("id"), is_delete=False)
if not app:
return False, "app not found"
......
......@@ -16,7 +16,6 @@ logger = logging.getLogger("annexApi")
annex_api = Blueprint("annex_api", __name__, url_prefix="/api/v1/%s/annex" % config['NAME'])
@annex_api.route("/add", methods=['POST'])
@validate_schema(AddSchema)
@Auth.auth_required
......
......@@ -20,7 +20,7 @@ api = Blueprint("api", __name__, url_prefix="/api/v1/%s" % config['NAME'])
def stopApp():
fpath = os.sep.join([os.getcwd(), "restart.json"])
with open(fpath, "rw+") as f:
with open(fpath, "w+") as f:
ret = json.loads(f.read())
ret["count"] = ret["count"] + 1
f.write(json.dumps(ret, indent=4))
......
......@@ -22,7 +22,8 @@ apps_api = Blueprint("apps_api", __name__, url_prefix="/api/v1/%s/apps" % config
@Auth.auth_required
def add():
try:
isSuccess, message = signalManager.actionAddApp.emit(request.schema_data)
user = request.current_user.get("id")
isSuccess, message = signalManager.actionAddApp.emit(user, request.schema_data)
if isSuccess:
return response_result(ResponseCode.OK, msg=message)
else:
......@@ -38,7 +39,8 @@ def add():
@Auth.auth_required
def delete(id):
try:
isSuccess, message = signalManager.actionDeleteApp.emit(id)
user = request.current_user.get("id")
isSuccess, message = signalManager.actionDeleteApp.emit(user, id)
if isSuccess:
return response_result(ResponseCode.OK, msg=message)
else:
......@@ -54,7 +56,8 @@ def delete(id):
@Auth.auth_required
def get():
try:
result, message = signalManager.actionGetApp.emit(request.schema_data)
user = request.current_user.get("id")
result, message = signalManager.actionGetApp.emit(user, request.schema_data)
if result:
return response_result(ResponseCode.OK, data=result, msg=message)
else:
......@@ -69,7 +72,8 @@ def get():
@Auth.auth_required
def get_list():
try:
result, count, message = signalManager.actionGetAppList.emit(request.schema_data)
user = request.current_user.get("id")
result, count, message = signalManager.actionGetAppList.emit(user, request.schema_data)
if result:
return response_result(ResponseCode.OK, data=result, msg=message, count=count)
else:
......@@ -85,7 +89,8 @@ def get_list():
@Auth.auth_required
def update(id):
try:
isSuccess, message = signalManager.actionUpdateApp.emit(id, request.schema_data)
user = request.current_user.get("id")
isSuccess, message = signalManager.actionUpdateApp.emit(user, id, request.schema_data)
if isSuccess:
return response_result(ResponseCode.OK, msg=message)
else:
......@@ -99,7 +104,8 @@ def update(id):
@validate_schema(LogAddScheme)
@Auth.auth_required
def build_app(id):
result, message = signalManager.actionAddBuildLog.emit(id)
user = request.current_user.get("id")
result, message = signalManager.actionAddBuildLog.emit(user, id)
if result:
return response_result(ResponseCode.OK, data=result, msg=message)
else:
......@@ -109,7 +115,8 @@ def build_app(id):
@validate_schema(LogAddScheme)
@Auth.auth_required
def get_build_app(id):
result, message = signalManager.actionGetBuildLog.emit(id)
user = request.current_user.get("id")
result, message = signalManager.actionGetBuildLog.emit(user, id)
if result:
return response_result(ResponseCode.OK, data=result, msg=message)
else:
......@@ -119,7 +126,8 @@ def get_build_app(id):
@validate_schema(LogQuerySchema)
@Auth.auth_required
def get_build_logs():
result, count, message = signalManager.actionGetBuildLogList.emit(request.schema_data)
user = request.current_user.get("id")
result, count, message = signalManager.actionGetBuildLogList.emit(user, request.schema_data)
if result:
return response_result(ResponseCode.OK, data=result, msg=message, count=count)
else:
......
......@@ -54,11 +54,6 @@ def get():
try:
result, message = signalManager.actionGetDownload.emit(request.schema_data)
print(message)
# if result:
# return response_result(ResponseCode.OK, data=result, msg=message)
# else:
# return response_result(ResponseCode.REQUEST_ERROR, msg=message)
# 读取epk文件,按照格式返回相应结构体数据
ret = ""
if os.path.exists(result):
......
......@@ -66,8 +66,7 @@ def register():
'''
try:
isSuccess, message = signalManager.actionRegister.emit(
request.schema_data)
isSuccess, message = signalManager.actionRegister.emit(request.schema_data)
if isSuccess:
return response_result(ResponseCode.OK, msg=message)
else:
......
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