From ab4bb1ca40f206d0b8280017307de3b800527d29 Mon Sep 17 00:00:00 2001 From: zhengxinonly Date: Mon, 26 Jul 2021 14:36:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor(rest-api):=E8=B0=83=E6=95=B4=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/api/rights.py | 98 +++++++------------------ applications/templates/rights/edit.html | 11 ++- applications/templates/rights/main.html | 23 +++--- applications/view/index.py | 2 +- 4 files changed, 49 insertions(+), 85 deletions(-) diff --git a/applications/api/rights.py b/applications/api/rights.py index d1cc354..2f564e4 100644 --- a/applications/api/rights.py +++ b/applications/api/rights.py @@ -120,20 +120,6 @@ def make_menu_tree(): return menu_dict.get(0) -# 选择父节点 -def select_power_dict(): - power = Power.query.all() - res = marshal(power, power_fields) - res.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1}) - return res - - -def get_power_dict(): - power = Power.query.all() - res = marshal(power, power_fields) - return res - - # 删除权限(目前没有判断父节点自动删除子节点) def remove_power(power_id): power = Power.query.filter_by(id=power_id).first() @@ -168,24 +154,18 @@ parser_power.add_argument('powerUrl', type=str, dest='power_url') parser_power.add_argument('sort', type=int, dest='sort') -@rights_api.resource('/data') -class RightsData(Resource): - @authorize("admin:power:main", log=True) - def get(self): - power_data = get_power_dict() - - res = { - "data": power_data - } - return jsonify(res) - - -@rights_api.resource('/select_parent') -class RightsSelectParent(Resource): +@rights_api.resource('/rights') +class RightRights(Resource): @authorize("admin:power:main", log=True) def get(self): """获取选择父节点""" - power_data = select_power_dict() + + # power = Power.query.all() + # res = marshal(power, power_fields) + + power = Power.query.all() + power_data = marshal(power, power_fields) + power_data.append({"powerId": 0, "powerName": "顶级权限", "parentId": -1}) res = { "status": {"code": 200, "message": "默认"}, "data": power_data @@ -193,28 +173,6 @@ class RightsSelectParent(Resource): } return jsonify(res) - -@rights_api.resource('/enable') -class RightsEnable(Resource): - @authorize("admin:power:edit", log=True) - def put(self): - parser = reqparse.RequestParser(bundle_errors=True) - parser.add_argument('powerId', dest='power_id', type=int, required=True) - parser.add_argument('operate', type=int, required=True, choices=[0, 1]) - - res = parser.parse_args() - - power = Power.query.filter_by(id=res.power_id).update({"enable": res.operate}) - if power: - db.session.commit() - message = "启用成功" if res.operate else '禁用成功' - return success_api(msg=message) - else: - return fail_api(msg="出错啦") - - -@rights_api.resource('/batch_remove') -class RightsBatchRemove(Resource): @authorize("admin:power:remove", log=True) def delete(self): ids = request.form.getlist('ids[]') @@ -222,15 +180,11 @@ class RightsBatchRemove(Resource): return success_api(msg="批量删除成功") -@rights_api.resource('/power') -class AddRight(Resource): - # @authorize("admin:power:add", log=True) - # def get(self): - # """获取增加视图""" - # return make_response(render_template('rights/add.html')) +@rights_api.resource('/power/') +class RightsPower(Resource): @authorize("admin:power:add", log=True) - def post(self): + def post(self, power_id): res = parser_power.parse_args() power = Power( icon=res.icon, @@ -252,19 +206,6 @@ class AddRight(Resource): return success_api(msg="成功") - -@rights_api.resource('/power/') -class RightsURD(Resource): - # @authorize("admin:power:edit", log=True) - # def get(self, power_id): - # power = Power.query.filter_by(id=power_id).first() - # icon = str(power.icon).split() - # if len(icon) == 2: - # icon = icon[1] - # else: - # icon = None - # return make_response(render_template('rights/edit.html', power=power, icon=icon)) - @authorize("admin:power:remove", log=True) def delete(self, power_id): # 删除权限(目前没有判断父节点自动删除子节点) @@ -306,6 +247,21 @@ class RightsURD(Resource): return success_api(msg="更新权限成功") +@rights_api.resource('power//status') +class PowerStatus(Resource): + @authorize("admin:power:edit", log=True) + def put(self, right_id): + + power = Power.query.get(id=right_id) + if power: + power.enable = not power.enable + db.session.commit() + message = "修改成功" + return success_api(msg=message) + else: + return fail_api(msg="出错啦") + + @rights_api.resource('/configs') class AdminConfigs(Resource): @login_required diff --git a/applications/templates/rights/edit.html b/applications/templates/rights/edit.html index 8907598..c94e577 100644 --- a/applications/templates/rights/edit.html +++ b/applications/templates/rights/edit.html @@ -102,11 +102,16 @@ let $ = layui.jquery let iconPicker = layui.iconPicker let dtree = layui.dtree - let MODULE_PATH = '/api/v1/rights/' + let MODULE_PATH = '/api/v1/rights' + let RIGHTS_API = { + 'RIGHTS': () => `${MODULE_PATH}/rights`, + 'POWER': (power_id) => `${MODULE_PATH}/power/${power_id}`, + 'POWER_STATUS': (power_id) => `${MODULE_PATH}/power/${power_id}/status` + } dtree.renderSelect({ elem: '#selectParent', - url: MODULE_PATH + 'select_parent', + url: RIGHTS_API.RIGHTS(), method: 'get', selectInputName: { nodeId: 'parentId', context: 'powerName' }, skin: 'layui', @@ -143,7 +148,7 @@ data.field.icon = 'layui-icon ' + data.field.icon console.log(data.field) $.ajax({ - url: MODULE_PATH + 'power/' + data.field.powerId, + url: RIGHTS_API.POWER(data.field.powerId), data: JSON.stringify(data.field), dataType: 'json', contentType: 'application/json', diff --git a/applications/templates/rights/main.html b/applications/templates/rights/main.html index bccf69d..9d87500 100644 --- a/applications/templates/rights/main.html +++ b/applications/templates/rights/main.html @@ -175,7 +175,12 @@ let iconPicker = layui.iconPicker let dtree = layui.dtree - let MODULE_PATH = '/api/v1/rights/' + let MODULE_PATH = '/api/v1/rights' + let RIGHTS_API = { + 'RIGHTS': () => `${MODULE_PATH}/rights`, + 'POWER': (power_id) => `${MODULE_PATH}/power/${power_id}`, + 'POWER_STATUS': (power_id) => `${MODULE_PATH}/power/${power_id}/status` + } window.render = function () { treetable.render({ @@ -188,13 +193,11 @@ treeDefaultClose: true, toolbar: '#power-toolbar', elem: '#power_table', - url: MODULE_PATH + 'data', + url: RIGHTS_API.RIGHTS(), page: false, cols: [ [ - {% if authorize("admin:role:remove") %} - { type: 'checkbox' }, - {% endif %} + { type: 'checkbox' }, { field: 'powerName', minWidth: 200, title: '权限名称' }, { field: 'icon', title: '图标', templet: '#icon' }, { field: 'powerType', title: '权限类型', templet: '#power-type' }, @@ -263,7 +266,7 @@ } let loading = layer.load() $.ajax({ - url: MODULE_PATH + 'enable', + url: RIGHTS_API.POWER_STATUS(this.value), data: JSON.stringify({ powerId: this.value, operate: operate }), dataType: 'json', contentType: 'application/json', @@ -303,7 +306,7 @@ layer.close(index) let loading = layer.load() $.ajax({ - url: MODULE_PATH + 'power/' + obj.data['powerId'], + url: RIGHTS_API.POWER(obj.data['powerId']), dataType: 'json', type: 'delete', success: function (result) { @@ -345,7 +348,7 @@ layer.close(index) let loading = layer.load() $.ajax({ - url: MODULE_PATH + 'batchRemove', + url: RIGHTS_API.RIGHTS(), data: { ids: ids }, dataType: 'json', type: 'delete', @@ -367,7 +370,7 @@ {#添加权限数据页面#} dtree.renderSelect({ elem: '#select_parent_dept', - url: MODULE_PATH + 'select_parent', + url: RIGHTS_API.RIGHTS(), method: 'get', selectInputName: { nodeId: 'parentId', context: 'powerName' }, skin: 'layui', @@ -400,7 +403,7 @@ form.on('submit(power-save)', function (data) { data.field.icon = 'layui-icon ' + data.field.icon $.ajax({ - url: MODULE_PATH + 'power', + url: RIGHTS_API.POWER(0), data: JSON.stringify(data.field), dataType: 'json', contentType: 'application/json', diff --git a/applications/view/index.py b/applications/view/index.py index ebdb873..a1d7e8d 100644 --- a/applications/view/index.py +++ b/applications/view/index.py @@ -11,7 +11,7 @@ def index(): # 首页 -@index_bp.get('/admin') +@index_bp.get('/admin/') @login_required def admin_index(): return render_template('index/admin_index.html', user=current_user)