分解models

This commit is contained in:
mkg
2021-04-27 11:58:21 +08:00
parent 3ea4edd117
commit 8f4054e576
30 changed files with 343 additions and 154 deletions
-119
View File
@@ -1,119 +0,0 @@
import datetime
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from applications.models import db
class User(db.Model, UserMixin):
__tablename__ = 'admin_user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='用户ID')
username = db.Column(db.String(20), comment='用户名')
realname = db.Column(db.String(20), comment='真实名字')
avatar = db.Column(db.String(255), comment='头像', default="/static/admin/admin/images/avatar.jpg")
remark = db.Column(db.String(255), comment='备注')
password_hash = db.Column(db.String(128), comment='哈希密码')
enable = db.Column(db.Integer, default=0, comment='启用')
create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间')
role = db.relationship('Role', secondary="admin_user_role", backref=db.backref('user'), lazy='dynamic')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def validate_password(self, password):
return check_password_hash(self.password_hash, password)
# 创建中间表
user_role = db.Table(
"admin_user_role", # 中间表名称
db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键
db.Column("user_id", db.Integer, db.ForeignKey("admin_user.id"), comment='用户编号'), # 属性 外键
db.Column("role_id", db.Integer, db.ForeignKey("admin_role.id"), comment='角色编号'), # 属性 外键
)
class Role(db.Model):
__tablename__ = 'admin_role'
id = db.Column(db.Integer, primary_key=True, comment='角色ID')
name = db.Column(db.String(255), comment='角色名称')
code = db.Column(db.String(255), comment='角色标识')
enable = db.Column(db.Integer, comment='是否启用')
remark = db.Column(db.String(255), comment='备注')
details = db.Column(db.String(255), comment='详情')
sort = db.Column(db.Integer, 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='更新时间')
power = db.relationship('Power', secondary="admin_role_power", backref=db.backref('role'))
# 创建中间表
role_power = db.Table(
"admin_role_power", # 中间表名称
db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键
db.Column("power_id", db.Integer, db.ForeignKey("admin_power.id"), comment='用户编号'), # 属性 外键
db.Column("role_id", db.Integer, db.ForeignKey("admin_role.id"), comment='角色编号'), # 属性 外键
)
class Power(db.Model):
__tablename__ = 'admin_power'
id = db.Column(db.Integer, primary_key=True, comment='权限编号')
name = db.Column(db.String(255), comment='权限名称')
type = db.Column(db.String(1), comment='权限类型')
code = db.Column(db.String(30), comment='权限标识')
url = db.Column(db.String(255), comment='权限路径')
open_type = db.Column(db.String(10), comment='打开方式')
parent_id = db.Column(db.Integer, comment='父类编号')
icon = db.Column(db.String(128), comment='图标')
sort = db.Column(db.Integer, 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='更新时间')
enable = db.Column(db.Integer, comment='是否开启')
class AdminLog(db.Model):
__tablename__ = 'admin_admin_log'
id = db.Column(db.Integer, primary_key=True)
method = db.Column(db.String(10))
uid = db.Column(db.Integer)
url = db.Column(db.String(255))
desc = db.Column(db.Text)
ip = db.Column(db.String(255))
success = db.Column(db.Integer)
user_agent = db.Column(db.Text)
create_time = db.Column(db.DateTime, default=datetime.datetime.now)
class Photo(db.Model):
__tablename__ = 'admin_photo'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False)
href = db.Column(db.String(255))
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 DictType(db.Model):
__tablename__ = 'admin_dict_type'
id = db.Column(db.Integer, primary_key=True)
type_name = db.Column(db.String(255), comment='字典类型名称')
type_code = db.Column(db.String(255), comment='字典类型标识')
description = db.Column(db.String(255), comment='字典类型描述')
enable = db.Column(db.Integer, 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 DictData(db.Model):
__tablename__ = 'admin_dict_data'
id = db.Column(db.Integer, primary_key=True)
data_label = db.Column(db.String(255), comment='字典类型名称')
data_value = db.Column(db.String(255), comment='字典类型标识')
type_code = db.Column(db.String(255), comment='字典类型描述')
is_default = db.Column(db.Integer, comment='是否默认')
enable = db.Column(db.Integer, comment='是否开启')
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='更新时间')
+27
View File
@@ -0,0 +1,27 @@
import datetime
from applications.models import db
class DictType(db.Model):
__tablename__ = 'admin_dict_type'
id = db.Column(db.Integer, primary_key=True)
type_name = db.Column(db.String(255), comment='字典类型名称')
type_code = db.Column(db.String(255), comment='字典类型标识')
description = db.Column(db.String(255), comment='字典类型描述')
enable = db.Column(db.Integer, 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 DictData(db.Model):
__tablename__ = 'admin_dict_data'
id = db.Column(db.Integer, primary_key=True)
data_label = db.Column(db.String(255), comment='字典类型名称')
data_value = db.Column(db.String(255), comment='字典类型标识')
type_code = db.Column(db.String(255), comment='字典类型描述')
is_default = db.Column(db.Integer, comment='是否默认')
enable = db.Column(db.Integer, comment='是否开启')
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='更新时间')
+16
View File
@@ -0,0 +1,16 @@
import datetime
from applications.models import db
class AdminLog(db.Model):
__tablename__ = 'admin_admin_log'
id = db.Column(db.Integer, primary_key=True)
method = db.Column(db.String(10))
uid = db.Column(db.Integer)
url = db.Column(db.String(255))
desc = db.Column(db.Text)
ip = db.Column(db.String(255))
success = db.Column(db.Integer)
user_agent = db.Column(db.Text)
create_time = db.Column(db.DateTime, default=datetime.datetime.now)
+13
View File
@@ -0,0 +1,13 @@
import datetime
from applications.models import db
class Photo(db.Model):
__tablename__ = 'admin_photo'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False)
href = db.Column(db.String(255))
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)
+18
View File
@@ -0,0 +1,18 @@
import datetime
from applications.models import db
class Power(db.Model):
__tablename__ = 'admin_power'
id = db.Column(db.Integer, primary_key=True, comment='权限编号')
name = db.Column(db.String(255), comment='权限名称')
type = db.Column(db.String(1), comment='权限类型')
code = db.Column(db.String(30), comment='权限标识')
url = db.Column(db.String(255), comment='权限路径')
open_type = db.Column(db.String(10), comment='打开方式')
parent_id = db.Column(db.Integer, comment='父类编号')
icon = db.Column(db.String(128), comment='图标')
sort = db.Column(db.Integer, 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='更新时间')
enable = db.Column(db.Integer, comment='是否开启')
+16
View File
@@ -0,0 +1,16 @@
import datetime
from applications.models import db
class Role(db.Model):
__tablename__ = 'admin_role'
id = db.Column(db.Integer, primary_key=True, comment='角色ID')
name = db.Column(db.String(255), comment='角色名称')
code = db.Column(db.String(255), comment='角色标识')
enable = db.Column(db.Integer, comment='是否启用')
remark = db.Column(db.String(255), comment='备注')
details = db.Column(db.String(255), comment='详情')
sort = db.Column(db.Integer, 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='更新时间')
power = db.relationship('Power', secondary="admin_role_power", backref=db.backref('role'))
+8
View File
@@ -0,0 +1,8 @@
from applications.models import db
# 创建中间表
role_power = db.Table(
"admin_role_power", # 中间表名称
db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键
db.Column("power_id", db.Integer, db.ForeignKey("admin_power.id"), comment='用户编号'), # 属性 外键
db.Column("role_id", db.Integer, db.ForeignKey("admin_role.id"), comment='角色编号'), # 属性 外键
)
+24
View File
@@ -0,0 +1,24 @@
import datetime
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from applications.models import db
class User(db.Model, UserMixin):
__tablename__ = 'admin_user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='用户ID')
username = db.Column(db.String(20), comment='用户名')
realname = db.Column(db.String(20), comment='真实名字')
avatar = db.Column(db.String(255), comment='头像', default="/static/admin/admin/images/avatar.jpg")
remark = db.Column(db.String(255), comment='备注')
password_hash = db.Column(db.String(128), comment='哈希密码')
enable = db.Column(db.Integer, default=0, comment='启用')
create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间')
role = db.relationship('Role', secondary="admin_user_role", backref=db.backref('user'), lazy='dynamic')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def validate_password(self, password):
return check_password_hash(self.password_hash, password)
+8
View File
@@ -0,0 +1,8 @@
from applications.models import db
# 创建中间表
user_role = db.Table(
"admin_user_role", # 中间表名称
db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键
db.Column("user_id", db.Integer, db.ForeignKey("admin_user.id"), comment='用户编号'), # 属性 外键
db.Column("role_id", db.Integer, db.ForeignKey("admin_role.id"), comment='角色编号'), # 属性 外键
)
+1 -1
View File
@@ -5,7 +5,7 @@ from flask_marshmallow import Marshmallow
from marshmallow import fields
from applications.models import db
from applications.models.admin import DictType, DictData
from applications.models.admin_dict import DictType, DictData
ma = Marshmallow()
+1 -1
View File
@@ -4,7 +4,7 @@ from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import desc
from applications.models import db
from applications.models.admin import Photo
from applications.models.admin_photo import Photo
from applications.service.upload import photos
ma = Marshmallow()
-1
View File
@@ -3,7 +3,6 @@ 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 import Power
from applications.service.CaptchaTool import gen_captcha
ma = Marshmallow()
+2 -1
View File
@@ -2,7 +2,8 @@ from flask_marshmallow import Marshmallow
from marshmallow import fields
from applications.models import db
from applications.models.admin import Power, Role
from applications.models.admin_power import Power
from applications.models.admin_role import Role
ma = Marshmallow()
+3 -6
View File
@@ -1,10 +1,10 @@
from flask import jsonify
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import and_
from applications.models import db
from applications.models.admin import Role, Power, User
from applications.models.admin_role import Role
from applications.models.admin_power import Power
from applications.models.admin_user import User
ma = Marshmallow()
@@ -147,8 +147,6 @@ def disable_status(id):
return False
# 删除角色
def remove_role(id):
role = Role.query.filter_by(id=id).first()
@@ -177,4 +175,3 @@ def batch_remove(ids):
# db.session.commit()
for id in ids:
remove_role(id)
+3 -1
View File
@@ -6,7 +6,9 @@ from sqlalchemy import and_, desc
from sqlalchemy.sql import exists
from applications.models import db
from applications.models.admin import User, Role, AdminLog
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()
+1 -1
View File
@@ -1,7 +1,7 @@
from flask_login import current_user
from applications.models import db
from applications.models.admin import AdminLog
from applications.models.admin_log import AdminLog
def login_log(request,uid, is_access):
+1 -1
View File
@@ -10,6 +10,6 @@ def init_flask_login(app):
@login_manager.user_loader
def load_user(user_id):
from applications.models.admin import User
from applications.models.admin_user import User
user = User.query.get(int(user_id))
return user
+1 -1
View File
@@ -3,7 +3,7 @@ from flask_login import login_required
from flask_marshmallow import Marshmallow
from marshmallow import fields
from sqlalchemy import desc
from applications.models.admin import AdminLog
from applications.models.admin_log import AdminLog
ma = Marshmallow()
admin_log = Blueprint('adminLog', __name__, url_prefix='/admin/log')
+21
View File
@@ -0,0 +1,21 @@
from flask import Blueprint, request, render_template, jsonify
from flask_login import login_required
from flask_marshmallow import Marshmallow
from applications.models import db
ma = Marshmallow()
admin_curd = Blueprint('adminCurd', __name__, url_prefix='/admin/curd')
@admin_curd.route('/')
def index():
colums=[]
colums.append("table_name")
colums.append(db.Column('id',db.Integer))
colums.append(db.Column('id', db.Integer, primary_key=True, comment="ID"))
colums.append(db.Column('url', db.String(255), comment=u"来源"))
colums.append(db.Column('date', db.DateTime, comment=u"记录时间"))
colums.append(db.Column('status', db.Integer, comment=u"是否回访"))
re = db.Table(*colums).columns
db.create_all()
return str(re)
+1 -1
View File
@@ -1,6 +1,6 @@
from flask import Blueprint, render_template, request, jsonify
from applications.models.admin import DictType, DictData
from applications.models.admin_dict import DictType, DictData
from applications.service.admin.dict import get_dict_type, get_dict_data, save_dict_type, save_dict_data, \
delete_type_by_id, delete_data_by_id, update_dict_type, enable_dict_type_status, disable_dict_type_status, \
enable_dict_data_status, disable_dict_data_status, update_dict_data
+1 -1
View File
@@ -2,7 +2,7 @@ import os
from flask import Blueprint, request, render_template, jsonify, current_app
from flask_login import login_required
from applications.models import db
from applications.models.admin import Photo
from applications.models.admin_photo import Photo
from applications.service.admin.file import get_photo, upload_one, delete_photo_by_id
from applications.service.route_auth import authorize_and_log
+1 -1
View File
@@ -2,7 +2,7 @@ from flask import Blueprint, render_template, jsonify, request, session, redirec
from flask_login import login_user, login_required, logout_user, current_user
from applications.service.admin.index import add_auth_session, make_menu_tree, get_captcha
from applications.service.admin_log import login_log
from applications.models.admin import User
from applications.models.admin_user import User
admin_index = Blueprint('adminIndex', __name__, url_prefix='/admin')
+2 -1
View File
@@ -1,6 +1,7 @@
from flask import Blueprint, render_template, request, jsonify
from flask_login import login_required, current_user
from applications.models.admin import User, Role
from applications.models.admin_user import User
from applications.models.admin_role import Role
from applications.service.admin.user import get_user_data_dict, add_user, delete_by_id, \
batch_remove, update_user, update_user_role, is_user_exists, add_user_role, enable_status, disable_status, \
edit_password, get_current_user_logs, update_current_user_info, update_avatar