From 00053da11762b324f15c9619b50a84c12b392364 Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Mon, 6 Sep 2021 02:17:36 +0800 Subject: [PATCH] =?UTF-8?q?wip(semantic):=E6=95=B0=E6=8D=AE=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E8=AF=AD=E4=B9=89=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/api/department.py | 16 +++--- applications/api/file.py | 10 ++-- applications/api/passport.py | 4 +- applications/api/rights.py | 24 ++++----- applications/api/roles.py | 34 ++++++------ applications/api/users/profile.py | 12 ++--- applications/api/users/user.py | 46 ++++++++-------- applications/common/serialization/__init__.py | 8 +-- applications/common/utils/upload.py | 8 +-- .../extensions/init_databases/__init__.py | 20 +++---- applications/extensions/init_login.py | 4 +- applications/models/__init__.py | 9 ++-- applications/models/base.py | 8 +++ applications/models/file/__init__.py | 1 + applications/models/file/photo.py | 8 ++- applications/models/log.py | 6 +-- applications/models/rights/__init__.py | 19 +++++++ applications/models/rights/power.py | 7 ++- applications/models/rights/role.py | 9 ++-- applications/models/rights/role_power.py | 9 ---- applications/models/rights/user_role.py | 9 ---- applications/models/users/__init__.py | 4 +- applications/models/users/dept.py | 6 +-- applications/models/users/users.py | 10 ++-- applications/view/department.py | 4 +- applications/view/logs_view.py | 4 +- applications/view/rights.py | 4 +- applications/view/roles.py | 4 +- applications/view/users.py | 8 +-- templates/file/photo.html | 53 ++++++++++--------- templates/logs_temp/main.html | 4 +- 31 files changed, 189 insertions(+), 183 deletions(-) create mode 100644 applications/models/base.py delete mode 100644 applications/models/rights/role_power.py delete mode 100644 applications/models/rights/user_role.py diff --git a/applications/api/department.py b/applications/api/department.py index faf1252..104e252 100644 --- a/applications/api/department.py +++ b/applications/api/department.py @@ -4,7 +4,7 @@ from applications.api import api_bp from applications.common.utils.http import success_api, fail_api from applications.common.utils.rights import authorize from applications.extensions import db -from applications.models import Dept, User +from applications.models import CompanyDepartment, CompanyUser from flask_restful import marshal, reqparse from applications.common.serialization import dept_fields @@ -16,7 +16,7 @@ class Department(Resource): @authorize("admin:dept:main", log=True) def get(self): - dept_data = Dept.query.order_by(Dept.sort).all() + dept_data = CompanyDepartment.query.order_by(CompanyDepartment.sort).all() # TODO dtree 需要返回状态信息 res = { "status": {"code": 200, "message": "默认"}, @@ -38,7 +38,7 @@ class Department(Resource): res = parser.parse_args() - dept = Dept( + dept = CompanyDepartment( parent_id=res.parent_id, dept_name=res.dept_name, sort=res.sort, @@ -58,7 +58,7 @@ class Department(Resource): class DeptURD(Resource): @authorize("admin:dept:edit", log=True) def get(self, dept_id): - dept = Dept.query.filter_by(id=dept_id).first() + dept = CompanyDepartment.query.filter_by(id=dept_id).first() dept_data = { 'id': dept.id, 'dept_name': dept.dept_name, @@ -93,7 +93,7 @@ class DeptURD(Resource): "status": res.status, "address": res.address } - res = Dept.query.filter_by(id=dept_id).update(data) + res = CompanyDepartment.query.filter_by(id=dept_id).update(data) if not res: return fail_api(msg="更新失败") db.session.commit() @@ -101,8 +101,8 @@ class DeptURD(Resource): @authorize("admin:dept:remove", log=True) def delete(self, dept_id): - ret = Dept.query.filter_by(id=dept_id).delete() - User.query.filter_by(dept_id=dept_id).update({"dept_id": None}) + ret = CompanyDepartment.query.filter_by(id=dept_id).delete() + CompanyUser.query.filter_by(dept_id=dept_id).update({"dept_id": None}) db.session.commit() if ret: return success_api(msg="删除成功") @@ -113,7 +113,7 @@ class DeptURD(Resource): class DeptEnable(Resource): @authorize("admin:dept:edit", log=True) def put(self, dept_id): - d = Dept.query.get(dept_id) + d = CompanyDepartment.query.get(dept_id) if d: d.status = not d.status db.session.commit() diff --git a/applications/api/file.py b/applications/api/file.py index 59e28ff..884f812 100644 --- a/applications/api/file.py +++ b/applications/api/file.py @@ -10,7 +10,7 @@ from applications.common.utils.http import fail_api, success_api, table_api from applications.common.utils.rights import authorize from applications.common.utils.upload import upload_one, delete_photo_by_id from applications.extensions import db -from applications.models import Photo +from applications.models import FilePhoto file_api = Api(api_bp, prefix='/file') @@ -22,8 +22,8 @@ class FilePhotos(Resource): def get(self): page = request.args.get('page', type=int) limit = request.args.get('limit', type=int) - photo_paginate = Photo.query.order_by(desc(Photo.create_time)).paginate(page=page, per_page=limit, - error_out=False) + photo_paginate = FilePhoto.query.order_by(desc(FilePhoto.create_at)).paginate(page=page, per_page=limit, + error_out=False) data = marshal(photo_paginate.items, photo_fields) return table_api(data=data, count=photo_paginate.total, code=0) @@ -49,11 +49,11 @@ class FilePhotos(Resource): """图片批量删除""" # TODO bugs 图片删除失败 ids = request.form.getlist('ids[]') - photo_name = Photo.query.filter(Photo.id.in_(ids)).all() + photo_name = FilePhoto.query.filter(FilePhoto.id.in_(ids)).all() upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST") for p in photo_name: os.remove(upload_url + '/' + p.name) - photo = Photo.query.filter(Photo.id.in_(ids)).delete(synchronize_session=False) + photo = FilePhoto.query.filter(FilePhoto.id.in_(ids)).delete(synchronize_session=False) db.session.commit() if photo: return success_api(msg="删除成功") diff --git a/applications/api/passport.py b/applications/api/passport.py index 268c44b..52d2fe0 100644 --- a/applications/api/passport.py +++ b/applications/api/passport.py @@ -6,7 +6,7 @@ from applications.api import api_bp from applications.common.admin_log import login_log from applications.common.gen_captcha import add_auth_session from applications.common.utils.http import fail_api, success_api -from applications.models import User +from applications.models import CompanyUser from flask import render_template, make_response @@ -34,7 +34,7 @@ class Login(Resource): if req.captcha != s_code: return fail_api(msg="验证码错误") - user = User.query.filter_by(username=req.username).first() + user = CompanyUser.query.filter_by(username=req.username).first() if user is None: return fail_api(msg="不存在的用户") diff --git a/applications/api/rights.py b/applications/api/rights.py index d10f12b..6a9ed1c 100644 --- a/applications/api/rights.py +++ b/applications/api/rights.py @@ -10,7 +10,7 @@ from applications.common.serialization import power2_fields, power_fields from applications.common.utils.http import success_api, fail_api from applications.common.utils.rights import authorize from applications.extensions import db -from applications.models import Power, Role +from applications.models import RightsPower, RightsRole def get_render_config(): @@ -124,15 +124,15 @@ def make_menu_tree(): # 删除权限(目前没有判断父节点自动删除子节点) def remove_power(power_id): - power = Power.query.filter_by(id=power_id).first() + power = RightsPower.query.filter_by(id=power_id).first() role_id_list = [] roles = power.role for role in roles: role_id_list.append(role.id) - roles = Role.query.filter(Role.id.in_(role_id_list)).all() + roles = RightsRole.query.filter(RightsRole.id.in_(role_id_list)).all() for p in roles: power.role.remove(p) - r = Power.query.filter_by(id=power_id).delete() + r = RightsPower.query.filter_by(id=power_id).delete() db.session.commit() return r @@ -162,7 +162,7 @@ class RightRights(Resource): def get(self): """获取选择父节点""" - power = Power.query.all() + power = RightsPower.query.all() power_data = marshal(power, power_fields) power_data.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1}) res = { @@ -180,12 +180,12 @@ class RightRights(Resource): @rights_api.resource('/power/') -class RightsPower(Resource): +class RightsPowerView(Resource): @authorize("admin:power:add", log=True) def post(self, power_id): res = parser_power.parse_args() - power = Power( + power = RightsPower( icon=res.icon, open_type=res.open_type, parent_id=res.parent_id, @@ -208,15 +208,15 @@ class RightsPower(Resource): @authorize("admin:power:remove", log=True) def delete(self, power_id): # 删除权限(目前没有判断父节点自动删除子节点) - power = Power.query.filter_by(id=power_id).first() + power = RightsPower.query.filter_by(id=power_id).first() role_id_list = [] roles = power.role for role in roles: role_id_list.append(role.id) - roles = Role.query.filter(Role.id.in_(role_id_list)).all() + roles = RightsRole.query.filter(RightsRole.id.in_(role_id_list)).all() for p in roles: power.role.remove(p) - r = Power.query.filter_by(id=power_id).delete() + r = RightsPower.query.filter_by(id=power_id).delete() db.session.commit() if r: @@ -238,7 +238,7 @@ class RightsPower(Resource): "url": res.power_url, "sort": res.sort } - power = Power.query.filter_by(id=power_id).update(data) + power = RightsPower.query.filter_by(id=power_id).update(data) db.session.commit() if not power: @@ -251,7 +251,7 @@ class PowerStatus(Resource): @authorize("admin:power:edit", log=True) def put(self, right_id): - power = Power.query.get(right_id) + power = RightsPower.query.get(right_id) if power: power.enable = not power.enable db.session.commit() diff --git a/applications/api/roles.py b/applications/api/roles.py index 735901b..d6cc17d 100644 --- a/applications/api/roles.py +++ b/applications/api/roles.py @@ -7,28 +7,28 @@ from applications.common.utils.rights import authorize from applications.common.serialization import power_fields from applications.extensions import db -from applications.models import Power, Role, User +from applications.models import RightsPower, RightsRole, CompanyUser from . import api_bp def remove_role(role_id): """ 删除角色 """ - role = Role.query.filter_by(id=role_id).first() + role = RightsRole.query.filter_by(id=role_id).first() # 删除该角色的权限 power_id_list = [] for p in role.power: power_id_list.append(p.id) - powers = Power.query.filter(Power.id.in_(power_id_list)).all() + powers = RightsPower.query.filter(RightsPower.id.in_(power_id_list)).all() for p in powers: role.power.remove(p) user_id_list = [] for u in role.user: user_id_list.append(u.id) - users = User.query.filter(User.id.in_(user_id_list)).all() + users = CompanyUser.query.filter(CompanyUser.id.in_(user_id_list)).all() for u in users: role.user.remove(u) - r = Role.query.filter_by(id=role_id).delete() + r = RightsRole.query.filter_by(id=role_id).delete() db.session.commit() return r @@ -57,11 +57,11 @@ class RoleRoles(Resource): filters = [] if res.role_name: - filters.append(Role.name.like('%' + res.role_name + '%')) + filters.append(RightsRole.name.like('%' + res.role_name + '%')) if res.role_code: - filters.append(Role.code.like('%' + res.role_code + '%')) + filters.append(RightsRole.code.like('%' + res.role_code + '%')) - paginate = Role.query.filter(*filters).paginate(page=res.page, per_page=res.limit, error_out=False) + paginate = RightsRole.query.filter(*filters).paginate(page=res.page, per_page=res.limit, error_out=False) return table_api(data=[ { @@ -72,7 +72,7 @@ class RoleRoles(Resource): 'remark': item.remark, 'details': item.details, 'sort': item.sort, - 'create_at': item.create_time, + 'create_at': item.create_at, } for item in paginate.items ], count=paginate.total, code=0) @@ -102,7 +102,7 @@ class RoleRole(Resource): res = parser.parse_args() - role = Role( + role = RightsRole( details=res.details, enable=res.enable, code=res.role_code, @@ -134,7 +134,7 @@ class RoleRole(Resource): "details": res.details } - role = Role.query.filter_by(id=role_id).update(data) + role = RightsRole.query.filter_by(id=role_id).update(data) db.session.commit() if not role: return fail_api(msg="更新角色失败") @@ -147,7 +147,7 @@ class RoleEnable(Resource): @authorize("admin:role:edit", log=True) def put(self, role_id): - ret = Role.query.get(role_id) + ret = RightsRole.query.get(role_id) ret.enable = not ret.enable db.session.commit() @@ -163,10 +163,10 @@ class RolePower(Resource): @authorize("admin:role:main", log=True) def get(self, role_id): # 获取角色权限 - role = Role.query.filter_by(id=role_id).first() + role = RightsRole.query.filter_by(id=role_id).first() # 获取权限列表的 id check_powers_list = [rp.id for rp in role.power] - powers = Power.query.all() # 获取所有的权限 + powers = RightsPower.query.all() # 获取所有的权限 # power_schema = PowerSchema2(many=True) # 用已继承 ma.ModelSchema 类的自定制类生成序列化类 # 将所有的权限生产可序列化对象 json # powers = power_schema.dump(powers) # 生成可序列化对象 @@ -193,14 +193,14 @@ class RolePower(Resource): power_list = res.power_ids.split(',') """ 更新角色权限 """ - role = Role.query.filter_by(id=role_id).first() + role = RightsRole.query.filter_by(id=role_id).first() power_id_list = [] for p in role.power: power_id_list.append(p.id) - powers = Power.query.filter(Power.id.in_(power_id_list)).all() + powers = RightsPower.query.filter(RightsPower.id.in_(power_id_list)).all() for p in powers: role.power.remove(p) - powers = Power.query.filter(Power.id.in_(power_list)).all() + powers = RightsPower.query.filter(RightsPower.id.in_(power_list)).all() for p in powers: role.power.append(p) db.session.commit() diff --git a/applications/api/users/profile.py b/applications/api/users/profile.py index 3ed45b3..ff69171 100644 --- a/applications/api/users/profile.py +++ b/applications/api/users/profile.py @@ -5,7 +5,7 @@ from flask_restful import Resource, reqparse from applications.common.utils.http import fail_api, success_api from applications.extensions import db -from applications.models import User +from applications.models import CompanyUser from . import users_api @@ -22,11 +22,11 @@ class UserStatus(Resource): res = parser.parse_args() if res.operate == 1: - user = User.query.get(user_id) + user = CompanyUser.query.get(user_id) user.enable = res.operate message = success_api(msg="启动成功") else: - user = User.query.filter_by(id=res.user_id).update({"enable": res.operate}) + user = CompanyUser.query.filter_by(id=res.user_id).update({"enable": res.operate}) message = success_api(msg="禁用成功") if user: db.session.commit() @@ -41,7 +41,7 @@ class UserAvatar(Resource): def put(self, user_id): url = request.json.get("avatar").get("src") - ret = User.query.get(user_id) + ret = CompanyUser.query.get(user_id) ret.avatar = url db.session.commit() if not ret: @@ -62,7 +62,7 @@ class UserInfo(Resource): res = parser.parse_args() - ret = User.query.get(user_id) + ret = CompanyUser.query.get(user_id) ret.username = res.username ret.realname = res.real_name ret.remark = res.details @@ -89,7 +89,7 @@ class UserPassword(Resource): return fail_api(msg='确认密码不一致') """ 修改当前用户密码 """ - user = User.query.get(user_id) + user = CompanyUser.query.get(user_id) is_right = user.validate_password(res.oldPassword) if not is_right: return jsonify(success=False, msg="旧密码错误") diff --git a/applications/api/users/user.py b/applications/api/users/user.py index 9f6af9f..7007550 100644 --- a/applications/api/users/user.py +++ b/applications/api/users/user.py @@ -7,7 +7,7 @@ from sqlalchemy import desc from applications.extensions import db from applications.common.utils.http import fail_api, success_api, table_api from applications.common.utils.rights import authorize -from applications.models import User, Role, Dept +from applications.models import CompanyUser, RightsRole, CompanyDepartment from applications.models import AdminLog from . import users_api @@ -15,26 +15,26 @@ from . import users_api def get_current_user_logs(): """ 获取当前用户日志 """ log = AdminLog.query.filter_by(url='/passport/login').filter_by(uid=current_user.id).order_by( - desc(AdminLog.create_time)).limit(10) + desc(AdminLog.create_at)).limit(10) return log def is_user_exists(username): """ 判断用户是否存在 """ - res = User.query.filter_by(username=username).count() + res = CompanyUser.query.filter_by(username=username).count() return bool(res) def delete_by_id(_id): """ 删除用户 """ - user = User.query.filter_by(id=_id).first() + user = CompanyUser.query.filter_by(id=_id).first() roles_id = [] for role in user.role: roles_id.append(role.id) - roles = Role.query.filter(Role.id.in_(roles_id)).all() + roles = RightsRole.query.filter(RightsRole.id.in_(roles_id)).all() for r in roles: user.role.remove(r) - res = User.query.filter_by(id=_id).delete() + res = CompanyUser.query.filter_by(id=_id).delete() db.session.commit() return res @@ -46,14 +46,14 @@ def batch_remove(ids): def update_user_role(_id, roles_list): - user = User.query.filter_by(id=_id).first() + user = CompanyUser.query.filter_by(id=_id).first() roles_id = [] for role in user.role: roles_id.append(role.id) - roles = Role.query.filter(Role.id.in_(roles_id)).all() + roles = RightsRole.query.filter(RightsRole.id.in_(roles_id)).all() for r in roles: user.role.remove(r) - roles = Role.query.filter(Role.id.in_(roles_list)).all() + roles = RightsRole.query.filter(RightsRole.id.in_(roles_list)).all() for r in roles: user.role.append(r) db.session.commit() @@ -77,17 +77,17 @@ class UserUsers(Resource): filters = [] if res.real_name: - filters.append(User.realname.like('%' + res.real_name + '%')) + filters.append(CompanyUser.realname.like('%' + res.real_name + '%')) if res.username: - filters.append(User.username.like('%' + res.username + '%')) + filters.append(CompanyUser.username.like('%' + res.username + '%')) if res.dept_id: - filters.append(User.dept_id == res.dept_id) + filters.append(CompanyUser.dept_id == res.dept_id) - paginate = User.query.filter(*filters).paginate(page=res.page, - per_page=res.limit, - error_out=False) + paginate = CompanyUser.query.filter(*filters).paginate(page=res.page, + per_page=res.limit, + error_out=False) - dept_name = lambda dept_id: Dept.query.filter_by(id=dept_id).first().dept_name if dept_id else "" + dept_name = lambda dept_id: CompanyDepartment.query.filter_by(id=dept_id).first().dept_name if dept_id else "" user_data = [{ 'id': item.id, 'username': item.username, @@ -116,7 +116,7 @@ class UserUsers(Resource): if is_user_exists(res.username): return fail_api(msg="用户已经存在") - user = User() + user = CompanyUser() user.username = res.username user.realname = res.real_name user.set_password(res.password) @@ -124,8 +124,8 @@ class UserUsers(Resource): db.session.commit() """ 增加用户角色 """ - user = User.query.filter_by(id=user.id).first() - roles = Role.query.filter(Role.id.in_(role_ids)).all() + user = CompanyUser.query.filter_by(id=user.id).first() + roles = RightsRole.query.filter(RightsRole.id.in_(role_ids)).all() for r in roles: user.role.append(r) db.session.commit() @@ -160,7 +160,7 @@ class UserUser(Resource): if is_user_exists(res.username): return fail_api(msg="用户已经存在") - user = User() + user = CompanyUser() user.username = res.username user.realname = res.real_name user.set_password(res.password) @@ -168,8 +168,8 @@ class UserUser(Resource): db.session.commit() """ 增加用户角色 """ - user = User.query.filter_by(id=user.id).first() - roles = Role.query.filter(Role.id.in_(role_ids)).all() + user = CompanyUser.query.filter_by(id=user.id).first() + roles = RightsRole.query.filter(RightsRole.id.in_(role_ids)).all() for r in roles: user.role.append(r) db.session.commit() @@ -200,7 +200,7 @@ class UserRole(Resource): role_ids = res.role_ids.split(',') # 更新用户数据 - User.query.filter_by(id=user_id).update({'username': res.username, + CompanyUser.query.filter_by(id=user_id).update({'username': res.username, 'realname': res.real_name, 'dept_id': res.dept_id}) db.session.commit() diff --git a/applications/common/serialization/__init__.py b/applications/common/serialization/__init__.py index 0a8b3c3..cf81c71 100644 --- a/applications/common/serialization/__init__.py +++ b/applications/common/serialization/__init__.py @@ -9,7 +9,7 @@ power_fields = { 'parentId': fields.String(attribute="parent_id"), 'icon': fields.String, 'sort': fields.Integer, - 'create_time': fields.DateTime, + 'create_at': fields.DateTime, 'update_time': fields.DateTime, 'enable': fields.Integer, } @@ -24,7 +24,7 @@ power2_fields = { 'parent_id': fields.Integer, 'icon': fields.String, 'sort': fields.Integer, - 'create_time': fields.DateTime, + 'create_at': fields.DateTime, 'update_time': fields.DateTime, 'enable': fields.Integer, } @@ -50,7 +50,7 @@ log_fields = { 'ip': fields.String, 'user_agent': fields.String, 'success': fields.Boolean, - 'create_time': fields.DateTime, + 'create_at': fields.DateTime, } dept_fields = { @@ -72,5 +72,5 @@ photo_fields = { 'mime': fields.String, 'size': fields.String, 'ext': fields.String, - 'create_time': fields.DateTime, + 'create_at': fields.DateTime, } diff --git a/applications/common/utils/upload.py b/applications/common/utils/upload.py index 1c86983..a682c99 100644 --- a/applications/common/utils/upload.py +++ b/applications/common/utils/upload.py @@ -4,7 +4,7 @@ from flask import current_app from applications.common.flask_uploads import UploadSet, IMAGES from applications.extensions import db -from applications.models import Photo +from applications.models import FilePhoto photos = UploadSet('photos', IMAGES) @@ -15,15 +15,15 @@ def upload_one(photo, mime): upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST") size = os.path.getsize(upload_url + '/' + filename) - photo = Photo(name=filename, href=file_url, mime=mime, size=size) + photo = FilePhoto(name=filename, href=file_url, mime=mime, size=size) db.session.add(photo) db.session.commit() return file_url def delete_photo_by_id(_id): - photo_name = Photo.query.filter_by(id=_id).first().name - photo = Photo.query.filter_by(id=_id).delete() + photo_name = FilePhoto.query.filter_by(id=_id).first().name + photo = FilePhoto.query.filter_by(id=_id).delete() db.session.commit() upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST") os.remove(upload_url + '/' + photo_name) diff --git a/applications/extensions/init_databases/__init__.py b/applications/extensions/init_databases/__init__.py index d1ca84c..bb32a87 100644 --- a/applications/extensions/init_databases/__init__.py +++ b/applications/extensions/init_databases/__init__.py @@ -26,23 +26,23 @@ def register_script(app: Flask): """数据库初始化""" # 创建化部门数据 - from applications.models import Dept + from applications.models import CompanyDepartment from applications.configs.init_data import cp_dept_data_list - add_data(cp_dept_data_list, Dept) + add_data(cp_dept_data_list, CompanyDepartment) # 图片数据 - from applications.models import Photo + from applications.models import FilePhoto from applications.configs.init_data import file_photo_data_list - add_data(file_photo_data_list, Photo) + add_data(file_photo_data_list, FilePhoto) # 初始化权限表数据 - from applications.models import Power + from applications.models import RightsPower from applications.configs.init_data import rt_power_data_list - add_data(rt_power_data_list, Power) + add_data(rt_power_data_list, RightsPower) # 初始化角色表 - from applications.models import Role + from applications.models import RightsRole from applications.configs.init_data import rt_role_data_list # 角色权限关系表 @@ -52,13 +52,13 @@ def register_script(app: Flask): db.session.execute('insert into rt_role_power VALUES (%s, %s, %s);' % tuple(data)) db.session.commit() - add_data(rt_role_data_list, Role) + add_data(rt_role_data_list, RightsRole) # 管理员用户 - from applications.models import User + from applications.models import CompanyUser from applications.configs.init_data import cp_user_data_list - add_data(cp_user_data_list, User) + add_data(cp_user_data_list, CompanyUser) # 用户角色表 from applications.extensions import db diff --git a/applications/extensions/init_login.py b/applications/extensions/init_login.py index e49f6c0..a435c93 100644 --- a/applications/extensions/init_login.py +++ b/applications/extensions/init_login.py @@ -10,6 +10,6 @@ def init_login_manager(app): @login_manager.user_loader def load_user(user_id): - from applications.models import User - user = User.query.get(int(user_id)) + from applications.models import CompanyUser + user = CompanyUser.query.get(int(user_id)) return user diff --git a/applications/models/__init__.py b/applications/models/__init__.py index 329aa67..70db914 100644 --- a/applications/models/__init__.py +++ b/applications/models/__init__.py @@ -1,7 +1,4 @@ -from applications.models.users import Dept, User +from applications.models.file import FilePhoto from applications.models.log import AdminLog -from applications.models.file.photo import Photo -from applications.models.rights.power import Power -from applications.models.rights.role import Role -from applications.models.rights.role_power import role_power -from applications.models.rights.user_role import user_role +from applications.models.rights import RightsPower, RightsRole, role_power, user_role +from applications.models.users import CompanyDepartment, CompanyUser diff --git a/applications/models/base.py b/applications/models/base.py new file mode 100644 index 0000000..7983f3f --- /dev/null +++ b/applications/models/base.py @@ -0,0 +1,8 @@ +from datetime import datetime + +from applications.extensions import db + + +class BaseModel(object): + create_at = db.Column(db.DateTime, default=datetime.now, comment='创建时间') + update_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间') diff --git a/applications/models/file/__init__.py b/applications/models/file/__init__.py index e69de29..1d4f66b 100644 --- a/applications/models/file/__init__.py +++ b/applications/models/file/__init__.py @@ -0,0 +1 @@ +from .photo import FilePhoto diff --git a/applications/models/file/photo.py b/applications/models/file/photo.py index 2d3bb72..cb685fb 100644 --- a/applications/models/file/photo.py +++ b/applications/models/file/photo.py @@ -1,14 +1,12 @@ -import datetime - from applications.extensions import db +from ..base import BaseModel -class Photo(db.Model): + +class FilePhoto(db.Model, BaseModel): __tablename__ = 'file_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) - diff --git a/applications/models/log.py b/applications/models/log.py index 3cba020..80c5733 100644 --- a/applications/models/log.py +++ b/applications/models/log.py @@ -1,8 +1,8 @@ -from datetime import datetime from applications.extensions import db +from .base import BaseModel -class AdminLog(db.Model): +class AdminLog(db.Model, BaseModel): __tablename__ = 'admin_admin_log' id = db.Column(db.Integer, primary_key=True) method = db.Column(db.String(10)) @@ -12,4 +12,4 @@ class AdminLog(db.Model): 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.now) + diff --git a/applications/models/rights/__init__.py b/applications/models/rights/__init__.py index e69de29..a6ef60b 100644 --- a/applications/models/rights/__init__.py +++ b/applications/models/rights/__init__.py @@ -0,0 +1,19 @@ +from applications.extensions import db +from .power import RightsPower +from .role import RightsRole + +# 创建中间表 +user_role = db.Table( + "rt_user_role", # 中间表名称 + db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键 + db.Column("user_id", db.Integer, db.ForeignKey("cp_user.id"), comment='用户编号'), # 属性 外键 + db.Column("role_id", db.Integer, db.ForeignKey("rt_role.id"), comment='角色编号'), # 属性 外键 +) + +# 创建中间表 +role_power = db.Table( + "rt_role_power", # 中间表名称 + db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键 + db.Column("power_id", db.Integer, db.ForeignKey("rt_power.id"), comment='用户编号'), # 属性 外键 + db.Column("role_id", db.Integer, db.ForeignKey("rt_role.id"), comment='角色编号'), # 属性 外键 +) diff --git a/applications/models/rights/power.py b/applications/models/rights/power.py index 68c2f05..46b1d99 100644 --- a/applications/models/rights/power.py +++ b/applications/models/rights/power.py @@ -1,8 +1,10 @@ import datetime + from applications.extensions import db +from ..base import BaseModel -class Power(db.Model): +class RightsPower(db.Model, BaseModel): __tablename__ = 'rt_power' id = db.Column(db.Integer, primary_key=True, comment='权限编号') name = db.Column(db.String(255), comment='权限名称') @@ -14,7 +16,8 @@ class Power(db.Model): 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='是否开启') - parent = db.relationship("Power", remote_side=[id]) # 自关联 + parent = db.relationship("RightsPower", remote_side=[id]) # 自关联 diff --git a/applications/models/rights/role.py b/applications/models/rights/role.py index 42df2dd..3099850 100644 --- a/applications/models/rights/role.py +++ b/applications/models/rights/role.py @@ -1,8 +1,8 @@ -import datetime from applications.extensions import db +from ..base import BaseModel -class Role(db.Model): +class RightsRole(db.Model, BaseModel): __tablename__ = 'rt_role' id = db.Column(db.Integer, primary_key=True, comment='角色ID') name = db.Column(db.String(255), comment='角色名称') @@ -11,6 +11,5 @@ class Role(db.Model): 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="rt_role_power", backref=db.backref('role')) + + power = db.relationship('RightsPower', secondary="rt_role_power", backref=db.backref('role')) diff --git a/applications/models/rights/role_power.py b/applications/models/rights/role_power.py deleted file mode 100644 index 929f581..0000000 --- a/applications/models/rights/role_power.py +++ /dev/null @@ -1,9 +0,0 @@ -from applications.extensions import db - -# 创建中间表 -role_power = db.Table( - "rt_role_power", # 中间表名称 - db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键 - db.Column("power_id", db.Integer, db.ForeignKey("rt_power.id"), comment='用户编号'), # 属性 外键 - db.Column("role_id", db.Integer, db.ForeignKey("rt_role.id"), comment='角色编号'), # 属性 外键 -) diff --git a/applications/models/rights/user_role.py b/applications/models/rights/user_role.py deleted file mode 100644 index 78aa1eb..0000000 --- a/applications/models/rights/user_role.py +++ /dev/null @@ -1,9 +0,0 @@ -from applications.extensions import db - -# 创建中间表 -user_role = db.Table( - "rt_user_role", # 中间表名称 - db.Column("id", db.Integer, primary_key=True, autoincrement=True, comment='标识'), # 主键 - db.Column("user_id", db.Integer, db.ForeignKey("cp_user.id"), comment='用户编号'), # 属性 外键 - db.Column("role_id", db.Integer, db.ForeignKey("rt_role.id"), comment='角色编号'), # 属性 外键 -) diff --git a/applications/models/users/__init__.py b/applications/models/users/__init__.py index 2efb72d..44ac199 100644 --- a/applications/models/users/__init__.py +++ b/applications/models/users/__init__.py @@ -1,2 +1,2 @@ -from .dept import Dept -from .users import User +from .dept import CompanyDepartment +from .users import CompanyUser diff --git a/applications/models/users/dept.py b/applications/models/users/dept.py index 5b47200..4f0bf16 100644 --- a/applications/models/users/dept.py +++ b/applications/models/users/dept.py @@ -1,8 +1,8 @@ -import datetime from applications.extensions import db +from ..base import BaseModel -class Dept(db.Model): +class CompanyDepartment(db.Model, BaseModel): __tablename__ = 'cp_dept' id = db.Column(db.Integer, primary_key=True, comment="部门ID") parent_id = db.Column(db.Integer, comment="父级编号") @@ -14,5 +14,3 @@ class Dept(db.Model): status = db.Column(db.Integer, comment='状态(1开启,0关闭)') remark = db.Column(db.Text, comment="备注") 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='创建时间') diff --git a/applications/models/users/users.py b/applications/models/users/users.py index 2481c16..927bbdb 100644 --- a/applications/models/users/users.py +++ b/applications/models/users/users.py @@ -1,10 +1,11 @@ -import datetime from flask_login import UserMixin from werkzeug.security import generate_password_hash, check_password_hash + from applications.extensions import db +from ..base import BaseModel -class User(db.Model, UserMixin): +class CompanyUser(db.Model, UserMixin, BaseModel): __tablename__ = 'cp_user' id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='用户ID') username = db.Column(db.String(20), comment='用户名') @@ -15,14 +16,11 @@ class User(db.Model, UserMixin): password_hash = db.Column(db.String(128), comment='哈希密码') enable = db.Column(db.Integer, default=0, comment='启用') dept_id = db.Column(db.Integer, comment='部门id') - 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="rt_user_role", backref=db.backref('user'), lazy='dynamic') + role = db.relationship('RightsRole', secondary="rt_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) - diff --git a/applications/view/department.py b/applications/view/department.py index aa4b6ba..cdd6f14 100644 --- a/applications/view/department.py +++ b/applications/view/department.py @@ -1,7 +1,7 @@ from flask import render_template, request from applications.common.utils.rights import authorize -from applications.models import Dept +from applications.models import CompanyDepartment from applications.view import index_bp @@ -21,5 +21,5 @@ def add(): @authorize("admin:dept:edit", log=True) def edit(): dept_id = request.args.get("deptId", type=int) - dept = Dept.query.get(dept_id) + dept = CompanyDepartment.query.get(dept_id) return render_template('department/edit.html', dept=dept) diff --git a/applications/view/logs_view.py b/applications/view/logs_view.py index ab3ad6c..aa33de6 100644 --- a/applications/view/logs_view.py +++ b/applications/view/logs_view.py @@ -23,7 +23,7 @@ def login_log(): limit = request.args.get('limit', type=int) log_paginate = AdminLog.query.filter_by( url='/passport/login').order_by( - desc(AdminLog.create_time)).paginate( + desc(AdminLog.create_at)).paginate( page=page, per_page=limit, error_out=False) data = marshal(log_paginate.items, log_fields) @@ -37,7 +37,7 @@ def operate_log(): limit = request.args.get('limit', type=int) log_paginate = AdminLog.query.filter( AdminLog.url != '/passport/login').order_by( - desc(AdminLog.create_time)).paginate( + desc(AdminLog.create_at)).paginate( page=page, per_page=limit, error_out=False) data = marshal(log_paginate.items, log_fields) return table_api(data=data, count=log_paginate.total) diff --git a/applications/view/rights.py b/applications/view/rights.py index 1a128f6..2007ad2 100644 --- a/applications/view/rights.py +++ b/applications/view/rights.py @@ -1,7 +1,7 @@ from flask import render_template from applications.common.utils.rights import authorize -from applications.models import Power +from applications.models import RightsPower from applications.view import index_bp @@ -14,7 +14,7 @@ def rights_index(): @index_bp.get('/rights/power/') @authorize("admin:power:edit", log=True) def get(power_id): - power = Power.query.filter_by(id=power_id).first() + power = RightsPower.query.filter_by(id=power_id).first() icon = str(power.icon).split() if len(icon) == 2: icon = icon[1] diff --git a/applications/view/roles.py b/applications/view/roles.py index 1bebfb1..e04b193 100644 --- a/applications/view/roles.py +++ b/applications/view/roles.py @@ -2,7 +2,7 @@ from flask import Blueprint, render_template from applications.common.utils.rights import authorize -from applications.models import Role +from applications.models import RightsRole role_bp = Blueprint('role', __name__, url_prefix='/admin/role') @@ -25,5 +25,5 @@ def power(_id): @authorize("admin:role:edit", log=True) @role_bp.get('/edit/') def role_editor(role_id): - role = Role.query.filter_by(id=role_id).first() + role = RightsRole.query.filter_by(id=role_id).first() return render_template('roles/edit.html', role=role) diff --git a/applications/view/users.py b/applications/view/users.py index 67a14ee..a5f87fd 100644 --- a/applications/view/users.py +++ b/applications/view/users.py @@ -3,7 +3,7 @@ from flask_login import login_required, current_user from sqlalchemy import desc from applications.common.utils.rights import authorize -from applications.models import AdminLog, Role, User +from applications.models import AdminLog, RightsRole, CompanyUser from . import index_bp @@ -19,7 +19,7 @@ def users_main(): @login_required def users_center(): user_logs = AdminLog.query.filter_by(url='/passport/login').filter_by(uid=current_user.id).order_by( - desc(AdminLog.create_time)).limit(10) + desc(AdminLog.create_at)).limit(10) return render_template('users/profile.html', user_info=current_user, user_logs=user_logs) @@ -27,8 +27,8 @@ def users_center(): @authorize("admin:user:edit", log=True) def users_user_id_view(user_id): # 获取编辑用户信息 - user = User.query.filter_by(id=user_id).first() - roles = Role.query.all() + user = CompanyUser.query.filter_by(id=user_id).first() + roles = RightsRole.query.all() checked_roles = [] for r in user.role: checked_roles.append(r.id) diff --git a/templates/file/photo.html b/templates/file/photo.html index b3a2505..7e9de4f 100644 --- a/templates/file/photo.html +++ b/templates/file/photo.html @@ -7,7 +7,7 @@
-
+
@@ -34,6 +34,22 @@ + + + + {% include 'common/footer.html' %}