序列化类移到models里,简化代码

This commit is contained in:
mkg
2021-04-29 13:09:10 +08:00
parent 8f4054e576
commit 3d5e4b9e9b
14 changed files with 123 additions and 157 deletions
+2
View File
@@ -1,3 +1,5 @@
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
db = SQLAlchemy()
ma = Marshmallow()
+21 -1
View File
@@ -1,6 +1,7 @@
import datetime
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
class DictType(db.Model):
@@ -25,3 +26,22 @@ class DictData(db.Model):
remark = db.Column(db.String(255), comment='备注')
create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
class DictTypeSchema(ma.Schema): # 序列化类
id = fields.Str(attribute="id")
typeName = fields.Str(attribute="type_name")
typeCode = fields.Str(attribute="type_code")
description = fields.Str(attribute="description")
createTime = fields.Str(attribute="create_time")
updateName = fields.Str(attribute="update_time")
remark = fields.Str()
enable = fields.Str()
class DictDataSchema(ma.Schema): # 序列化类
dataId = fields.Str(attribute="id")
dataLabel = fields.Str(attribute="data_label")
dataValue = fields.Str(attribute="data_value")
remark = fields.Str()
enable = fields.Str()
+13 -1
View File
@@ -1,5 +1,6 @@
import datetime
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
class AdminLog(db.Model):
@@ -14,3 +15,14 @@ class AdminLog(db.Model):
user_agent = db.Column(db.Text)
create_time = db.Column(db.DateTime, default=datetime.datetime.now)
class LogSchema(ma.Schema): # 序列化类
id = fields.Integer()
method = fields.Str()
uid = fields.Str()
url = fields.Str()
desc = fields.Str()
ip = fields.Str()
user_agent = fields.Str()
success = fields.Bool()
create_time = fields.DateTime()
+12 -1
View File
@@ -1,6 +1,7 @@
import datetime
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
class Photo(db.Model):
@@ -11,3 +12,13 @@ class Photo(db.Model):
mime = db.Column(db.CHAR(50), nullable=False)
size = db.Column(db.CHAR(30), nullable=False)
create_time = db.Column(db.DateTime, default=datetime.datetime.now)
class PhotoSchema(ma.Schema):
id = fields.Integer()
name = fields.Str()
href = fields.Str()
mime = fields.Str()
size = fields.Str()
ext = fields.Str()
create_time = fields.DateTime()
+33 -1
View File
@@ -1,5 +1,6 @@
import datetime
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
class Power(db.Model):
@@ -16,3 +17,34 @@ class Power(db.Model):
create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
enable = db.Column(db.Integer, comment='是否开启')
# 权限models序列化类
class PowerSchema(ma.Schema):
id = fields.Integer()
title = fields.Str(attribute="name")
type = fields.Str()
code = fields.Str()
href = fields.Str(attribute="url")
openType = fields.Str(attribute="open_type")
parent_id = fields.Integer()
icon = fields.Str()
sort = fields.Integer()
create_time = fields.DateTime()
update_time = fields.DateTime()
enable = fields.Integer()
class PowerSchema2(ma.Schema): # 序列化类
powerId = fields.Str(attribute="id")
powerName = fields.Str(attribute="name")
powerType = fields.Str(attribute="type")
powerUrl = fields.Str(attribute="url")
openType = fields.Str(attribute="open_type")
parentId = fields.Str(attribute="parent_id")
icon = fields.Str()
sort = fields.Integer()
create_time = fields.DateTime()
update_time = fields.DateTime()
enable = fields.Integer()
+15 -1
View File
@@ -1,5 +1,7 @@
import datetime
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
from applications.models import admin_role_power
class Role(db.Model):
@@ -14,3 +16,15 @@ class Role(db.Model):
create_time = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='更新时间')
power = db.relationship('Power', secondary="admin_role_power", backref=db.backref('role'))
class RoleSchema(ma.Schema):
id = fields.Integer()
roleName = fields.Str(attribute="name")
roleCode = fields.Str(attribute="code")
enable = fields.Str()
remark = fields.Str()
details = fields.Str()
sort = fields.Integer()
create_at = fields.DateTime()
update_at = fields.DateTime()
+13 -1
View File
@@ -1,7 +1,9 @@
import datetime
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from applications.models import db
from applications.models import db, ma
from marshmallow import fields
from applications.models import admin_user_role
class User(db.Model, UserMixin):
@@ -22,3 +24,13 @@ class User(db.Model, UserMixin):
def validate_password(self, password):
return check_password_hash(self.password_hash, password)
# 用户models的序列化类
class UserSchema(ma.Schema):
id = fields.Integer()
username = fields.Str()
realname = fields.Str()
enable = fields.Integer()
create_at = fields.DateTime()
update_at = fields.DateTime()
+1 -24
View File
@@ -1,13 +1,9 @@
# 字典管理
# 查询字典类型
from flask_marshmallow import Marshmallow
from marshmallow import fields
from applications.models import db
from applications.models.admin_dict import DictType, DictData
ma = Marshmallow()
from applications.models.admin_dict import DictType, DictData, DictTypeSchema, DictDataSchema
# 通过type_code获取字典dict
@@ -25,25 +21,6 @@ def get_dict(typecode: str):
return Dict_list
class DictTypeSchema(ma.Schema): # 序列化类
id = fields.Str(attribute="id")
typeName = fields.Str(attribute="type_name")
typeCode = fields.Str(attribute="type_code")
description = fields.Str(attribute="description")
createTime = fields.Str(attribute="create_time")
updateName = fields.Str(attribute="update_time")
remark = fields.Str()
enable = fields.Str()
class DictDataSchema(ma.Schema): # 序列化类
dataId = fields.Str(attribute="id")
dataLabel = fields.Str(attribute="data_label")
dataValue = fields.Str(attribute="data_value")
remark = fields.Str()
enable = fields.Str()
def get_dict_type(page, limit, type_name):
dict_all = DictType.query
if type_name:
+1 -15
View File
@@ -1,24 +1,10 @@
import os
from flask import current_app
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import desc
from applications.models import db
from applications.models.admin_photo import Photo
from applications.models.admin_photo import Photo, PhotoSchema
from applications.service.upload import photos
ma = Marshmallow()
class PhotoSchema(ma.Schema):
id = fields.Integer()
name = fields.Str()
href = fields.Str()
mime = fields.Str()
size = fields.Str()
ext = fields.Str()
create_time = fields.DateTime()
def get_photo(page, limit):
photo = Photo.query.order_by(desc(Photo.create_time)).paginate(page=page, per_page=limit, error_out=False)
+1 -20
View File
@@ -1,28 +1,9 @@
from io import BytesIO
from flask import session, make_response
from flask_login import current_user
from flask_marshmallow import Marshmallow
from marshmallow import fields
from applications.models.admin_power import PowerSchema
from applications.service.CaptchaTool import gen_captcha
ma = Marshmallow()
# 权限models序列化类
class PowerSchema(ma.Schema):
id = fields.Integer()
title = fields.Str(attribute="name")
type = fields.Str()
code = fields.Str()
href = fields.Str(attribute="url")
openType = fields.Str(attribute="open_type")
parent_id = fields.Integer()
icon = fields.Str()
sort = fields.Integer()
create_time = fields.DateTime()
update_time = fields.DateTime()
enable = fields.Integer()
# 授权路由存入session
def add_auth_session():
+4 -23
View File
@@ -1,30 +1,11 @@
from flask_marshmallow import Marshmallow
from marshmallow import fields
from applications.models import db
from applications.models.admin_power import Power
from applications.models.admin_role import Role
ma = Marshmallow()
class PowerSchema(ma.Schema): # 序列化类
powerId = fields.Str(attribute="id")
powerName = fields.Str(attribute="name")
powerType = fields.Str(attribute="type")
powerUrl = fields.Str(attribute="url")
openType = fields.Str(attribute="pen_type")
parentId = fields.Str(attribute="parent_id")
icon = fields.Str()
sort = fields.Integer()
create_time = fields.DateTime()
update_time = fields.DateTime()
enable = fields.Integer()
from applications.models.admin_power import Power, PowerSchema2
from applications.models.admin_role import Role
def get_power_dict():
power = Power.query.all()
power_schema = PowerSchema(many=True)
power_schema = PowerSchema2(many=True)
power_dict = power_schema.dump(power)
return power_dict
@@ -32,7 +13,7 @@ def get_power_dict():
# 选择父节点
def select_parent():
power = Power.query.all()
power_schema = PowerSchema(many=True)
power_schema = PowerSchema2(many=True)
power_dict = power_schema.dump(power)
power_dict.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1})
return power_dict
+3 -33
View File
@@ -1,39 +1,9 @@
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import and_
from applications.models import db
from applications.models.admin_role import Role
from applications.models.admin_power import Power
from applications.models.admin_role import Role, RoleSchema
from applications.models.admin_power import Power, PowerSchema2
from applications.models.admin_user import User
ma = Marshmallow()
class RoleSchema(ma.Schema):
id = fields.Integer()
roleName = fields.Str(attribute="name")
roleCode = fields.Str(attribute="code")
enable = fields.Str()
remark = fields.Str()
details = fields.Str()
sort = fields.Integer()
create_at = fields.DateTime()
update_at = fields.DateTime()
class PowerSchema(ma.Schema): # 序列化类
powerId = fields.Str(attribute="id")
powerName = fields.Str(attribute="name")
powerType = fields.Str(attribute="type")
powerUrl = fields.Str(attribute="url")
openType = fields.Str(attribute="pen_type")
parentId = fields.Str(attribute="parent_id")
icon = fields.Str()
sort = fields.Integer()
create_time = fields.DateTime()
update_time = fields.DateTime()
enable = fields.Integer()
# 获取角色对象
def get_role_data(page, limit, filters):
@@ -100,7 +70,7 @@ def get_role_power(id):
for cp in check_powers:
check_powers_list.append(cp.id)
powers = Power.query.all()
power_schema = PowerSchema(many=True) # 用已继承ma.ModelSchema类的自定制类生成序列化类
power_schema = PowerSchema2(many=True) # 用已继承ma.ModelSchema类的自定制类生成序列化类
output = power_schema.dump(powers) # 生成可序列化对象
for i in output:
if int(i.get("powerId")) in check_powers_list:
+3 -20
View File
@@ -1,27 +1,10 @@
from flask import jsonify
from flask_login import current_user
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import and_, desc
from sqlalchemy.sql import exists
from applications.models import db
from applications.models.admin_user import User
from applications.models.admin_role import Role
from applications.models.admin_log import AdminLog
from sqlalchemy.orm.dynamic import AppenderQuery
ma = Marshmallow()
# 用户models的序列化类
class UserSchema(ma.Schema):
id = fields.Integer()
username = fields.Str()
realname = fields.Str()
enable = fields.Integer()
create_at = fields.DateTime()
update_at = fields.DateTime()
from applications.models.admin_user import User, UserSchema
from applications.models.admin_role import Role
from applications.models.admin_log import AdminLog
# 获取用户的sqlalchemy对象分页器
+1 -16
View File
@@ -1,11 +1,8 @@
from flask import Blueprint, request, render_template, jsonify
from flask_login import login_required
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import desc
from applications.models.admin_log import AdminLog
from applications.models.admin_log import AdminLog, LogSchema
ma = Marshmallow()
admin_log = Blueprint('adminLog', __name__, url_prefix='/admin/log')
@@ -20,18 +17,6 @@ def index():
return render_template('admin/admin_log/main.html')
class LogSchema(ma.Schema): # 序列化类
id = fields.Integer()
method = fields.Str()
uid = fields.Str()
url = fields.Str()
desc = fields.Str()
ip = fields.Str()
user_agent = fields.Str()
success = fields.Bool()
create_time = fields.DateTime()
# ==========================================================
# 登录日志
# ==========================================================