Commit 8d66a5dd authored by wanli's avatar wanli

update

parent d0df130e
'''
Author: your name
Date: 2021-06-30 17:43:46
LastEditTime: 2021-07-12 01:19:46
LastEditTime: 2021-07-12 10:45:38
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\application\config.py
......@@ -13,7 +13,7 @@ import multiprocessing
MODE = 'develop' # develop: 开发模式; production: 生产模式
class ProductionConfig(object):
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\epks"
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\\epks"
UPLOAD_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3000'
......@@ -52,7 +52,7 @@ class ProductionConfig(object):
class DevelopConfig(object):
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\epks"
EPK_DIR = "D:\\projects\\scriptiot\\evm_app_store_files\\epks"
UPLOAD_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3000'
......
......@@ -151,6 +151,7 @@ class AppResource(object):
if not user:
return False, ResponseCode.USER_NOT_EXISTS
# 判断下app是否存在
# result = Apps.select(app_name=data.get("app_name"), is_delete=False).count()
# if result < 1:
# return False, "app_name has been exists."
......@@ -218,16 +219,41 @@ class AppResource(object):
# return True, ResponseCode.HTTP_SUCCESS
def put(self, uuid, params, jwt={}):
user = UserModel.query.filter(UserModel.id==params.get('user')).one_or_none()
if not user:
return False, ResponseCode.USER_NOT_EXISTS
# handle business
result = AppModel.query.filter(AppModel.uuid==uuid).first()
if not result:
app = AppModel.query.filter(AppModel.uuid==uuid).first()
if not app:
return None, ResponseCode.HTTP_NOT_FOUND
if params:
# 更新文件
if params.get("app_files"):
for a in params.get("app_files"):
res = AnnexModel(app=app, title=a.get("filename"), path=a.get("filepath"), size=a.get("filesize"), create_by=user, create_at=datetime.now(), update_by=user, update_at=datetime.now())
db.session.add(res)
db.session.flush()
db.session.commit()
params.pop("app_files")
# 更新icon
if params.get("app_icon"):
condition = { 'update_by': user, 'update_at': datetime.now() }
if params.get("app_icon").get("filename"):
condition.update({"title": params.get("app_icon").get("filename")})
if params.get("app_icon").get("filepath"):
condition.update({"path": params.get("app_icon").get("filepath")})
if params.get("app_icon").get("filesize"):
condition.update({"size": params.get("app_icon").get("filesize")})
params.pop("app_icon")
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt.get("id", "")
result.update_date = datetime.now()
if value != None: setattr(app, key, value)
app.update_by = jwt.get("id", "")
app.update_date = datetime.now()
db.session.commit()
return True, ResponseCode.HTTP_SUCCESS
else:
......
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-09 16:35:34
LastEditors: your name
LastEditTime: 2021-07-12 11:31:06
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\area.py
'''
......@@ -10,7 +10,7 @@ from datetime import datetime
from application.app import db
from models.area import AreaModel
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
from webcreator.response import ResponseCode
class AreaResource(object):
def __init__(self):
......
......@@ -3,9 +3,7 @@
import json
from datetime import datetime
from flask_jwt_extended import (
jwt_required, get_jwt_identity, create_access_token
)
from flask_jwt_extended import (create_access_token,)
from application.app import db
from models.login import LoginModel
from models.user import UserModel
......
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-12 11:11:49
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\package.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import os
import re
import shutil
from datetime import datetime
from application.app import db
from application.app import db, config
from models.annex import AnnexModel
from models.app import AppModel
from models.user import UserModel
from models.package import PackageModel
from webcreator.utils.epk import EpkApp
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
from webcreator.response import ResponseCode
class PackageResource(object):
def __init__(self):
......@@ -27,21 +42,102 @@ class PackageResource(object):
if result:
return result, ResponseCode.HTTP_SUCCESS
return None, ResponseCode.HTTP_NOT_FOUND
user = UserModel.query.filter(id=params.get('user')).onr_or_none()
if not user:
return False, ResponseCode.USER_NOT_EXISTS
temp = {}
if user.role == "administrator":
temp.update({"is_delete": False})
else:
temp.update({ "create_by": user.id, "is_delete": False })
if "scope_type" in params and params.get("scope_type") == "list":
result = PackageModel.query.filter_by(**temp).order_by(PackageModel.create_at.desc())
temp = []
for item in result:
temp.append({ "name": item.app.app_name, "uuid": str(item.uuid) })
return temp, len(temp), "get build_logs {}.".format("success" if temp else "fail")
result = PackageModel.query.filter_by(**temp).order_by(PackageModel.create_at.desc()).paginate(params.get("pagenum", 1), params.get("pagesize", 10), error_out=False)
if result.total and len(result.items):
temp = []
for item in result.items:
t = item.to_dict()
t.update({
"create_at": item.create_at.strftime("%Y-%m-%d %H:%M:%S") if item.create_at else None,
"update_at": item.update_at.strftime("%Y-%m-%d %H:%M:%S") if item.update_at else None,
})
temp.append(t)
return (temp, result.total), ResponseCode.HTTP_SUCCESS
return result, ResponseCode.HTTP_NO_DATA
def post(self, params, jwt={}):
# 判断用户是否存在
user = UserModel.query.filter(UserModel.id==params.get('user'))
if not user:
return False, ResponseCode.USER_NOT_EXISTS
# 判断app是否存在
app = AppModel.query.filter(AppModel.id==params.get("app"))
if not app:
return False, ResponseCode.HTTP_NOT_FOUND
# 根据应用查找有哪些源文件
source_files = AnnexModel.query.filter(AnnexModel.app==app.id).all()
if not source_files:
return None, ResponseCode.HTTP_NO_DATA
dir_format = "{}-{}-{}".format(app.app_name, app.app_version, datetime.now().strftime("%Y%m%d%H%M%S"))
upload_dir = os.sep.join([config.UPLOAD_ROOT_DIR, "uploads", "evueapps"])
target_dir = os.sep.join([upload_dir, user.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.UPLOAD_ROOT_DIR, 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.move(os.path.normpath(target_file), dst_file)
app_files.append([sf.id, dst_file])
# 打包成EPK文件
app_info = {}
params = { 'appName': app.app_name, 'appDir': dest_dir, 'appVersion': app.app_version, 'output': target_dir }
if user.role == "administrator" or user.role == "community":
params['algorithm'] = "h"
epk = EpkApp(**params)
app_info = epk.pack()
if app_info:
app_info['md5'] = str(app_info['md5'])
# 更新数据库对应文件路径
# for sf in source_files:
# for af in app_files:
# if sf.id == af[0]:
# t = os.path.normpath(af[1].replace(config.UPLOAD_ROOT_DIR, "")).replace('\\', '/')
# sf.set(path=t)
# db.session.flush()
# db.session.commit()
epk_path = os.sep.join([target_dir.replace(config.UPLOAD_ROOT_DIR, ""), "{}.epk".format(app.app_name)]).replace('\\', '/')
# handle business
result = PackageModel.query.filter(PackageModel.app == params.get('app')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt.get("id", "")
result.update_date = datetime.now()
db.session.commit()
return True, ResponseCode.HTTP_SUCCESS
elif result and result.is_delete == False:
return False, ResponseCode.HTTP_INVAILD_REQUEST
# result = PackageModel.query.filter(PackageModel.app == params.get('app')).first()
# if result and result.is_delete:
# result.is_delete = False
# result.update_by = jwt.get("id", "")
# result.update_date = datetime.now()
# db.session.commit()
# return True, ResponseCode.HTTP_SUCCESS
# elif result and result.is_delete == False:
# return False, ResponseCode.HTTP_INVAILD_REQUEST
result = PackageModel(**params)
result = PackageModel(app=app.id, file_path=epk_path, package_info=app_info, app_version=params.get("app_version"), create_by=user.id, create_at=datetime.now(), update_by=user.id, update_at=datetime.now())
db.session.add(result)
db.session.commit()
return True, ResponseCode.HTTP_SUCCESS
......
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-12 11:32:08
LastEditors: your name
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\user.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
......@@ -5,7 +13,7 @@ from datetime import datetime
from application.app import db
from models.user import UserModel
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
from webcreator.response import ResponseCode
class UserResource(object):
def __init__(self):
......
......@@ -40,7 +40,7 @@ class AppModel(PrimaryModel):
def __repr__(self):
return '<AppModel %r>' % (self.app_name)
def to_json(self):
def to_dict(self):
return {
'app_name': self.app_name,
'app_icon': self.app_icon,
......
......@@ -31,7 +31,7 @@ class AreaModel(PrimaryModel):
def __repr__(self):
return '<AreaModel %r>' % (self.areaCode)
def to_json(self):
def to_dict(self):
return {
'areaCode': self.areaCode,
'areaName': self.areaName,
......
......@@ -41,7 +41,7 @@ class LoginModel(PrimaryModel):
def __repr__(self):
return '<LoginModel %r>' % (self.user)
def to_json(self):
def to_dict(self):
return {
'login_at': self.login_at,
'user_agent': self.user_agent,
......
......@@ -50,7 +50,7 @@ class PackageModel(PrimaryModel):
def __repr__(self):
return '<PackageModel %r>' % (self.app)
def to_json(self):
def to_dict(self):
return {
'app_version': self.app_version,
'package_info': self.package_info,
......
......@@ -39,7 +39,7 @@ class UserModel(PrimaryModel):
def __repr__(self):
return '<UserModel %r>' % (self.username)
def to_json(self):
def to_dict(self):
return {
'username': self.username,
'account': self.account,
......
......@@ -31,7 +31,7 @@ class {{ config['name'] | letterUpper }}Model(PrimaryModel):
def __repr__(self):
return '<{{ config['name'] | letterUpper }}Model %r>' % (self.{{ config['model']['fields'][0]["name"] }})
def to_json(self):
def to_dict(self):
return {
{%- for item in config['model']['fields'] %}
{%- if item.get("toJson") %}
......
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