Commit b9b8ad2e authored by wanli's avatar wanli

update

parent 31c45ef7
...@@ -196,6 +196,12 @@ class AppsManager(object): ...@@ -196,6 +196,12 @@ class AppsManager(object):
for item in result: for item in result:
temp.append(item.to_dict(only=["uuid", "app_name"])) temp.append(item.to_dict(only=["uuid", "app_name"]))
return temp, len(temp), "get app {}.".format("success" if temp else "fail") return temp, len(temp), "get app {}.".format("success" if temp else "fail")
elif "scope_type" in data and data.get("scope_type") == "distinct":
result = select(p.category for p in Apps)
temp = []
for item in result:
temp.append(item)
return temp, len(temp), "success"
result = Apps.select().where(**temp).order_by(Apps.sort).sort_by(desc(Apps.create_at)).page(data.get("pagenum", 1), pagesize=data.get("pagesize", 10)) result = Apps.select().where(**temp).order_by(Apps.sort).sort_by(desc(Apps.create_at)).page(data.get("pagenum", 1), pagesize=data.get("pagesize", 10))
count = Apps.select().where(**temp).count() count = Apps.select().where(**temp).count()
......
...@@ -31,6 +31,7 @@ class DeleteSchema(BaseSchema): ...@@ -31,6 +31,7 @@ class DeleteSchema(BaseSchema):
class QuerySchema(BaseSchema): class QuerySchema(BaseSchema):
uuid = fields.UUID(required=False) uuid = fields.UUID(required=False)
app_name = fields.String(required=False) app_name = fields.String(required=False)
category = fields.String(required=False)
scope_type = fields.String(required=False) scope_type = fields.String(required=False)
pagenum = fields.Int(required=False) pagenum = fields.Int(required=False)
pagesize = fields.Int(required=False, max=50) # 防止用户传特别大的数,导致数据库查询阻塞 pagesize = fields.Int(required=False, max=50) # 防止用户传特别大的数,导致数据库查询阻塞
......
...@@ -5,6 +5,7 @@ import json ...@@ -5,6 +5,7 @@ import json
import logging import logging
import traceback import traceback
import uuid import uuid
import sqlite3
from datetime import datetime from datetime import datetime
from flask import Blueprint, request, redirect, url_for, json, Response, send_file, make_response, send_from_directory from flask import Blueprint, request, redirect, url_for, json, Response, send_file, make_response, send_from_directory
...@@ -98,6 +99,18 @@ def update_db(): ...@@ -98,6 +99,18 @@ def update_db():
print(index) print(index)
result.append(str(uuid.uuid1())) result.append(str(uuid.uuid1()))
# conn = sqlite3.connect('./app-store.db')
# cur = conn.cursor()
# update_sql = """update test set name = 'noname' where id = ?"""
# x = (1, )
# cur.execute(update_sql, x)
# # commit()提交事务
# conn.commit()
# # 关闭游标
# cur.close()
# # 关闭连接
# conn.close()
return response_result(ResponseCode.OK, data=result) return response_result(ResponseCode.OK, data=result)
@api.route("/system/convertString", methods=['POST']) @api.route("/system/convertString", methods=['POST'])
......
...@@ -11,6 +11,16 @@ ...@@ -11,6 +11,16 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="应用分类">
<el-select v-model="form.category" filterable placeholder="请选择分类">
<el-option
v-for="(item, index) in categoryList"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</el-form-item>
<el-form-item <el-form-item
><el-button type="primary" @click="onSubmit" ><el-button type="primary" @click="onSubmit"
>查询</el-button >查询</el-button
...@@ -236,10 +246,12 @@ export default { ...@@ -236,10 +246,12 @@ export default {
total: 0, total: 0,
list: [], list: [],
selectList: [], selectList: [],
categoryList: [],
isLoading: false, isLoading: false,
form: { form: {
uuid: null, uuid: null,
name: null, name: null,
category: null,
pagesize: 15, pagesize: 15,
pagenum: 1, pagenum: 1,
}, },
...@@ -292,6 +304,13 @@ export default { ...@@ -292,6 +304,13 @@ export default {
this.isLoading = false; this.isLoading = false;
}); });
}, },
fetchCategory() {
getAppsList({ scope_type: "distinct" }).then(res => {
this.categoryList = res.data
}).catch(err => {
console.log(err.message)
})
},
handleSizeChange(e) { handleSizeChange(e) {
this.form.pagesize = e; this.form.pagesize = e;
this.fetchData(mapTrim(this.form)); this.fetchData(mapTrim(this.form));
...@@ -466,6 +485,7 @@ export default { ...@@ -466,6 +485,7 @@ export default {
created() { created() {
this.fetchData(mapTrim(this.form)); this.fetchData(mapTrim(this.form));
this.fetchSelectData(); this.fetchSelectData();
this.fetchCategory();
}, },
}; };
</script> </script>
......
...@@ -31,7 +31,7 @@ module.exports = { ...@@ -31,7 +31,7 @@ module.exports = {
// change xxx-api/login => mock/login // change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
"/api/v1": { "/api/v1": {
target: "http://127.0.0.1:5000/", target: "http://127.0.0.1:5001/",
changeOrigin: true, changeOrigin: true,
pathRewrite: {}, pathRewrite: {},
}, },
......
...@@ -9,6 +9,20 @@ class SignalManager(object): ...@@ -9,6 +9,20 @@ class SignalManager(object):
actionGetListArea = PySignal() actionGetListArea = PySignal()
actionGetArea = PySignal() actionGetArea = PySignal()
actionPutArea = PySignal() actionPutArea = PySignal()
actionPostApp = PySignal()
actionDeleteApp = PySignal()
actionGetListApp = PySignal()
actionGetApp = PySignal()
actionPutApp = PySignal()
actionGetListPackage = PySignal()
actionGetPackage = PySignal()
actionPostUser = PySignal()
actionDeleteUser = PySignal()
actionGetListUser = PySignal()
actionGetUser = PySignal()
actionPutUser = PySignal()
actionGetListLogin = PySignal()
actionGetLogin = PySignal()
def __init__(self): def __init__(self):
super().__init__() super().__init__()
......
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
from application.app import signalManager from application.app import signalManager
from .area import areaManager from .area import areaManager
from .app import appManager
from .package import packageManager
from .user import userManager
from .login import loginManager
def initConnect(): def initConnect():
signalManager.actionPostArea.connect(areaManager.post) signalManager.actionPostArea.connect(areaManager.post)
...@@ -10,5 +14,19 @@ def initConnect(): ...@@ -10,5 +14,19 @@ def initConnect():
signalManager.actionGetListArea.connect(areaManager.getList) signalManager.actionGetListArea.connect(areaManager.getList)
signalManager.actionGetArea.connect(areaManager.get) signalManager.actionGetArea.connect(areaManager.get)
signalManager.actionPutArea.connect(areaManager.put) signalManager.actionPutArea.connect(areaManager.put)
signalManager.actionPostApp.connect(appManager.post)
signalManager.actionDeleteApp.connect(appManager.delete)
signalManager.actionGetListApp.connect(appManager.getList)
signalManager.actionGetApp.connect(appManager.get)
signalManager.actionPutApp.connect(appManager.put)
signalManager.actionGetListPackage.connect(packageManager.getList)
signalManager.actionGetPackage.connect(packageManager.get)
signalManager.actionPostUser.connect(userManager.post)
signalManager.actionDeleteUser.connect(userManager.delete)
signalManager.actionGetListUser.connect(userManager.getList)
signalManager.actionGetUser.connect(userManager.get)
signalManager.actionPutUser.connect(userManager.put)
signalManager.actionGetListLogin.connect(loginManager.getList)
signalManager.actionGetLogin.connect(loginManager.get)
initConnect() initConnect()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.app import AppModel
from webcreator.utils import ResponseCode, response_result
class AppResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = AppModel.query.filter(*filters).order_by(AppModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = AppModel.query.filter(AppModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = AppModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = AppModel.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 = AppModel.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()
appManager = AppResource()
\ No newline at end of file
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.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
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
from datetime import datetime
from application.app import db
from models.package import PackageModel
from webcreator.utils import ResponseCode, response_result
class PackageResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = PackageModel.query.filter(*filters).order_by(PackageModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = PackageModel.query.filter(PackageModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = PackageModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = PackageModel.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 = PackageModel.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()
packageManager = PackageResource()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.user import UserModel
from webcreator.utils import ResponseCode, response_result
class UserResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = UserModel.query.filter(*filters).order_by(UserModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = UserModel.query.filter(UserModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = UserModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = UserModel.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 = UserModel.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()
userManager = UserResource()
\ No newline at end of file
...@@ -555,3 +555,15 @@ ...@@ -555,3 +555,15 @@
[2021-06-15 10:51:14,114][ INFO] [ _internal.py _log 225] * Restarting with stat [2021-06-15 10:51:14,114][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 10:51:15,218][WARNING] [ _internal.py _log 225] * Debugger is active! [2021-06-15 10:51:15,218][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 10:51:15,280][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074 [2021-06-15 10:51:15,280][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
[2021-06-15 10:51:15,507][ INFO] [ _internal.py _log 225] * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
[2021-06-15 11:10:06,108][ INFO] [ _internal.py _log 225] * Detected change in 'D:\\projects\\scriptiot\\evm-store\\tools\\build_out\\manager.py', reloading
[2021-06-15 11:10:06,221][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 14:08:51,000][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 14:08:52,172][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 14:08:52,216][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
[2021-06-15 14:08:52,454][ INFO] [ _internal.py _log 225] * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
[2021-06-15 15:31:27,665][ INFO] [ _internal.py _log 225] * Detected change in 'D:\\projects\\scriptiot\\evm-store\\tools\\build_out\\webcreator\\__init__.py', reloading
[2021-06-15 15:31:27,792][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 16:06:30,317][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 16:06:31,585][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 16:06:31,633][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class AppModel(PrimaryModel):
__tablename__ = 'evm_app'
app_name = db.Column(db.String(70), index = True)
app_icon = db.Column(db.String(200))
app_version = db.Column(db.String(20))
category = db.Column(db.Integer)
category_2th = db.Column(db.Integer)
developer = db.Column(db.Integer)
download_url = db.Column(db.String(20))
app_file_size = db.Column(db.Integer)
app_screen_size = db.Column(db.Integer)
app_arch = db.Column(db.String(20))
app_review = db.Column(db.String(100))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app_name, app_icon, app_version, category, category_2th, developer, download_url, app_file_size, app_screen_size, app_arch, app_review):
self.app_name = app_name
self.app_icon = app_icon
self.app_version = app_version
self.category = category
self.category_2th = category_2th
self.developer = developer
self.download_url = download_url
self.app_file_size = app_file_size
self.app_screen_size = app_screen_size
self.app_arch = app_arch
self.app_review = app_review
def __repr__(self):
return '<AppModel %r>' % (self.app_name)
def to_json(self):
return {
'app_name': self.app_name,
'app_icon': self.app_icon,
'app_version': self.app_version,
'category': self.category,
'category_2th': self.category_2th,
'developer': self.developer,
'download_url': self.download_url,
'app_file_size': self.app_file_size,
'app_screen_size': self.app_screen_size,
'app_arch': self.app_arch,
'app_review': self.app_review,
}
class PostAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
developer = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
postAppSchema = PostAppSchema()
postAppsSchema = PostAppSchema(many=True)
class DeleteAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
deleteAppSchema = DeleteAppSchema()
class GetListAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getListAppSchema = GetListAppSchema()
class GetAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getAppSchema = GetAppSchema()
class PutAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
putAppSchema = PutAppSchema()
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from application.app import db, ma from application.app import db, ma
from datetime import datetime
from .base import PrimaryModel from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class AreaModel(PrimaryModel): class AreaModel(PrimaryModel):
__tablename__ = 'area' __tablename__ = 'evm_area'
areaCode = db.Column(db.String(20), index = True) areaCode = db.Column(db.String(20), index = True)
areaName = db.Column(db.String(20), index = True) areaName = db.Column(db.String(20), index = True)
...@@ -32,6 +31,17 @@ class AreaModel(PrimaryModel): ...@@ -32,6 +31,17 @@ class AreaModel(PrimaryModel):
def __repr__(self): def __repr__(self):
return '<AreaModel %r>' % (self.areaCode) return '<AreaModel %r>' % (self.areaCode)
def to_json(self):
return {
'areaCode': self.areaCode,
'areaName': self.areaName,
'level': self.level,
'cityCode': self.cityCode,
'center': self.center,
'parentId': self.parentId,
'hasChildren': self.hasChildren,
}
class PostAreaSchema(ma.SQLAlchemySchema): class PostAreaSchema(ma.SQLAlchemySchema):
class Meta: class Meta:
......
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class LoginModel(PrimaryModel):
__tablename__ = 'evm_login'
user = db.Column(db.Integer)
login_at = db.Column(db.String(200))
user_agent = db.Column(db.String(200))
ip = db.Column(db.String(128))
geo_location = db.Column(db.String(200))
operator = db.Column(db.String(50))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, user, login_at, user_agent, ip, geo_location, operator):
self.user = user
self.login_at = login_at
self.user_agent = user_agent
self.ip = ip
self.geo_location = geo_location
self.operator = operator
def __repr__(self):
return '<LoginModel %r>' % (self.user)
def to_json(self):
return {
'login_at': self.login_at,
'user_agent': self.user_agent,
'ip': self.ip,
'geo_location': self.geo_location,
'operator': self.operator,
}
class GetListLoginSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = LoginModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
user = ma.auto_field()
login_at = ma.auto_field()
user_agent = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getListLoginSchema = GetListLoginSchema()
class GetLoginSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = LoginModel
user = ma.auto_field()
login_at = ma.auto_field()
user_agent = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getLoginSchema = GetLoginSchema()
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class PackageModel(PrimaryModel):
__tablename__ = 'evm_package'
app = db.Column(db.Integer)
app_version = db.Column(db.String(200))
package_info = db.Column(db.String(20))
file_path = db.Column(db.String(200))
source = db.Column(db.Integer)
user_agent = db.Column(db.String(200))
download_url = db.Column(db.String(200))
ip = db.Column(db.String(128))
geo_location = db.Column(db.String(200))
operator = db.Column(db.String(50))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app, app_version, package_info, file_path, source, user_agent, download_url, ip, geo_location, operator):
self.app = app
self.app_version = app_version
self.package_info = package_info
self.file_path = file_path
self.source = source
self.user_agent = user_agent
self.download_url = download_url
self.ip = ip
self.geo_location = geo_location
self.operator = operator
def __repr__(self):
return '<PackageModel %r>' % (self.app)
def to_json(self):
return {
'app_version': self.app_version,
'package_info': self.package_info,
'file_path': self.file_path,
'source': self.source,
'user_agent': self.user_agent,
'download_url': self.download_url,
'ip': self.ip,
'geo_location': self.geo_location,
'operator': self.operator,
}
class GetListPackageSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = PackageModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app = ma.auto_field()
app_version = ma.auto_field()
package_info = ma.auto_field()
file_path = ma.auto_field()
source = ma.auto_field()
user_agent = ma.auto_field()
download_url = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getListPackageSchema = GetListPackageSchema()
class GetPackageSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = PackageModel
app = ma.auto_field()
app_version = ma.auto_field()
package_info = ma.auto_field()
file_path = ma.auto_field()
source = ma.auto_field()
user_agent = ma.auto_field()
download_url = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getPackageSchema = GetPackageSchema()
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class UserModel(PrimaryModel):
__tablename__ = 'evm_user'
app_name = db.Column(db.String(70), index = True)
app_icon = db.Column(db.String(200))
app_version = db.Column(db.String(20))
category = db.Column(db.Integer)
category_2th = db.Column(db.Integer)
developer = db.Column(db.Integer)
download_url = db.Column(db.String(20))
app_file_size = db.Column(db.Integer)
app_screen_size = db.Column(db.Integer)
app_arch = db.Column(db.String(20))
app_review = db.Column(db.String(100))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app_name, app_icon, app_version, category, category_2th, developer, download_url, app_file_size, app_screen_size, app_arch, app_review):
self.app_name = app_name
self.app_icon = app_icon
self.app_version = app_version
self.category = category
self.category_2th = category_2th
self.developer = developer
self.download_url = download_url
self.app_file_size = app_file_size
self.app_screen_size = app_screen_size
self.app_arch = app_arch
self.app_review = app_review
def __repr__(self):
return '<UserModel %r>' % (self.app_name)
def to_json(self):
return {
'app_name': self.app_name,
'app_icon': self.app_icon,
'app_version': self.app_version,
'category': self.category,
'category_2th': self.category_2th,
'developer': self.developer,
'download_url': self.download_url,
'app_file_size': self.app_file_size,
'app_screen_size': self.app_screen_size,
'app_arch': self.app_arch,
'app_review': self.app_review,
}
class PostUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
developer = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
postUserSchema = PostUserSchema()
postUsersSchema = PostUserSchema(many=True)
class DeleteUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
deleteUserSchema = DeleteUserSchema()
class GetListUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getListUserSchema = GetListUserSchema()
class GetUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getUserSchema = GetUserSchema()
class PutUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
putUserSchema = PutUserSchema()
...@@ -2,10 +2,11 @@ ...@@ -2,10 +2,11 @@
from flask import Blueprint from flask import Blueprint
from flask_restful import Api from flask_restful import Api
from . import area from . import area
from . import app
from . import package
from . import user
from . import login
api_v1 = Blueprint('api_v1', __name__) api_v1 = Blueprint('api_v1', __name__)
...@@ -13,4 +14,16 @@ api = Api(api_v1) ...@@ -13,4 +14,16 @@ api = Api(api_v1)
api.add_resource(area.AreaResource, '/area/<string:uuid>') api.add_resource(area.AreaResource, '/area/<string:uuid>')
api.add_resource(area.AreaResourceList, '/area', endpoint='/') api.add_resource(area.AreaResourceList, '/area')
api.add_resource(app.AppResource, '/app/<string:uuid>')
api.add_resource(app.AppResourceList, '/app')
api.add_resource(package.PackageResource, '/package/<string:uuid>')
api.add_resource(package.PackageResourceList, '/package')
api.add_resource(user.UserResource, '/user/<string:uuid>')
api.add_resource(user.UserResourceList, '/user')
api.add_resource(login.LoginResource, '/login/<string:uuid>')
api.add_resource(login.LoginResourceList, '/login')
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.app import postAppSchema,deleteAppSchema,getListAppSchema,getAppSchema,putAppSchema
from webcreator.response import ResponseCode, response_result
class AppResource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getListAppSchema.load(json_payload)
result = signalManager.actionGetApp.emit(**data)
json_dumps = getListAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def post(self):
try:
json_payload = request.json
data = postAppSchema.load(json_payload)
result = signalManager.actionPostApp.emit(**data)
json_dumps = postAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class AppResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getAppSchema.load(json_payload)
result = signalManager.actionGetApp.emit(**data)
json_dumps = getAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def put(self):
try:
json_payload = request.json
data = putAppSchema.load(json_payload)
result = signalManager.actionPutApp.emit(**data)
json_dumps = putAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def delete(self):
try:
json_payload = request.json
data = deleteAppSchema.load(json_payload)
result = signalManager.actionDeleteApp.emit(**data)
json_dumps = deleteAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
...@@ -12,8 +12,6 @@ class AreaResource(Resource): ...@@ -12,8 +12,6 @@ class AreaResource(Resource):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser() # self.parser = RequestParser()
@jwt_required
def get(self): def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1) # self.parser.add_argument("page", type=int, location="args", default=1)
...@@ -31,7 +29,6 @@ class AreaResource(Resource): ...@@ -31,7 +29,6 @@ class AreaResource(Resource):
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
@jwt_required @jwt_required
def post(self): def post(self):
try: try:
...@@ -44,13 +41,13 @@ class AreaResource(Resource): ...@@ -44,13 +41,13 @@ class AreaResource(Resource):
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
class AreaResourceList(Resource): class AreaResourceList(Resource):
def __init__(self): def __init__(self):
pass pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser() # self.parser = RequestParser()
@jwt_required @jwt_required
def get(self): def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
...@@ -93,4 +90,4 @@ class AreaResourceList(Resource): ...@@ -93,4 +90,4 @@ class AreaResourceList(Resource):
return jsonify(json_dumps), 200 return jsonify(json_dumps), 200
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
\ No newline at end of file
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.login import getListLoginSchema,getLoginSchema
from webcreator.response import ResponseCode, response_result
class LoginResource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getListLoginSchema.load(json_payload)
result = signalManager.actionGetLogin.emit(**data)
json_dumps = getListLoginSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class LoginResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getLoginSchema.load(json_payload)
result = signalManager.actionGetLogin.emit(**data)
json_dumps = getLoginSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.package import getListPackageSchema,getPackageSchema
from webcreator.response import ResponseCode, response_result
class PackageResource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getListPackageSchema.load(json_payload)
result = signalManager.actionGetPackage.emit(**data)
json_dumps = getListPackageSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class PackageResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getPackageSchema.load(json_payload)
result = signalManager.actionGetPackage.emit(**data)
json_dumps = getPackageSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.user import postUserSchema,deleteUserSchema,getListUserSchema,getUserSchema,putUserSchema
from webcreator.response import ResponseCode, response_result
class UserResource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getListUserSchema.load(json_payload)
result = signalManager.actionGetUser.emit(**data)
json_dumps = getListUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def post(self):
try:
json_payload = request.json
data = postUserSchema.load(json_payload)
result = signalManager.actionPostUser.emit(**data)
json_dumps = postUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class UserResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", json_payload)
data = getUserSchema.load(json_payload)
result = signalManager.actionGetUser.emit(**data)
json_dumps = getUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def put(self):
try:
json_payload = request.json
data = putUserSchema.load(json_payload)
result = signalManager.actionPutUser.emit(**data)
json_dumps = putUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def delete(self):
try:
json_payload = request.json
data = deleteUserSchema.load(json_payload)
result = signalManager.actionDeleteUser.emit(**data)
json_dumps = deleteUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
This diff is collapsed.
...@@ -41,7 +41,7 @@ def handleSignal(config): ...@@ -41,7 +41,7 @@ def handleSignal(config):
target_file = os.sep.join(["controllers", "__init__.py"]) target_file = os.sep.join(["controllers", "__init__.py"])
handleRender(config, 'signal_manager_init.tpl', target_file) handleRender(config, 'signal_manager_init.tpl', target_file)
def handleModel(config): def handleModel(config, application):
# 将所有有默认值的字段分为一组,没有默认值的字段分为另一组 # 将所有有默认值的字段分为一组,没有默认值的字段分为另一组
# 生成模板代码时,无默认值的字段在前,有默认值的字段字在后 # 生成模板代码时,无默认值的字段在前,有默认值的字段字在后
# 收集表字段信息 # 收集表字段信息
...@@ -53,7 +53,7 @@ def handleModel(config): ...@@ -53,7 +53,7 @@ def handleModel(config):
print(m) print(m)
target_file = os.sep.join(["models", "{}.py".format(config.get("name"))]) target_file = os.sep.join(["models", "{}.py".format(config.get("name"))])
handleRender(config, 'model.tpl', target_file, fields=fields, extend=extend) handleRender(config, 'model.tpl', target_file, fields=fields, extend=extend, application=application)
def handleView(config): def handleView(config):
target_file = os.sep.join(["views", "{}.py".format(config.get("name"))]) target_file = os.sep.join(["views", "{}.py".format(config.get("name"))])
...@@ -80,7 +80,7 @@ def handleRender(result, tpl, target_file, **kwargs): ...@@ -80,7 +80,7 @@ def handleRender(result, tpl, target_file, **kwargs):
def parseConfig(config): def parseConfig(config):
# 解析配置文件 # 解析配置文件
for cfg in config.get("apis"): for cfg in config.get("apis"):
handleModel(cfg) handleModel(cfg, config.get("application"))
handleView(cfg) handleView(cfg)
handleController(cfg) handleController(cfg)
handleResources(config.get("apis")) handleResources(config.get("apis"))
......
from datetime import datetime from datetime import datetime
from application.app import db from application.app import db
from models.{{ config['model']['tableName'] }} import {{ config['model']['className'] }} from models.{{ config['name'] }} import {{ config['name'] | letterUpper }}Model
from webcreator.utils import ResponseCode, response_result from webcreator.utils import ResponseCode, response_result
class {{ config['controller']['className'] }}(object): class {{ config['name'] | letterUpper }}Resource(object):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
def get(self, params): def get(self, params):
# handle business # handle business
filters = [] filters = []
result = {{ config['model']['className'] }}.query.filter(*filters).order_by({{ config['model']['className'] }}.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False) result = {{ config['name'] | letterUpper }}Model.query.filter(*filters).order_by({{ config['name'] | letterUpper }}Model.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result return result
def post(self, params, jwt=None): def post(self, params, jwt=None):
# handle business # handle business
result = {{ config['model']['className'] }}.query.filter({{ config['model']['className'] }}.areaName == params.get('areaName')).first() result = {{ config['name'] | letterUpper }}Model.query.filter({{ config['name'] | letterUpper }}Model.areaName == params.get('areaName')).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']
...@@ -26,14 +26,14 @@ class {{ config['controller']['className'] }}(object): ...@@ -26,14 +26,14 @@ class {{ config['controller']['className'] }}(object):
elif result and result.is_delete == False: elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR) return response_result(ResponseCode.EXISTS_ERROR)
result = {{ config['model']['className'] }}(**params) result = {{ config['name'] | letterUpper }}Model(**params)
db.session.add(result) db.session.add(result)
db.session.commit() db.session.commit()
return response_result(ResponseCode.OK) return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None): def put(self, id, params, jwt=None):
# handle business # handle business
result = {{ config['model']['className'] }}.query.get(id) result = {{ config['name'] | letterUpper }}Model.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA) if not result: return response_result(ResponseCode.NO_DATA)
if params: if params:
for key, value in params.items(): for key, value in params.items():
...@@ -46,7 +46,7 @@ class {{ config['controller']['className'] }}(object): ...@@ -46,7 +46,7 @@ class {{ config['controller']['className'] }}(object):
def delete(self, id, jwt=None): def delete(self, id, jwt=None):
# handle business # handle business
result = {{ config['model']['className'] }}.query.get(id) result = {{ config['name'] | letterUpper }}Model.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND) if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else: else:
result.update_by = jwt['id'] result.update_by = jwt['id']
...@@ -55,4 +55,4 @@ class {{ config['controller']['className'] }}(object): ...@@ -55,4 +55,4 @@ class {{ config['controller']['className'] }}(object):
db.session.delete(result) db.session.delete(result)
db.session.commit() db.session.commit()
{{ config["name"] }}Manager = {{ config['controller']['className'] }}() {{ config["name"] }}Manager = {{ config['name'] | letterUpper }}Resource()
\ No newline at end of file \ No newline at end of file
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from application.app import db, ma from application.app import db, ma
from datetime import datetime
from .base import PrimaryModel from .base import PrimaryModel
{%- if extend %} {# 判断是否有扩展字段,也就是model对象不包含的字段,因为查询里面还有pagepageSize等这两种字段 #} {%- if extend %} {# 判断是否有扩展字段,也就是model对象不包含的字段,因为查询里面还有pagepageSize等这两种字段 #}
from marshmallow import Schema, fields, INCLUDE, EXCLUDE from marshmallow import Schema, fields, INCLUDE, EXCLUDE
{%- endif %} {%- endif %}
class {{ config['model']['className'] }}(PrimaryModel): class {{ config['name'] | letterUpper }}Model(PrimaryModel):
__tablename__ = '{{ config['model']['tableName'] }}' __tablename__ = '{{ application["tablePrefix"] }}{{ config['name'] }}'
{% for value in config['model']['fields'] %} {% for value in config['model']['fields'] %}
{%- if value.get('primaryKey', None) %} {%- if value.get('primaryKey', None) %}
{{ value.get('name') }} = db.Column(db.{{ value.get('dataType') }}, primary_key = True, {% if value.get('autoIncrement') %}autoincrement = True{% endif %}) {{ value.get('name') }} = db.Column(db.{{ value.get('dataType') }}, primary_key = True, {% if value.get('autoIncrement') %}autoincrement = True{% endif %})
...@@ -29,14 +28,23 @@ class {{ config['model']['className'] }}(PrimaryModel): ...@@ -29,14 +28,23 @@ class {{ config['model']['className'] }}(PrimaryModel):
{%- endfor %} {%- endfor %}
def __repr__(self): def __repr__(self):
return '<{{ config['model']['className'] }} %r>' % (self.{{ config['model']['fields'][0]["name"] }}) return '<{{ config['name'] | letterUpper }}Model %r>' % (self.{{ config['model']['fields'][0]["name"] }})
def to_json(self):
return {
{%- for item in config['model']['fields'] %}
{%- if item.get("toJson") %}
'{{ item.get("name") }}': self.{{ item.get("name") }},
{%- endif %}
{%- endfor %}
}
{% for key, value in config["view"].items() %} {% for key, value in config["view"].items() %}
class {{ key |letterUpper }}{{ config['name'] | letterUpper }}Schema(ma.SQLAlchemySchema): class {{ key | letterUpper }}{{ config['name'] | letterUpper }}Schema(ma.SQLAlchemySchema):
class Meta: class Meta:
# unknown = INCLUDE # 未知字段默认包含 # unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除 # unknown = EXCLUDE # 未知字段默认排除
model = {{ config['model']['className'] }} model = {{ config['name'] | letterUpper }}Model
{%- if config['model']['foreignKey'] %} {%- if config['model']['foreignKey'] %}
include_fk = {{ config['model']['foreignKey'] }} include_fk = {{ config['model']['foreignKey'] }}
{% endif %} {% endif %}
......
...@@ -2,16 +2,15 @@ ...@@ -2,16 +2,15 @@
from flask import Blueprint from flask import Blueprint
from flask_restful import Api from flask_restful import Api
{%- for item in config %}
{% for item in config %}
from . import {{item["name"]}} from . import {{item["name"]}}
{% endfor %} {%- endfor %}
api_v1 = Blueprint('api_v1', __name__) api_v1 = Blueprint('api_v1', __name__)
api = Api(api_v1) api = Api(api_v1)
{% for item in config %} {% for item in config %}
api.add_resource({{ item['name'] }}.{{ item['controller']['className'] }}, '{{ item['view']['put']['path'] }}'{% if item['view']['put']['endpoint'] %}, endpoint={{ item['view']['put']['endpoint'] }}{% endif %}) api.add_resource({{ item['name'] }}.{{ item['name'] | letterUpper }}Resource, '/{{ item['name'] }}{{ item['view']['get']['path'] }}'{% if item['view']['get']['endpoint'] %}, endpoint={{ item['view']['get']['endpoint'] }}{% endif %})
api.add_resource({{ item['name'] }}.{{ item['controller']['className'] }}List, '{{ item['view']['post']['path'] }}'{% if item['view']['post']['endpoint'] %}, endpoint='{{ item['view']['post']['endpoint'] }}'{% endif %}) api.add_resource({{ item['name'] }}.{{ item['name'] | letterUpper }}ResourceList, '/{{ item['name'] }}{{ item['view']['getList']['path'] }}'{% if item['view']['getList']['endpoint'] %}, endpoint='{{ item['view']['getList']['endpoint'] }}'{% endif %})
{% endfor %} {% endfor %}
...@@ -9,13 +9,14 @@ from models.{{ config['name'] }} import {% for k, v in config["view"].items() -% ...@@ -9,13 +9,14 @@ from models.{{ config['name'] }} import {% for k, v in config["view"].items() -%
{%- endfor %} {%- endfor %}
from webcreator.response import ResponseCode, response_result from webcreator.response import ResponseCode, response_result
class {{ config['controller']['className'] | letterUpper }}(Resource): class {{ config['name'] | letterUpper }}Resource(Resource):
def __init__(self): def __init__(self):
pass pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser() # self.parser = RequestParser()
{% if config["view"]["getList"] %} {%- if config["view"]["getList"] %}
{% if config["view"]["getList"]["auth"] %}
@jwt_required @jwt_required
{%- endif %} {%- endif %}
def get(self): def get(self):
...@@ -34,8 +35,10 @@ class {{ config['controller']['className'] | letterUpper }}(Resource): ...@@ -34,8 +35,10 @@ class {{ config['controller']['className'] | letterUpper }}(Resource):
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
{%- endif %}
{% if config["view"]["post"] %} {%- if config["view"]["post"] %}
{% if config["view"]["post"]["auth"] %}
@jwt_required @jwt_required
{%- endif %} {%- endif %}
def post(self): def post(self):
...@@ -43,19 +46,21 @@ class {{ config['controller']['className'] | letterUpper }}(Resource): ...@@ -43,19 +46,21 @@ class {{ config['controller']['className'] | letterUpper }}(Resource):
json_payload = request.json json_payload = request.json
data = post{{ config['name'] | letterUpper }}Schema.load(json_payload) data = post{{ config['name'] | letterUpper }}Schema.load(json_payload)
result = signalManager.actionPost{{ config["name"] | letterUpper }}.emit(**data) result = signalManager.actionPost{{ config["name"] | letterUpper }}.emit(**data)
json_dumps = post{{ config['name'] |letterUpper }}Schema.dump(result) json_dumps = post{{ config['name'] | letterUpper }}Schema.dump(result)
return jsonify(json_dumps), 200 return jsonify(json_dumps), 200
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
{% endif %}
class {{ config['controller']['className'] | letterUpper }}List(Resource): class {{ config['name'] | letterUpper }}ResourceList(Resource):
def __init__(self): def __init__(self):
pass pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser() # self.parser = RequestParser()
{% if config["view"]["get"] %} {%- if config["view"]["get"] %}
{% if config["view"]["get"]["auth"] %}
@jwt_required @jwt_required
{%- endif %} {%- endif %}
def get(self): def get(self):
...@@ -74,8 +79,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource): ...@@ -74,8 +79,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
{% endif %}
{% if config["view"]["put"] %} {%- if config["view"]["put"] %}
{% if config["view"]["put"]["auth"] %}
@jwt_required @jwt_required
{%- endif %} {%- endif %}
def put(self): def put(self):
...@@ -88,8 +95,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource): ...@@ -88,8 +95,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
{% endif %}
{% if config["view"]["delete"] %} {%- if config["view"]["delete"] %}
{% if config["view"]["delete"]["auth"] %}
@jwt_required @jwt_required
{%- endif %} {%- endif %}
def delete(self): def delete(self):
...@@ -101,4 +110,5 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource): ...@@ -101,4 +110,5 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
return jsonify(json_dumps), 200 return jsonify(json_dumps), 200
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR) return response_result(ResponseCode.DB_ERROR)
\ No newline at end of file {% endif %}
\ No newline at end of file
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