Commit 8d66a5dd authored by wanli's avatar wanli

update

parent d0df130e
''' '''
Author: your name Author: your name
Date: 2021-06-30 17:43:46 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 LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\application\config.py FilePath: \evm-store\tools\build_out\application\config.py
...@@ -13,7 +13,7 @@ import multiprocessing ...@@ -13,7 +13,7 @@ import multiprocessing
MODE = 'develop' # develop: 开发模式; production: 生产模式 MODE = 'develop' # develop: 开发模式; production: 生产模式
class ProductionConfig(object): 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_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx']) UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3000' BIND = '127.0.0.1:3000'
...@@ -52,7 +52,7 @@ class ProductionConfig(object): ...@@ -52,7 +52,7 @@ class ProductionConfig(object):
class DevelopConfig(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_ROOT_DIR = "D:\\projects\\scriptiot\\evm_app_store_files"
UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx']) UPLOAD_ALLOWED = set(['doc', 'docs', 'csv', 'xls', 'xlsx'])
BIND = '127.0.0.1:3000' BIND = '127.0.0.1:3000'
......
...@@ -151,6 +151,7 @@ class AppResource(object): ...@@ -151,6 +151,7 @@ class AppResource(object):
if not user: if not user:
return False, ResponseCode.USER_NOT_EXISTS return False, ResponseCode.USER_NOT_EXISTS
# 判断下app是否存在
# result = Apps.select(app_name=data.get("app_name"), is_delete=False).count() # result = Apps.select(app_name=data.get("app_name"), is_delete=False).count()
# if result < 1: # if result < 1:
# return False, "app_name has been exists." # return False, "app_name has been exists."
...@@ -218,16 +219,41 @@ class AppResource(object): ...@@ -218,16 +219,41 @@ class AppResource(object):
# return True, ResponseCode.HTTP_SUCCESS # return True, ResponseCode.HTTP_SUCCESS
def put(self, uuid, params, jwt={}): 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 # handle business
result = AppModel.query.filter(AppModel.uuid==uuid).first() app = AppModel.query.filter(AppModel.uuid==uuid).first()
if not result: if not app:
return None, ResponseCode.HTTP_NOT_FOUND return None, ResponseCode.HTTP_NOT_FOUND
if params: 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(): for key, value in params.items():
if value != None: setattr(result, key, value) if value != None: setattr(app, key, value)
result.update_by = jwt.get("id", "") app.update_by = jwt.get("id", "")
result.update_date = datetime.now() app.update_date = datetime.now()
db.session.commit() db.session.commit()
return True, ResponseCode.HTTP_SUCCESS return True, ResponseCode.HTTP_SUCCESS
else: else:
......
''' '''
Author: your name Author: your name
Date: 2021-06-30 18:03:41 Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-09 16:35:34 LastEditTime: 2021-07-12 11:31:06
LastEditors: your name LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\area.py FilePath: \evm-store\tools\build_out\controllers\area.py
''' '''
...@@ -10,7 +10,7 @@ from datetime import datetime ...@@ -10,7 +10,7 @@ from datetime import datetime
from application.app import db from application.app import db
from models.area import AreaModel from models.area import AreaModel
from webcreator.log import logger from webcreator.log import logger
from webcreator.response import ResponseCode, response_result from webcreator.response import ResponseCode
class AreaResource(object): class AreaResource(object):
def __init__(self): def __init__(self):
......
...@@ -3,9 +3,7 @@ ...@@ -3,9 +3,7 @@
import json import json
from datetime import datetime from datetime import datetime
from flask_jwt_extended import ( from flask_jwt_extended import (create_access_token,)
jwt_required, get_jwt_identity, create_access_token
)
from application.app import db from application.app import db
from models.login import LoginModel from models.login import LoginModel
from models.user import UserModel 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 #!/usr/bin/env python
# -*- coding: utf_8 -*- # -*- coding: utf_8 -*-
import os
import re
import shutil
from datetime import datetime 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 models.package import PackageModel
from webcreator.utils.epk import EpkApp
from webcreator.log import logger from webcreator.log import logger
from webcreator.response import ResponseCode, response_result from webcreator.response import ResponseCode
class PackageResource(object): class PackageResource(object):
def __init__(self): def __init__(self):
...@@ -27,21 +42,102 @@ class PackageResource(object): ...@@ -27,21 +42,102 @@ class PackageResource(object):
if result: if result:
return result, ResponseCode.HTTP_SUCCESS 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={}): 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 # handle business
result = PackageModel.query.filter(PackageModel.app == params.get('app')).first() # result = PackageModel.query.filter(PackageModel.app == params.get('app')).first()
if result and result.is_delete: # if result and result.is_delete:
result.is_delete = False # result.is_delete = False
result.update_by = jwt.get("id", "") # result.update_by = jwt.get("id", "")
result.update_date = datetime.now() # result.update_date = datetime.now()
db.session.commit() # db.session.commit()
return True, ResponseCode.HTTP_SUCCESS # return True, ResponseCode.HTTP_SUCCESS
elif result and result.is_delete == False: # elif result and result.is_delete == False:
return False, ResponseCode.HTTP_INVAILD_REQUEST # 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.add(result)
db.session.commit() db.session.commit()
return True, ResponseCode.HTTP_SUCCESS 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 #!/usr/bin/env python
# -*- coding: utf_8 -*- # -*- coding: utf_8 -*-
...@@ -5,7 +13,7 @@ from datetime import datetime ...@@ -5,7 +13,7 @@ from datetime import datetime
from application.app import db from application.app import db
from models.user import UserModel from models.user import UserModel
from webcreator.log import logger from webcreator.log import logger
from webcreator.response import ResponseCode, response_result from webcreator.response import ResponseCode
class UserResource(object): class UserResource(object):
def __init__(self): def __init__(self):
......
...@@ -40,7 +40,7 @@ class AppModel(PrimaryModel): ...@@ -40,7 +40,7 @@ class AppModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<AppModel %r>' % (self.app_name) return '<AppModel %r>' % (self.app_name)
def to_json(self): def to_dict(self):
return { return {
'app_name': self.app_name, 'app_name': self.app_name,
'app_icon': self.app_icon, 'app_icon': self.app_icon,
......
...@@ -31,7 +31,7 @@ class AreaModel(PrimaryModel): ...@@ -31,7 +31,7 @@ class AreaModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<AreaModel %r>' % (self.areaCode) return '<AreaModel %r>' % (self.areaCode)
def to_json(self): def to_dict(self):
return { return {
'areaCode': self.areaCode, 'areaCode': self.areaCode,
'areaName': self.areaName, 'areaName': self.areaName,
......
...@@ -41,7 +41,7 @@ class LoginModel(PrimaryModel): ...@@ -41,7 +41,7 @@ class LoginModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<LoginModel %r>' % (self.user) return '<LoginModel %r>' % (self.user)
def to_json(self): def to_dict(self):
return { return {
'login_at': self.login_at, 'login_at': self.login_at,
'user_agent': self.user_agent, 'user_agent': self.user_agent,
......
...@@ -50,7 +50,7 @@ class PackageModel(PrimaryModel): ...@@ -50,7 +50,7 @@ class PackageModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<PackageModel %r>' % (self.app) return '<PackageModel %r>' % (self.app)
def to_json(self): def to_dict(self):
return { return {
'app_version': self.app_version, 'app_version': self.app_version,
'package_info': self.package_info, 'package_info': self.package_info,
......
...@@ -39,7 +39,7 @@ class UserModel(PrimaryModel): ...@@ -39,7 +39,7 @@ class UserModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<UserModel %r>' % (self.username) return '<UserModel %r>' % (self.username)
def to_json(self): def to_dict(self):
return { return {
'username': self.username, 'username': self.username,
'account': self.account, 'account': self.account,
......
...@@ -31,7 +31,7 @@ class {{ config['name'] | letterUpper }}Model(PrimaryModel): ...@@ -31,7 +31,7 @@ class {{ config['name'] | letterUpper }}Model(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<{{ config['name'] | letterUpper }}Model %r>' % (self.{{ config['model']['fields'][0]["name"] }}) return '<{{ config['name'] | letterUpper }}Model %r>' % (self.{{ config['model']['fields'][0]["name"] }})
def to_json(self): def to_dict(self):
return { return {
{%- for item in config['model']['fields'] %} {%- for item in config['model']['fields'] %}
{%- if item.get("toJson") %} {%- 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