Commit 2fe2eb4b authored by wanli's avatar wanli

update

parent fe8c0256
...@@ -21,6 +21,7 @@ class SignalManager(object): ...@@ -21,6 +21,7 @@ class SignalManager(object):
actionGetListUser = PySignal() actionGetListUser = PySignal()
actionGetUser = PySignal() actionGetUser = PySignal()
actionPutUser = PySignal() actionPutUser = PySignal()
actionPostLogin = PySignal()
actionGetListLogin = PySignal() actionGetListLogin = PySignal()
actionGetLogin = PySignal() actionGetLogin = PySignal()
......
...@@ -26,6 +26,7 @@ def initConnect(): ...@@ -26,6 +26,7 @@ def initConnect():
signalManager.actionGetListUser.connect(userManager.getList) signalManager.actionGetListUser.connect(userManager.getList)
signalManager.actionGetUser.connect(userManager.get) signalManager.actionGetUser.connect(userManager.get)
signalManager.actionPutUser.connect(userManager.put) signalManager.actionPutUser.connect(userManager.put)
signalManager.actionPostLogin.connect(loginManager.post)
signalManager.actionGetListLogin.connect(loginManager.getList) signalManager.actionGetListLogin.connect(loginManager.getList)
signalManager.actionGetLogin.connect(loginManager.get) signalManager.actionGetLogin.connect(loginManager.get)
......
...@@ -16,7 +16,7 @@ class AppResource(object): ...@@ -16,7 +16,7 @@ class AppResource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = AppModel.query.filter(AppModel.areaName == params.get('areaName')).first() result = AppModel.query.filter(AppModel.app_name == params.get('app_name')).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['id'] result.update_by = jwt['id']
......
...@@ -16,7 +16,7 @@ class AreaResource(object): ...@@ -16,7 +16,7 @@ class AreaResource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = AreaModel.query.filter(AreaModel.areaName == params.get('areaName')).first() result = AreaModel.query.filter(AreaModel.areaCode == params.get('areaCode')).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['id'] result.update_by = jwt['id']
......
from datetime import datetime
from application.app import db
from models.login import LoginModel
from webcreator.utils import ResponseCode, response_result
class LoginResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = LoginModel.query.filter(*filters).order_by(LoginModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = LoginModel.query.filter(LoginModel.user == params.get('user')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
print(params.get("account"), params.get("password"))
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = LoginModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = LoginModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
else:
return response_result(ResponseCode.PARAM_NULL)
def delete(self, id, jwt=None):
# handle business
result = LoginModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
result.update_date = datetime.now()
result.is_delete = True
db.session.delete(result)
db.session.commit()
loginManager = LoginResource()
\ No newline at end of file
...@@ -16,7 +16,7 @@ class LoginResource(object): ...@@ -16,7 +16,7 @@ class LoginResource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = LoginModel.query.filter(LoginModel.areaName == params.get('areaName')).first() result = LoginModel.query.filter(LoginModel.user == params.get('user')).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['id'] result.update_by = jwt['id']
......
...@@ -16,7 +16,7 @@ class PackageResource(object): ...@@ -16,7 +16,7 @@ class PackageResource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = PackageModel.query.filter(PackageModel.areaName == params.get('areaName')).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['id'] result.update_by = jwt['id']
......
...@@ -16,7 +16,7 @@ class UserResource(object): ...@@ -16,7 +16,7 @@ class UserResource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = UserModel.query.filter(UserModel.areaName == params.get('areaName')).first() result = UserModel.query.filter(UserModel.app_name == params.get('app_name')).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['id'] result.update_by = jwt['id']
......
...@@ -39,6 +39,18 @@ class LoginModel(PrimaryModel): ...@@ -39,6 +39,18 @@ class LoginModel(PrimaryModel):
} }
class PostLoginSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = LoginModel
account = fields.String(required=True, length=64)
password = fields.String(required=True, length=64)
postLoginSchema = PostLoginSchema()
postLoginsSchema = PostLoginSchema(many=True)
class GetListLoginSchema(ma.SQLAlchemySchema): class GetListLoginSchema(ma.SQLAlchemySchema):
class Meta: class Meta:
# unknown = INCLUDE # 未知字段默认包含 # unknown = INCLUDE # 未知字段默认包含
......
...@@ -3,7 +3,7 @@ from flask_restful import Resource ...@@ -3,7 +3,7 @@ from flask_restful import Resource
from flask_restful.reqparse import RequestParser from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity ) from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager from application.signal_manager import signalManager
from models.login import getListLoginSchema,getLoginSchema from models.login import postLoginSchema,getListLoginSchema,getLoginSchema
from webcreator.response import ResponseCode, response_result from webcreator.response import ResponseCode, response_result
class LoginResourceList(Resource): class LoginResourceList(Resource):
...@@ -29,6 +29,18 @@ class LoginResourceList(Resource): ...@@ -29,6 +29,18 @@ class LoginResourceList(Resource):
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
def post(self):
try:
json_payload = request.json
data = postLoginSchema.load(json_payload)
result = signalManager.actionPostLogin.emit(**data)
json_dumps = postLoginSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class LoginResource(Resource): class LoginResource(Resource):
def __init__(self): def __init__(self):
pass pass
......
...@@ -997,7 +997,22 @@ ...@@ -997,7 +997,22 @@
"path": "", "path": "",
"endpoint": "", "endpoint": "",
"params": [ "params": [
{
"name": "account",
"dataType": "String",
"location": "args",
"length": 64,
"default": null,
"required": true
},
{
"name": "password",
"dataType": "String",
"location": "args",
"length": 64,
"default": null,
"required": true
}
] ]
}, },
"getList": { "getList": {
......
...@@ -3,6 +3,8 @@ from jinja2 import Environment, FileSystemLoader ...@@ -3,6 +3,8 @@ from jinja2 import Environment, FileSystemLoader
import json import json
import os import os
import re import re
import hashlib
import time
''' '''
流程: 流程:
...@@ -11,6 +13,37 @@ import re ...@@ -11,6 +13,37 @@ import re
三、自动运行项目 三、自动运行项目
''' '''
# 比较两个文件内容是否相同,这里没有使用md5内容摘要算法,MD5算法的缺点是,针对大文件,计算耗时。虽然咱们这里不存在大文件,但是条条大路通罗马嘛,试试其他方法也挺好。
def cmp_file(file1, file2):
f1 = os.stat(file1)
f2 = os.stat(file2)
if f1.st_size != f2.st_size:
return False
buf_size = 8 * 1024
with open(file1, "rb") as fp1, open(file2, "rb") as fp2:
while True:
buf1 = fp1.read(buf_size)
buf2 = fp2.read(buf_size)
if buf1 != buf2:
return False
# 这里表示文件读完了
if not buf1 or not buf2:
return True
def cmp_md5(contnet1, content2):
m1 = hashlib.md5()
m1.update(bytearray(contnet1, 'utf-8'))
m2 = hashlib.md5()
m2.update(bytearray(content2, 'utf-8'))
return m1.hexdigest() == m2.hexdigest()
# 将字符串首字母转换成大写字母 # 将字符串首字母转换成大写字母
def convertFirstLetterUpper(text_str): def convertFirstLetterUpper(text_str):
# return text_str.capitalize() # return text_str.capitalize()
...@@ -70,13 +103,30 @@ def handleRender(result, tpl, target_file, **kwargs): ...@@ -70,13 +103,30 @@ def handleRender(result, tpl, target_file, **kwargs):
jinja_tpl = jinja_env.get_template(tpl) jinja_tpl = jinja_env.get_template(tpl)
content = jinja_tpl.render({ "config": result, **kwargs }) content = jinja_tpl.render({ "config": result, **kwargs })
# print("############", output_dir) # print("############", output_dir)
target_file = os.sep.join([output_dir, target_file]) target_file = os.sep.join([output_dir, target_file])
if not os.path.exists(os.path.dirname(target_file)): if not os.path.exists(os.path.dirname(target_file)):
os.makedirs(os.path.dirname(target_file)) os.makedirs(os.path.dirname(target_file))
# 这里需要比较目标文件夹是否已经存在同名文件,如果存在,则需要比较两个文件内容是否一致
# 如果不一致时,则需要给旧的文件打上时间戳,作为备份文件
# 具体流程:
# 先将原来文件重命名,然后新的内容写入到重命名的文件中
# 最后比较两个文件内容是否一致,如果一致,则删除重命名的那个旧的备份文件
tmp_file = ""
if os.path.exists(target_file) and os.stat(target_file).st_size > 0:
n, e = os.path.splitext(target_file)
tmp_file = "{}.{}{}".format(n, time.strftime("%Y%m%d%H%M%S", time.localtime()), e)
os.rename(target_file, tmp_file)
with open(target_file, 'w', encoding='utf-8') as f: with open(target_file, 'w', encoding='utf-8') as f:
f.write(content) f.write(content)
if cmp_file(tmp_file, target_file) == True:
os.remove(tmp_file)
def parseConfig(config): def parseConfig(config):
# 解析配置文件 # 解析配置文件
for cfg in config.get("apis"): for cfg in config.get("apis"):
......
...@@ -16,7 +16,7 @@ class {{ config['name'] | letterUpper }}Resource(object): ...@@ -16,7 +16,7 @@ class {{ config['name'] | letterUpper }}Resource(object):
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = {{ config['name'] | letterUpper }}Model.query.filter({{ config['name'] | letterUpper }}Model.areaName == params.get('areaName')).first() result = {{ config['name'] | letterUpper }}Model.query.filter({{ config['name'] | letterUpper }}Model.{{ config["model"]["fields"][0]["name"] }} == params.get('{{ config["model"]["fields"][0]["name"] }}')).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['id'] result.update_by = jwt['id']
......
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