From 52e07373112a06b1385adcd76bcfb7236d26a3db Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Sat, 14 Oct 2023 20:20:46 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E8=A7=92=E8=89=B2=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear_admin/apis/__init__.py | 2 + pear_admin/apis/role.py | 52 +++++++ pear_admin/orms/role.py | 1 + pear_admin/views/views.py | 5 + templates/views/role/index.html | 242 ++++++++++++++++++++++++++++++++ 5 files changed, 302 insertions(+) create mode 100644 pear_admin/apis/role.py create mode 100644 templates/views/role/index.html diff --git a/pear_admin/apis/__init__.py b/pear_admin/apis/__init__.py index 7a9cdcb..40f2769 100644 --- a/pear_admin/apis/__init__.py +++ b/pear_admin/apis/__init__.py @@ -2,6 +2,7 @@ from flask import Blueprint, Flask from .passport import passport_api from .rights import rights_api +from .role import role_api def register_apis(app: Flask): @@ -9,5 +10,6 @@ def register_apis(app: Flask): apis.register_blueprint(passport_api) apis.register_blueprint(rights_api) + apis.register_blueprint(role_api) app.register_blueprint(apis) diff --git a/pear_admin/apis/role.py b/pear_admin/apis/role.py new file mode 100644 index 0000000..03d651c --- /dev/null +++ b/pear_admin/apis/role.py @@ -0,0 +1,52 @@ +from flask import Blueprint, request +from flask_sqlalchemy.pagination import Pagination + +from pear_admin.extensions import db +from pear_admin.orms import RoleORM + +role_api = Blueprint("role", __name__) + + +@role_api.get("/role") +def role_list(): + page = request.args.get("page", default=1, type=int) + per_page = request.args.get("limit", default=10, type=int) + q = db.select(RoleORM) + + pages: Pagination = db.paginate(q, page=page, per_page=per_page) + + return { + "code": 0, + "message": "获取角色数据成功", + "data": [item.json() for item in pages.items], + "count": pages.total, + } + + +@role_api.post("/role") +def create_role(): + data = request.get_json() + if data["id"]: + del data["id"] + role = RoleORM(**data) + role.save() + return {"code": 0, "message": "新增角色成功"} + + +@role_api.put("/role/") +def change_role(rid): + data = request.get_json() + del data["id"] + + role_obj = RoleORM.query.get(rid) + for key, value in data.items(): + setattr(role_obj, key, value) + role_obj.save() + return {"code": 0, "message": "修改角色权限成功"} + + +@role_api.delete("/role/") +def del_role(rid): + role_obj = RoleORM.query.get(rid) + role_obj.delete() + return {"code": 0, "message": "删除角色成功"} diff --git a/pear_admin/orms/role.py b/pear_admin/orms/role.py index c7ec6da..1f88fc6 100644 --- a/pear_admin/orms/role.py +++ b/pear_admin/orms/role.py @@ -24,6 +24,7 @@ class RoleORM(BaseORM): return { "id": self.id, "name": self.name, + "code": self.code, "desc": self.desc, "rights_ids": self.rights_ids, } diff --git a/pear_admin/views/views.py b/pear_admin/views/views.py index 28745ef..d23e684 100644 --- a/pear_admin/views/views.py +++ b/pear_admin/views/views.py @@ -6,3 +6,8 @@ views_bp = Blueprint("views", __name__, url_prefix="/views") @views_bp.get("/rights") def rights_view(): return render_template("views/rights/index.html") + + +@views_bp.get("/role") +def role_view(): + return render_template("views/role/index.html") diff --git a/templates/views/role/index.html b/templates/views/role/index.html new file mode 100644 index 0000000..bfd65fc --- /dev/null +++ b/templates/views/role/index.html @@ -0,0 +1,242 @@ + + + + + 权限管理 + + + + + +
+
+
+
+
+
+
+ + + + + +