Merge branch 'v2' into pr_5

# Conflicts:
#	applications/view/__init__.py
This commit is contained in:
mkg
2021-06-13 16:14:23 +08:00
33 changed files with 191 additions and 167 deletions
+5
View File
@@ -0,0 +1,5 @@
FLASK_APP=app.py
FLASK_ENV=development
FLASK_DEBUG=1
FLASK_RUN_HOST = 127.0.0.1
FLASK_RUN_PORT = 5000
+11
View File
@@ -1,6 +1,17 @@
from applications import create_app
from flask_migrate import Migrate
from applications.extensions import db
from applications.common.utils.init_databases import init_db
app = create_app()
migrate = Migrate(app, db)
@app.cli.command()
def init():
init_db()
if __name__ == '__main__':
app.run()
-2
View File
@@ -1,8 +1,6 @@
import os
from flask import Flask
from flask_uploads import configure_uploads
from applications.common.utils.upload import photos
from applications.configs import common
from applications.extensions import init_plugs
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import Dept, DeptSchema
from applications.models import Dept
from applications.schemas import DeptSchema
from applications.models import User
from applications.common.curd import model_to_dicts
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import DictType, DictData, DictTypeSchema, DictDataSchema
from applications.models import DictType, DictData
from applications.schemas import DictTypeSchema, DictDataSchema
from applications.common.curd import model_to_dicts
+2 -1
View File
@@ -4,7 +4,8 @@ from sqlalchemy import desc
from applications.common.utils.upload import photos
from applications.extensions import db
from applications.models import Photo, PhotoSchema
from applications.models import Photo
from applications.schemas import PhotoSchema
from applications.common.curd import model_to_dicts
+1 -1
View File
@@ -3,7 +3,7 @@ from flask import session, make_response, current_app
from flask_login import current_user
from applications.common.utils.gen_captcha import gen_captcha
from applications.models.admin_power import PowerSchema
from applications.schemas import PowerSchema
# 授权路由存入session
+2 -1
View File
@@ -1,6 +1,7 @@
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models.admin_power import Power, PowerSchema2
from applications.models.admin_power import Power
from applications.schemas import PowerSchema2
from applications.models import Role
from applications.common.curd import model_to_dicts
+4 -3
View File
@@ -1,9 +1,10 @@
from sqlalchemy import and_
from applications.common.utils.validate import xss_escape
from applications.extensions import db
from applications.models import Role, RoleSchema
from applications.models.admin_power import Power, PowerSchema2
from applications.models import Role
from applications.schemas import RoleSchema
from applications.models.admin_power import Power
from applications.schemas import PowerSchema2
from applications.models import User
# 获取角色对象
+2 -1
View File
@@ -2,7 +2,8 @@ from flask import jsonify
from flask_login import current_user
from sqlalchemy import and_, desc
from applications.extensions import db
from applications.models import User, UserSchema
from applications.models import User
from applications.schemas import UserSchema
from applications.models import Role
from applications.models import AdminLog
@@ -1,14 +1,9 @@
import sys
from dotenv import dotenv_values
sys.path.append('../')
import sqlparse
import pymysql
config = dotenv_values('.env')
# MySql配置信息
HOST = config.get('MYSQL_PASSWORD') or '127.0.0.1'
HOST = config.get('MYSQL_HOST') or '127.0.0.1'
PORT = config.get('MYSQL_PORT') or 3306
DATABASE = config.get('MYSQL_DATABASE') or 'PearAdminFlask'
USERNAME = config.get('MYSQL_USERNAME') or 'root'
@@ -60,7 +55,7 @@ def init_db():
return
if init_database():
print('数据库%s创建成功' % str(DATABASE))
execute_fromfile('pear.sql')
execute_fromfile(BASE_DIR + '../../../test/pear.sql')
print('表创建成功')
print('欢迎使用pear-admin-flask,请使用 flask run 命令启动程序')
+7 -7
View File
@@ -1,9 +1,9 @@
from .admin_dept import Dept, DeptSchema
from .admin_dict import DictType, DictData, DictTypeSchema, DictDataSchema
from .admin_log import AdminLog, LogSchema
from .admin_photo import Photo, PhotoSchema
from .admin_power import Power, PowerSchema, PowerSchema2
from .admin_role import Role, RoleSchema
from .admin_dept import Dept
from .admin_dict import DictType, DictData
from .admin_log import AdminLog
from .admin_photo import Photo
from .admin_power import Power
from .admin_role import Role
from .admin_role_power import role_power
from .admin_user import User, UserSchema
from .admin_user import User
from .admin_user_role import user_role
+1 -14
View File
@@ -1,6 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields, validate
from applications.extensions import db
class Dept(db.Model):
@@ -17,15 +16,3 @@ class Dept(db.Model):
address = db.Column(db.String(255), 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='创建时间')
class DeptSchema(ma.Schema): # 序列化类
deptId = fields.Integer(attribute="id")
parentId = fields.Integer(attribute="parent_id")
deptName = fields.Str(attribute="dept_name")
leader = fields.Str()
phone = fields.Str()
email = fields.Str(validate=validate.Email())
address = fields.Str()
status = fields.Str(validate=validate.OneOf(["0", "1"]))
sort = fields.Integer()
+1 -22
View File
@@ -1,7 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields
from applications.extensions import db
class DictType(db.Model):
@@ -26,22 +24,3 @@ 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()
+1 -15
View File
@@ -1,7 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields
from applications.extensions import db
class AdminLog(db.Model):
__tablename__ = 'admin_admin_log'
@@ -14,15 +12,3 @@ class AdminLog(db.Model):
success = db.Column(db.Integer)
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()
+1 -13
View File
@@ -1,7 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields
from applications.extensions import db
class Photo(db.Model):
@@ -12,13 +10,3 @@ 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()
+1 -32
View File
@@ -1,6 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields
from applications.extensions import db
class Power(db.Model):
@@ -17,33 +16,3 @@ 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()
+1 -14
View File
@@ -1,6 +1,5 @@
import datetime
from applications.extensions import db, ma
from marshmallow import fields
from applications.extensions import db
class Role(db.Model):
@@ -15,15 +14,3 @@ 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()
+1 -20
View File
@@ -1,9 +1,7 @@
import datetime
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
from applications.extensions import db, ma
from marshmallow import fields
from applications.models import Dept
from applications.extensions import db
class User(db.Model, UserMixin):
@@ -25,20 +23,3 @@ 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()
dept = fields.Method("get_dept")
def get_dept(self, obj):
if obj.dept_id != None:
return Dept.query.filter_by(id=obj.dept_id).first().dept_name
else:
return None
+7
View File
@@ -0,0 +1,7 @@
from .admin_user import UserSchema
from .admin_role import RoleSchema
from .admin_power import PowerSchema, PowerSchema2
from .admin_dict import DictDataSchema, DictTypeSchema
from .admin_dept import DeptSchema
from .admin_log import LogSchema
from .admin_photo import PhotoSchema
+14
View File
@@ -0,0 +1,14 @@
from applications.extensions import ma
from marshmallow import fields, validate
class DeptSchema(ma.Schema):
deptId = fields.Integer(attribute="id")
parentId = fields.Integer(attribute="parent_id")
deptName = fields.Str(attribute="dept_name")
leader = fields.Str()
phone = fields.Str()
email = fields.Str(validate=validate.Email())
address = fields.Str()
status = fields.Str(validate=validate.OneOf(["0", "1"]))
sort = fields.Integer()
+21
View File
@@ -0,0 +1,21 @@
from applications.extensions import ma
from marshmallow import fields
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()
+14
View File
@@ -0,0 +1,14 @@
from applications.extensions import ma
from marshmallow import fields
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
View File
@@ -0,0 +1,12 @@
from applications.extensions import ma
from marshmallow import fields
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()
+32
View File
@@ -0,0 +1,32 @@
from applications.extensions import ma
from marshmallow import fields
# 权限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()
+14
View File
@@ -0,0 +1,14 @@
from applications.extensions import ma
from marshmallow import fields
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()
+20
View File
@@ -0,0 +1,20 @@
from applications.extensions import ma
from marshmallow import fields
from applications.models import Dept
# 用户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()
dept = fields.Method("get_dept")
def get_dept(self, obj):
if obj.dept_id != None:
return Dept.query.filter_by(id=obj.dept_id).first().dept_name
else:
return None
+2 -1
View File
@@ -3,7 +3,8 @@ from sqlalchemy import desc
from applications.common.utils.http import table_api
from applications.common.utils.rights import authorize
from applications.models import AdminLog, LogSchema
from applications.models import AdminLog
from applications.schemas import LogSchema
from applications.common.curd import model_to_dicts
admin_log = Blueprint('adminLog', __name__, url_prefix='/admin/log')
-1
View File
@@ -1,5 +1,4 @@
from flask import Blueprint, render_template, request, jsonify
from applications.common.utils.http import table_api, success_api, fail_api
from applications.common.utils.rights import authorize
from applications.common.utils.validate import xss_escape
+1 -1
View File
@@ -4,7 +4,7 @@ from marshmallow import INCLUDE
from applications.common.utils.http import success_api, fail_api
from applications.common.utils.rights import authorize
from applications.common.utils.validate import check_data
from applications.models import DeptSchema
from applications.schemas import DeptSchema
from applications.common.admin import dept_curd as dept_curd
dept_bp = Blueprint('dept', __name__, url_prefix='/dept')
+1 -3
View File
@@ -1,6 +1,4 @@
from flask import Blueprint
index_bp = Blueprint('Index', __name__, url_prefix='/')
from applications.view.index.index import index_bp
from . import index
+2 -2
View File
@@ -1,6 +1,6 @@
from flask import render_template
from flask import render_template, Blueprint
from . import index_bp
index_bp = Blueprint('Index', __name__, url_prefix='/')
@index_bp.route('/')