From e9187279845f5fffc4dc55f32d296cceecfbd25b Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Tue, 7 Sep 2021 03:43:01 +0800 Subject: [PATCH] =?UTF-8?q?wip(semantic):=E6=95=B0=E6=8D=AE=C3=A6api?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=94=B9=E4=B8=BA=E9=9B=86=E4=B8=AD=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/api/__init__.py | 13 ++++++----- applications/api/rights/__init__.py | 25 +++++++++++++++++++++ applications/api/{ => rights}/department.py | 17 +++++--------- applications/api/{ => rights}/rights.py | 14 +++--------- applications/api/{ => rights}/roles.py | 13 ++--------- applications/api/system/__init__.py | 12 ++++++++++ applications/api/{ => system}/file.py | 7 +----- applications/api/{ => system}/passport.py | 9 ++------ applications/api/users/__init__.py | 15 ++++++++++--- applications/api/users/profile.py | 8 +------ applications/api/users/user.py | 15 +++++-------- 11 files changed, 76 insertions(+), 72 deletions(-) create mode 100644 applications/api/rights/__init__.py rename applications/api/{ => rights}/department.py (93%) rename applications/api/{ => rights}/rights.py (95%) rename applications/api/{ => rights}/roles.py (95%) create mode 100644 applications/api/system/__init__.py rename applications/api/{ => system}/file.py (92%) rename applications/api/{ => system}/passport.py (91%) diff --git a/applications/api/__init__.py b/applications/api/__init__.py index 9aeccea..1fbe596 100644 --- a/applications/api/__init__.py +++ b/applications/api/__init__.py @@ -2,12 +2,13 @@ from flask import Blueprint, Flask api_bp = Blueprint('api', __name__, url_prefix='/api/v1') -from . import department -from . import file -from . import roles -from . import rights -from . import passport -from . import users +from .rights import register_rights_api +from .system import register_system_api +from .users import register_users_api + +register_rights_api(api_bp) +register_users_api(api_bp) +register_system_api(api_bp) def init_api(app: Flask): diff --git a/applications/api/rights/__init__.py b/applications/api/rights/__init__.py new file mode 100644 index 0000000..24e3a70 --- /dev/null +++ b/applications/api/rights/__init__.py @@ -0,0 +1,25 @@ +from flask_restful import Api + +from .department import Departments, Department, DeptEnable +from .rights import RightRights, RightPower, RightPowerEnable, AdminConfigs, AdminMenu +from .roles import RoleRoles, RoleRole, RoleEnable, RolePower + + +def register_rights_api(api_bp): + dept_api = Api(api_bp, prefix='/dept') + dept_api.add_resource(Departments, '/departments') + dept_api.add_resource(Department, '/department/') + dept_api.add_resource(DeptEnable, '/department//status') + + rights_api = Api(api_bp, prefix='/rights') + rights_api.add_resource(RightRights, '/rights') + rights_api.add_resource(RightPower, '/power/') + rights_api.add_resource(RightPowerEnable, '/power//status') + rights_api.add_resource(AdminConfigs, '/configs') + rights_api.add_resource(AdminMenu, '/menu') + + role_api = Api(api_bp, prefix='/roles') + role_api.add_resource(RoleRoles, '/roles') + role_api.add_resource(RoleRole, '/role/') + role_api.add_resource(RoleEnable, '/role//status') + role_api.add_resource(RolePower, '/role_power/') diff --git a/applications/api/department.py b/applications/api/rights/department.py similarity index 93% rename from applications/api/department.py rename to applications/api/rights/department.py index 104e252..2864dff 100644 --- a/applications/api/department.py +++ b/applications/api/rights/department.py @@ -1,18 +1,15 @@ from flask import jsonify -from flask_restful import Api, Resource -from applications.api import api_bp +from flask_restful import Resource +from flask_restful import marshal, reqparse + +from applications.common.serialization import dept_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 CompanyDepartment, CompanyUser -from flask_restful import marshal, reqparse -from applications.common.serialization import dept_fields - -dept_api = Api(api_bp, prefix='/dept') -@dept_api.resource('/departments') -class Department(Resource): +class Departments(Resource): @authorize("admin:dept:main", log=True) def get(self): @@ -54,8 +51,7 @@ class Department(Resource): return success_api(msg="成功") -@dept_api.resource('/department/') -class DeptURD(Resource): +class Department(Resource): @authorize("admin:dept:edit", log=True) def get(self, dept_id): dept = CompanyDepartment.query.filter_by(id=dept_id).first() @@ -109,7 +105,6 @@ class DeptURD(Resource): return fail_api(msg="删除失败") -@dept_api.resource('/department//status') class DeptEnable(Resource): @authorize("admin:dept:edit", log=True) def put(self, dept_id): diff --git a/applications/api/rights.py b/applications/api/rights/rights.py similarity index 95% rename from applications/api/rights.py rename to applications/api/rights/rights.py index 6a9ed1c..160e0d7 100644 --- a/applications/api/rights.py +++ b/applications/api/rights/rights.py @@ -3,9 +3,8 @@ from collections import OrderedDict from flask import request, jsonify, current_app from flask_login import current_user, login_required -from flask_restful import Resource, reqparse, Api, marshal +from flask_restful import Resource, reqparse, marshal -from applications.api import api_bp 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 @@ -143,8 +142,6 @@ def batch_remove_power(ids): remove_power(_id) -rights_api = Api(api_bp, prefix='/rights') - parser_power = reqparse.RequestParser(bundle_errors=True) parser_power.add_argument('icon', type=str) parser_power.add_argument('openType', type=str, dest='open_type') @@ -156,7 +153,6 @@ parser_power.add_argument('powerUrl', type=str, dest='power_url') parser_power.add_argument('sort', type=int, dest='sort') -@rights_api.resource('/rights') class RightRights(Resource): @authorize("admin:power:main", log=True) def get(self): @@ -179,8 +175,7 @@ class RightRights(Resource): return success_api(msg="批量删除成功") -@rights_api.resource('/power/') -class RightsPowerView(Resource): +class RightPower(Resource): @authorize("admin:power:add", log=True) def post(self, power_id): @@ -246,8 +241,7 @@ class RightsPowerView(Resource): return success_api(msg="更新权限成功") -@rights_api.resource('/power//status') -class PowerStatus(Resource): +class RightPowerEnable(Resource): @authorize("admin:power:edit", log=True) def put(self, right_id): @@ -261,14 +255,12 @@ class PowerStatus(Resource): return fail_api(msg="出错啦") -@rights_api.resource('/configs') class AdminConfigs(Resource): @login_required def get(self): return get_render_config() -@rights_api.resource('/menu') class AdminMenu(Resource): @login_required def get(self): diff --git a/applications/api/roles.py b/applications/api/rights/roles.py similarity index 95% rename from applications/api/roles.py rename to applications/api/rights/roles.py index d6cc17d..9d65903 100644 --- a/applications/api/roles.py +++ b/applications/api/rights/roles.py @@ -1,14 +1,12 @@ from flask import jsonify from flask_login import login_required -from flask_restful import Resource, Api, reqparse, marshal +from flask_restful import Resource, reqparse, marshal +from applications.common.serialization import power_fields from applications.common.utils.http import table_api, success_api, fail_api from applications.common.utils.rights import authorize -from applications.common.serialization import power_fields - from applications.extensions import db from applications.models import RightsPower, RightsRole, CompanyUser -from . import api_bp def remove_role(role_id): @@ -39,10 +37,6 @@ def batch_remove_role(role_ids): remove_role(role_id) -role_api = Api(api_bp, prefix='/roles') - - -@role_api.resource('/roles') class RoleRoles(Resource): # 表格数据 @authorize("admin:role:main", log=True) @@ -88,7 +82,6 @@ class RoleRoles(Resource): return success_api(msg="批量删除成功") -@role_api.resource('/role/') class RoleRole(Resource): @authorize("admin:role:add", log=True) @@ -141,7 +134,6 @@ class RoleRole(Resource): return success_api(msg="更新角色成功") -@role_api.resource('/role//status') class RoleEnable(Resource): """启用用户""" @@ -157,7 +149,6 @@ class RoleEnable(Resource): return success_api(msg=message) -@role_api.resource('/role_power/') class RolePower(Resource): @authorize("admin:role:main", log=True) diff --git a/applications/api/system/__init__.py b/applications/api/system/__init__.py new file mode 100644 index 0000000..da04143 --- /dev/null +++ b/applications/api/system/__init__.py @@ -0,0 +1,12 @@ +from flask_restful import Api + +from .file import FilePhotos, FileTable +from .passport import Login + + +def register_system_api(api_bp): + sys_api = Api(api_bp) + + sys_api.add_resource(FilePhotos, '/file/photos') + sys_api.add_resource(FileTable, '/file/photo/') + sys_api.add_resource(Login, '/passport/login') diff --git a/applications/api/file.py b/applications/api/system/file.py similarity index 92% rename from applications/api/file.py rename to applications/api/system/file.py index 884f812..47176ff 100644 --- a/applications/api/file.py +++ b/applications/api/system/file.py @@ -1,10 +1,9 @@ import os from flask import request, jsonify, current_app -from flask_restful import Api, Resource, marshal +from flask_restful import Resource, marshal from sqlalchemy import desc -from applications.api import api_bp 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 @@ -12,10 +11,7 @@ from applications.common.utils.upload import upload_one, delete_photo_by_id from applications.extensions import db from applications.models import FilePhoto -file_api = Api(api_bp, prefix='/file') - -@file_api.resource('/photos') class FilePhotos(Resource): @authorize("admin:file:main", log=True) @@ -61,7 +57,6 @@ class FilePhotos(Resource): return fail_api(msg="删除失败") -@file_api.resource('/photo/') class FileTable(Resource): """图片数据""" diff --git a/applications/api/passport.py b/applications/api/system/passport.py similarity index 91% rename from applications/api/passport.py rename to applications/api/system/passport.py index 52d2fe0..438c1b0 100644 --- a/applications/api/passport.py +++ b/applications/api/system/passport.py @@ -1,19 +1,14 @@ +from flask import render_template, make_response from flask import session, redirect, url_for, request from flask_login import current_user, login_user -from flask_restful import Resource, reqparse, Api +from flask_restful import Resource, reqparse -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 CompanyUser -from flask import render_template, make_response -passport_api = Api(api_bp, prefix='/passport') - - -@passport_api.resource('/login') class Login(Resource): login_req = reqparse.RequestParser(bundle_errors=True) login_req.add_argument('username', type=str, help='请输入用户名', required=True) diff --git a/applications/api/users/__init__.py b/applications/api/users/__init__.py index ce61160..7c2292e 100644 --- a/applications/api/users/__init__.py +++ b/applications/api/users/__init__.py @@ -1,7 +1,16 @@ from flask_restful import Api -from applications.api import api_bp +from .profile import UserStatus, UserAvatar, UserInfo, UserPassword +from .user import UserUsers, UserUser, UserRole -users_api = Api(api_bp, prefix='/users') -from . import user, profile +def register_users_api(api_bp): + users_api = Api(api_bp, prefix='/users') + + users_api.add_resource(UserInfo, '/user//info') + users_api.add_resource(UserStatus, '/user//status') + users_api.add_resource(UserAvatar, '/user//avatar') + users_api.add_resource(UserPassword, '/user//password') + users_api.add_resource(UserUsers, '/users') + users_api.add_resource(UserUser, '/user/') + users_api.add_resource(UserRole, '/user//role') diff --git a/applications/api/users/profile.py b/applications/api/users/profile.py index ff69171..2836a59 100644 --- a/applications/api/users/profile.py +++ b/applications/api/users/profile.py @@ -1,16 +1,13 @@ # 个人中心 from flask import request, jsonify -from flask_login import login_required, current_user +from flask_login import login_required 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 CompanyUser -from . import users_api - -@users_api.resource('/user//status') class UserStatus(Resource): def put(self, user_id): # 启用或者禁用用户 enable disable @@ -35,7 +32,6 @@ class UserStatus(Resource): return message -@users_api.resource('/user//avatar') class UserAvatar(Resource): """修改头像""" @@ -49,7 +45,6 @@ class UserAvatar(Resource): return success_api(msg="修改成功") -@users_api.resource('/user//info') class UserInfo(Resource): @login_required @@ -72,7 +67,6 @@ class UserInfo(Resource): return success_api(msg="更新成功") -@users_api.resource('/user//password') class UserPassword(Resource): """前用户密码""" diff --git a/applications/api/users/user.py b/applications/api/users/user.py index 7007550..350b758 100644 --- a/applications/api/users/user.py +++ b/applications/api/users/user.py @@ -1,15 +1,13 @@ from flask import request - -from flask_restful import Resource, reqparse from flask_login import current_user +from flask_restful import Resource, reqparse 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 CompanyUser, RightsRole, CompanyDepartment +from applications.extensions import db from applications.models import AdminLog -from . import users_api +from applications.models import CompanyUser, RightsRole, CompanyDepartment def get_current_user_logs(): @@ -59,7 +57,6 @@ def update_user_role(_id, roles_list): db.session.commit() -@users_api.resource('/users') class UserUsers(Resource): """用户列表数据操作""" @@ -140,7 +137,6 @@ class UserUsers(Resource): return success_api(msg="批量删除成功") -@users_api.resource('/user/') class UserUser(Resource): """修改用户数据""" @@ -185,7 +181,6 @@ class UserUser(Resource): return success_api(msg="删除成功") -@users_api.resource('/user//role') class UserRole(Resource): @authorize("admin:user:edit", log=True) def put(self, user_id): @@ -201,8 +196,8 @@ class UserRole(Resource): # 更新用户数据 CompanyUser.query.filter_by(id=user_id).update({'username': res.username, - 'realname': res.real_name, - 'dept_id': res.dept_id}) + 'realname': res.real_name, + 'dept_id': res.dept_id}) db.session.commit() update_user_role(user_id, role_ids)