From dce79080410356c48a6deadc726c8317ebcb2264 Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Fri, 2 Jul 2021 04:39:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9B=AE=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/{console.html => welcome.html} | 0 .../admin/{dept => department}/add.html | 0 .../admin/{dept => department}/edit.html | 0 .../admin/{dept => department}/main.html | 0 applications/templates/admin/file/photo.html | 270 ------------------ .../templates/admin/file/photo_add.html | 65 ----- applications/view/__init__.py | 6 +- applications/view/admin/__init__.py | 15 - applications/view/admin/_utils.py | 26 -- applications/view/admin/file.py | 83 ------ .../view/{company => }/department/__init__.py | 6 +- applications/view/rights/_utils.py | 28 -- .../view/{company => roles}/__init__.py | 0 applications/view/roles/_utils.py | 30 ++ applications/view/{rights => roles}/role.py | 2 +- applications/view/system/__init__.py | 15 + applications/view/{admin => system}/index.py | 2 +- applications/view/{admin => system}/logs.py | 0 .../view/{company => }/users/__init__.py | 0 .../view/{company => }/users/_utils.py | 0 .../view/{company => }/users/profile.py | 2 +- .../view/{company => }/users/user_view.py | 2 +- 22 files changed, 55 insertions(+), 497 deletions(-) rename applications/templates/admin/console/{console.html => welcome.html} (100%) rename applications/templates/admin/{dept => department}/add.html (100%) rename applications/templates/admin/{dept => department}/edit.html (100%) rename applications/templates/admin/{dept => department}/main.html (100%) delete mode 100644 applications/templates/admin/file/photo.html delete mode 100644 applications/templates/admin/file/photo_add.html delete mode 100644 applications/view/admin/__init__.py delete mode 100644 applications/view/admin/_utils.py delete mode 100644 applications/view/admin/file.py rename applications/view/{company => }/department/__init__.py (95%) rename applications/view/{company => roles}/__init__.py (100%) create mode 100644 applications/view/roles/_utils.py rename applications/view/{rights => roles}/role.py (98%) create mode 100644 applications/view/system/__init__.py rename applications/view/{admin => system}/index.py (86%) rename applications/view/{admin => system}/logs.py (100%) rename applications/view/{company => }/users/__init__.py (100%) rename applications/view/{company => }/users/_utils.py (100%) rename applications/view/{company => }/users/profile.py (97%) rename applications/view/{company => }/users/user_view.py (98%) diff --git a/applications/templates/admin/console/console.html b/applications/templates/admin/console/welcome.html similarity index 100% rename from applications/templates/admin/console/console.html rename to applications/templates/admin/console/welcome.html diff --git a/applications/templates/admin/dept/add.html b/applications/templates/admin/department/add.html similarity index 100% rename from applications/templates/admin/dept/add.html rename to applications/templates/admin/department/add.html diff --git a/applications/templates/admin/dept/edit.html b/applications/templates/admin/department/edit.html similarity index 100% rename from applications/templates/admin/dept/edit.html rename to applications/templates/admin/department/edit.html diff --git a/applications/templates/admin/dept/main.html b/applications/templates/admin/department/main.html similarity index 100% rename from applications/templates/admin/dept/main.html rename to applications/templates/admin/department/main.html diff --git a/applications/templates/admin/file/photo.html b/applications/templates/admin/file/photo.html deleted file mode 100644 index c194c56..0000000 --- a/applications/templates/admin/file/photo.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - 图片上传 - {% include 'admin/common/header.html' %} - - -
-
-
-
-
- - - - - -{% include 'admin/common/footer.html' %} - \ No newline at end of file diff --git a/applications/templates/admin/file/photo_add.html b/applications/templates/admin/file/photo_add.html deleted file mode 100644 index 20d343b..0000000 --- a/applications/templates/admin/file/photo_add.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - {% include 'admin/common/header.html' %} - - - -
-
-
-
-
- 新增图片 -
-
-
- - - -
-
-
-
-
-
-{% include 'admin/common/footer.html' %} - - - \ No newline at end of file diff --git a/applications/view/__init__.py b/applications/view/__init__.py index 09f144e..36c9ee7 100644 --- a/applications/view/__init__.py +++ b/applications/view/__init__.py @@ -1,12 +1,12 @@ -from applications.view.admin import register_admin_views +from applications.view.system import register_system_views from applications.view.index import register_index_views from applications.view.passport import register_passport_views from applications.view.rights import register_rights_view -from applications.view.company.department import register_dept_views +from applications.view.department import register_dept_views def init_view(app): - register_admin_views(app) + register_system_views(app) register_index_views(app) register_rights_view(app) register_passport_views(app) diff --git a/applications/view/admin/__init__.py b/applications/view/admin/__init__.py deleted file mode 100644 index d93755c..0000000 --- a/applications/view/admin/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from flask import Flask - -from applications.view.admin.logs import admin_log -from applications.view.admin.index import admin_bp -from applications.view.admin.file import file_bp -from applications.view.rights.role import role_bp -from applications.view.company.users import users_bp - - -def register_admin_views(app: Flask): - app.register_blueprint(admin_bp) - app.register_blueprint(users_bp) - app.register_blueprint(file_bp) - app.register_blueprint(admin_log) - app.register_blueprint(role_bp) diff --git a/applications/view/admin/_utils.py b/applications/view/admin/_utils.py deleted file mode 100644 index b62ebe3..0000000 --- a/applications/view/admin/_utils.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -from flask import current_app -from applications.common.utils.upload import photos -from applications.extensions import db -from applications.models import Photo - - -def upload_one(photo, mime): - filename = photos.save(photo) - file_url = photos.url(filename) - - 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) - 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() - db.session.commit() - upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST") - os.remove(upload_url + '/' + photo_name) - return photo diff --git a/applications/view/admin/file.py b/applications/view/admin/file.py deleted file mode 100644 index 5b337b3..0000000 --- a/applications/view/admin/file.py +++ /dev/null @@ -1,83 +0,0 @@ -import os -from flask import Blueprint, request, render_template, jsonify, current_app, make_response -from flask_restful import Api, Resource, marshal -from sqlalchemy import desc - -from applications.common.serialization import photo_fields -from applications.common.utils.http import fail_api, success_api, table_api -from applications.common.utils.rights import authorize -from applications.extensions import db -from applications.models import Photo - -from ._utils import delete_photo_by_id, upload_one - -file_bp = Blueprint('file', __name__, url_prefix='/file') -file_api = Api(file_bp) - - -# 图片管理 -@file_bp.get('/') -@authorize("admin:file:main", log=True) -def index(): - return render_template('admin/file/photo.html') - - -# 图片数据 -@file_bp.get('/table') -@authorize("admin:file:main", log=True) -def table(): - 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) - data = marshal(photo_paginate.items, photo_fields) - return table_api(data=data, count=photo_paginate.total) - - -@file_api.resource('/upload') -class Upload(Resource): - @authorize("admin:file:add", log=True) - def get(self): - return make_response(render_template('admin/file/photo_add.html')) - - @authorize("admin:file:add", log=True) - def post(self): - if 'file' in request.files: - photo = request.files['file'] - mime = request.files['file'].content_type - file_url = upload_one(photo=photo, mime=mime) - - res = { - "msg": "上传成功", - "code": 0, - "success": True, - "data": - {"src": file_url} - } - return jsonify(res) - return fail_api() - - @authorize("admin:file:delete", log=True) - def delete(self): - _id = request.form.get('id') - res = delete_photo_by_id(_id) - if res: - return success_api(msg="删除成功") - else: - return fail_api(msg="删除失败") - - -# 图片批量删除 -@file_bp.route('/batchRemove', methods=['GET', 'POST']) -@authorize("admin:file:delete", log=True) -def batch_remove(): - ids = request.form.getlist('ids[]') - photo_name = Photo.query.filter(Photo.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) - db.session.commit() - if photo: - return success_api(msg="删除成功") - else: - return fail_api(msg="删除失败") diff --git a/applications/view/company/department/__init__.py b/applications/view/department/__init__.py similarity index 95% rename from applications/view/company/department/__init__.py rename to applications/view/department/__init__.py index 92b033c..c23354d 100644 --- a/applications/view/company/department/__init__.py +++ b/applications/view/department/__init__.py @@ -20,7 +20,7 @@ def register_dept_views(app): @dept_bp.get('/') @authorize("admin:dept:main", log=True) def main(): - return render_template('admin/dept/main.html') + return render_template('admin/department/main.html') @dept_bp.get('/data') @@ -38,7 +38,7 @@ def data(): class AddDepartment(Resource): @authorize("admin:dept:add", log=True) def get(self): - return make_response(render_template('admin/dept/add.html')) + return make_response(render_template('admin/department/add.html')) @authorize("admin:dept:add", log=True) def post(self): @@ -104,7 +104,7 @@ class DeptURD(Resource): @authorize("admin:dept:edit", log=True) def get(self, dept_id): dept = Dept.query.filter_by(id=dept_id).first() - return make_response(render_template('admin/dept/edit.html', dept=dept)) + return make_response(render_template('admin/department/edit.html', dept=dept)) @authorize("admin:dept:edit", log=True) def put(self, dept_id): diff --git a/applications/view/rights/_utils.py b/applications/view/rights/_utils.py index 054f069..e94745f 100644 --- a/applications/view/rights/_utils.py +++ b/applications/view/rights/_utils.py @@ -152,31 +152,3 @@ def remove_power(power_id): def batch_remove_power(ids): for _id in ids: remove_power(_id) - - -def remove_role(_id): - """ 删除角色 """ - role = Role.query.filter_by(id=_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() - 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() - for u in users: - role.user.remove(u) - r = Role.query.filter_by(id=_id).delete() - db.session.commit() - return r - - -def batch_remove_role(ids): - """ 批量删除 """ - for _id in ids: - remove_role(_id) diff --git a/applications/view/company/__init__.py b/applications/view/roles/__init__.py similarity index 100% rename from applications/view/company/__init__.py rename to applications/view/roles/__init__.py diff --git a/applications/view/roles/_utils.py b/applications/view/roles/_utils.py new file mode 100644 index 0000000..fe1e596 --- /dev/null +++ b/applications/view/roles/_utils.py @@ -0,0 +1,30 @@ +from applications.extensions import db +from applications.models import Power, Role, User + + +def remove_role(_id): + """ 删除角色 """ + role = Role.query.filter_by(id=_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() + 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() + for u in users: + role.user.remove(u) + r = Role.query.filter_by(id=_id).delete() + db.session.commit() + return r + + +def batch_remove_role(ids): + """ 批量删除 """ + for _id in ids: + remove_role(_id) diff --git a/applications/view/rights/role.py b/applications/view/roles/role.py similarity index 98% rename from applications/view/rights/role.py rename to applications/view/roles/role.py index c653cf5..d82b84f 100644 --- a/applications/view/rights/role.py +++ b/applications/view/roles/role.py @@ -11,7 +11,7 @@ from flask_restful import reqparse, marshal from applications.common.serialization import power_fields -from ._utils import remove_role, batch_remove_role +from applications.view.roles._utils import remove_role, batch_remove_role role_bp = Blueprint('role', __name__, url_prefix='/admin/role') role_api = Api(role_bp) diff --git a/applications/view/system/__init__.py b/applications/view/system/__init__.py new file mode 100644 index 0000000..af97c17 --- /dev/null +++ b/applications/view/system/__init__.py @@ -0,0 +1,15 @@ +from flask import Flask + +from applications.view.system.logs import admin_log +from applications.view.system.index import admin_bp +from applications.view.upload.file import file_bp +from applications.view.roles.role import role_bp +from applications.view.users import users_bp + + +def register_system_views(app: Flask): + app.register_blueprint(admin_bp) + app.register_blueprint(users_bp) + app.register_blueprint(file_bp) + app.register_blueprint(admin_log) + app.register_blueprint(role_bp) diff --git a/applications/view/admin/index.py b/applications/view/system/index.py similarity index 86% rename from applications/view/admin/index.py rename to applications/view/system/index.py index b4dde3f..da838fc 100644 --- a/applications/view/admin/index.py +++ b/applications/view/system/index.py @@ -16,4 +16,4 @@ def index(): @admin_bp.get('/welcome') @login_required def welcome(): - return render_template('admin/console/console.html') + return render_template('admin/console/welcome.html') diff --git a/applications/view/admin/logs.py b/applications/view/system/logs.py similarity index 100% rename from applications/view/admin/logs.py rename to applications/view/system/logs.py diff --git a/applications/view/company/users/__init__.py b/applications/view/users/__init__.py similarity index 100% rename from applications/view/company/users/__init__.py rename to applications/view/users/__init__.py diff --git a/applications/view/company/users/_utils.py b/applications/view/users/_utils.py similarity index 100% rename from applications/view/company/users/_utils.py rename to applications/view/users/_utils.py diff --git a/applications/view/company/users/profile.py b/applications/view/users/profile.py similarity index 97% rename from applications/view/company/users/profile.py rename to applications/view/users/profile.py index 9d1c08d..0a6b016 100644 --- a/applications/view/company/users/profile.py +++ b/applications/view/users/profile.py @@ -7,7 +7,7 @@ from sqlalchemy import desc from applications.common.utils.http import fail_api, success_api from applications.extensions import db from applications.models import User, AdminLog -from applications.view.company.users import users_bp, user_api +from applications.view.users import users_bp, user_api @users_bp.get('/center') diff --git a/applications/view/company/users/user_view.py b/applications/view/users/user_view.py similarity index 98% rename from applications/view/company/users/user_view.py rename to applications/view/users/user_view.py index c038b8f..affc18e 100644 --- a/applications/view/company/users/user_view.py +++ b/applications/view/users/user_view.py @@ -5,7 +5,7 @@ from applications.extensions import db from applications.common.utils.http import fail_api, success_api from applications.common.utils.rights import authorize from applications.models import User, Role -from applications.view.company.users import user_api, users_bp, _utils +from applications.view.users import user_api, users_bp, _utils @user_api.resource('/add')