diff --git a/applications/models/__init__.py b/applications/models/__init__.py index f0b13d6..18dc171 100644 --- a/applications/models/__init__.py +++ b/applications/models/__init__.py @@ -1,3 +1,5 @@ from flask_sqlalchemy import SQLAlchemy +from flask_marshmallow import Marshmallow db = SQLAlchemy() +ma = Marshmallow() \ No newline at end of file diff --git a/applications/models/admin_dict.py b/applications/models/admin_dict.py index d42b951..36bd00d 100644 --- a/applications/models/admin_dict.py +++ b/applications/models/admin_dict.py @@ -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() diff --git a/applications/models/admin_log.py b/applications/models/admin_log.py index 075e6d0..af85433 100644 --- a/applications/models/admin_log.py +++ b/applications/models/admin_log.py @@ -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() diff --git a/applications/models/admin_photo.py b/applications/models/admin_photo.py index 84540f4..32a1936 100644 --- a/applications/models/admin_photo.py +++ b/applications/models/admin_photo.py @@ -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() diff --git a/applications/models/admin_power.py b/applications/models/admin_power.py index 342c292..031069f 100644 --- a/applications/models/admin_power.py +++ b/applications/models/admin_power.py @@ -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() + diff --git a/applications/models/admin_role.py b/applications/models/admin_role.py index 5c903b5..171c153 100644 --- a/applications/models/admin_role.py +++ b/applications/models/admin_role.py @@ -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() diff --git a/applications/models/admin_user.py b/applications/models/admin_user.py index 757c70c..fd50aa6 100644 --- a/applications/models/admin_user.py +++ b/applications/models/admin_user.py @@ -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() diff --git a/applications/service/admin/dict.py b/applications/service/admin/dict.py index 7038cdf..9868243 100644 --- a/applications/service/admin/dict.py +++ b/applications/service/admin/dict.py @@ -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: diff --git a/applications/service/admin/file.py b/applications/service/admin/file.py index 277f0e4..bfd8cc1 100644 --- a/applications/service/admin/file.py +++ b/applications/service/admin/file.py @@ -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) diff --git a/applications/service/admin/index.py b/applications/service/admin/index.py index aa7df0e..6797eca 100644 --- a/applications/service/admin/index.py +++ b/applications/service/admin/index.py @@ -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(): diff --git a/applications/service/admin/power.py b/applications/service/admin/power.py index 422e19b..9eb3ca8 100644 --- a/applications/service/admin/power.py +++ b/applications/service/admin/power.py @@ -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 diff --git a/applications/service/admin/role.py b/applications/service/admin/role.py index 9acacf6..391ac78 100644 --- a/applications/service/admin/role.py +++ b/applications/service/admin/role.py @@ -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: diff --git a/applications/service/admin/user.py b/applications/service/admin/user.py index df53fe9..fdf7542 100644 --- a/applications/service/admin/user.py +++ b/applications/service/admin/user.py @@ -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对象分页器 diff --git a/applications/views/admin/admin_log.py b/applications/views/admin/admin_log.py index 8443454..1e5ed26 100644 --- a/applications/views/admin/admin_log.py +++ b/applications/views/admin/admin_log.py @@ -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() - - # ========================================================== # 登录日志 # ==========================================================