From 3005b937e48fdd479561733044cdb226f980edd1 Mon Sep 17 00:00:00 2001 From: ge-baichen_admin Date: Sat, 18 Feb 2023 16:12:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?'=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=BC=B9=E7=AA=97=E9=97=AE=E9=A2=98=E5=92=8C?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=AA=8C=E8=AF=81=E7=A0=81=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 2 +- pear_admin/api/auth_api.py | 2 +- static/js/pear_admin_flask.js | 120 +++++++++++++++-------------- templates/index.html | 45 +++++------ templates/login.html | 141 +++++++++++++++++----------------- 5 files changed, 158 insertions(+), 152 deletions(-) diff --git a/config.py b/config.py index bc51b44..98e6193 100644 --- a/config.py +++ b/config.py @@ -8,7 +8,7 @@ LOG_LEVEL = logging.WARN # mysql 配置 MYSQL_USERNAME = "root" -MYSQL_PASSWORD = "root" +MYSQL_PASSWORD = "123456" MYSQL_HOST = "127.0.0.1" MYSQL_PORT = 3306 diff --git a/pear_admin/api/auth_api.py b/pear_admin/api/auth_api.py index 9a1f479..7506f6b 100644 --- a/pear_admin/api/auth_api.py +++ b/pear_admin/api/auth_api.py @@ -27,7 +27,7 @@ class LoginApi(MethodView): user: UserORM = UserORM.find_by_username(username) code = redis_client.get(f"image_code_{image_code_uuid}") - if code != captcha_code: + if str(code) != captcha_code: return { "meta": { "code": RetCode.CAPTCHA_CODE_ERR.code, diff --git a/static/js/pear_admin_flask.js b/static/js/pear_admin_flask.js index 6f525bb..9f0afc3 100644 --- a/static/js/pear_admin_flask.js +++ b/static/js/pear_admin_flask.js @@ -1,131 +1,135 @@ function generateUUID() { - var d = new Date().getTime(); - if (window.performance && typeof window.performance.now === 'function') { - d += performance.now(); //use high-precision timer if available - } - var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, - function(c) { - var r = (d + Math.random() * 16) % 16 | 0; - d = Math.floor(d / 16); - return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); - }); - return uuid; + var d = new Date().getTime(); + if (window.performance && typeof window.performance.now === 'function') { + d += performance.now(); //use high-precision timer if available + } + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, + function(c) { + var r = (d + Math.random() * 16) % 16 | 0; + d = Math.floor(d / 16); + return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + return uuid; } function formatDate(value) {//调用时间戳为日期显示 - let date = new Date(value); - let y = date.getFullYear(); //获取年份 - let month = date.getMonth() + 1; //获取月份 - month = month < 10 ? '0' + month : month; //月份不满10天显示前加0 - let d = date.getDate(); //获取日期 - d = d < 10 ? '0' + d : d; //日期不满10天显示前加0 + let date = new Date(value); + let y = date.getFullYear(); //获取年份 + let month = date.getMonth() + 1; //获取月份 + month = month < 10 ? '0' + month : month; //月份不满10天显示前加0 + let d = date.getDate(); //获取日期 + d = d < 10 ? '0' + d : d; //日期不满10天显示前加0 - //也可以获取更精准时间 - let h = date.getHours(); //小时 - let m = date.getMinutes(); //分 - let s = date.getSeconds(); //秒 - return y + '-' + month + '-' + d + ' ' + h + ':' + m + ':' + s; - //let ls = date.getMilliseconds() //毫秒 + //也可以获取更精准时间 + let h = date.getHours(); //小时 + let m = date.getMinutes(); //分 + let s = date.getSeconds(); //秒 + return y + '-' + month + '-' + d + ' ' + h + ':' + m + ':' + s; + //let ls = date.getMilliseconds() //毫秒 } function parseData(res) { // res 即为原始返回的数据 - return { - 'code': res.meta.status === 'success' ? 0 : 1, //解析接口状态 - 'msg': res.meta.message, //解析提示文本 - 'data': res.result.department_list, //解析数据列表 - }; + return { + 'code': res.meta.status === 'success' ? 0 : 1, //解析接口状态 + 'msg': res.meta.message, //解析提示文本 + 'data': res.result.department_list, //解析数据列表 + }; } /**封装请求接口**/ async function request(method, url, data = {}) { - const options = { - method: method, - headers: { - 'Content-Type': 'application/json', - // 'Authorization': `Bearer ${localStorage.getItem('jwt')}`, - }, - body: JSON.stringify(data), - }; - const response = await fetch(url, options); - return await response.json(); + const options = { + method: method, + headers: { + 'Content-Type': 'application/json', + // 'Authorization': `Bearer ${localStorage.getItem('jwt')}`, + }, + body: JSON.stringify(data), + }; + const response = await fetch(url, options); + return await response.json(); } async function get_api(url, data) { - return request('GET', url, data); + return request('GET', url, data); } async function post_api(url, data) { - return request('POST', url, data); + return request('POST', url, data); } async function put_api(url, data) { - return request('PUT', url, data); + return request('PUT', url, data); } async function delete_api(url, data) { - return request('DELETE', url, data); + return request('DELETE', url, data); } async function logout() { - return await post_api('/api/private/v1/logout'); + let option = { + 'method': 'POST', + }; + return await post_api('/api/private/v1/logout', option); } async function login(data) { - return await post_api('/api/private/v1/login', data); + let result = await post_api('/api/private/v1/login', data) + return await result; } async function create_user(data) { - return post_api(`/api/private/v1/user/`, data); + return post_api(`/api/private/v1/user/`, data); } async function remove_user(uid) { - return await delete_api(`/api/private/v1/user/${uid}`); + return await delete_api(`/api/private/v1/user/${uid}`); } async function update_user(uid, data) { - return await put_api(`/api/private/v1/user/${uid}`, data); + return await put_api(`/api/private/v1/user/${uid}`, data); } async function batch_remove_department(data) { - return await delete_api(`/api/private/v1/department/batch_remove`, data); + return await delete_api(`/api/private/v1/department/batch_remove`, data); } async function create_department(data) { - return await post_api(`/api/private/v1/department/`, data); + return await post_api(`/api/private/v1/department/`, data); } async function remove_department(did) { - return await delete_api(`/api/private/v1/department/${did}`); + return await delete_api(`/api/private/v1/department/${did}`); } async function update_department(did, data) { - return put_api(`/api/private/v1/department/${did}`, data); + return put_api(`/api/private/v1/department/${did}`, data); } async function create_permission(data) { - return await post_api(`/api/private/v1/permission/`, data); + return await post_api(`/api/private/v1/permission/`, data); } async function remove_permission(pid) { - return await delete_api(`/api/private/v1/permission/${pid}`); + return await delete_api(`/api/private/v1/permission/${pid}`); } async function update_permission(pid, data) { - return await put_api(`/api/private/v1/permission/${pid}`, data); + return await put_api(`/api/private/v1/permission/${pid}`, data); } async function enable_permission(pid, data) { - return await put_api(`/api/private/v1/permission/${pid}/enable`, data); + return await put_api(`/api/private/v1/permission/${pid}/enable`, data); } async function create_role(data) { - return await post_api(`/api/private/v1/role/`, data); + return await post_api(`/api/private/v1/role/`, data); } async function remove_role(rid) { - return await delete_api(`/api/private/v1/role/${rid}`); + return await delete_api(`/api/private/v1/role/${rid}`); } async function update_role(rid, data) { - return await put_api(`/api/private/v1/role/${rid}`, data); + return await put_api(`/api/private/v1/role/${rid}`, data); } \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index d0680ff..b67469c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -102,35 +102,36 @@ \ No newline at end of file diff --git a/templates/login.html b/templates/login.html index f516255..a2d9b27 100644 --- a/templates/login.html +++ b/templates/login.html @@ -19,13 +19,16 @@
- +
- +
- +
@@ -43,82 +46,80 @@ \ No newline at end of file -- Gitee From 7609840939e52b0e71f7511b922bc3bb9a983717 Mon Sep 17 00:00:00 2001 From: ge-baichen_admin Date: Sat, 18 Feb 2023 16:41:51 +0800 Subject: [PATCH 2/5] =?UTF-8?q?'=E6=B7=BB=E5=8A=A0db.session.commit()?= =?UTF-8?q?=E6=8F=90=E4=BB=B7=E5=87=BA=E7=8E=B0=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E6=8D=95=E6=8D=89=E5=92=8Capi=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=A4=B4=E6=98=AF=E5=90=A6=E7=BC=BA=E5=B0=91=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9A=84=E5=88=A4=E6=96=AD'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear_admin/api/auth_api.py | 53 +++++++----- pear_admin/api/department_api.py | 74 ++++++++++++++++- pear_admin/api/role_api.py | 136 +++++++++++++++++++++++++++++++ pear_admin/api/users_api.py | 66 ++++++++++++++- pear_admin/orms/department.py | 33 +++++++- pear_admin/orms/permission.py | 34 +++++++- pear_admin/orms/role.py | 34 +++++++- pear_admin/orms/user.py | 32 +++++++- 8 files changed, 433 insertions(+), 29 deletions(-) diff --git a/pear_admin/api/auth_api.py b/pear_admin/api/auth_api.py index 7506f6b..ed29771 100644 --- a/pear_admin/api/auth_api.py +++ b/pear_admin/api/auth_api.py @@ -23,34 +23,48 @@ class LoginApi(MethodView): password = request.json.get("password") captcha_code = request.json.get("captcha_code") image_code_uuid = request.json.get("image_code") - - user: UserORM = UserORM.find_by_username(username) - - code = redis_client.get(f"image_code_{image_code_uuid}") - if str(code) != captcha_code: + if not all([username, password, captcha_code, image_code_uuid]): return { "meta": { - "code": RetCode.CAPTCHA_CODE_ERR.code, + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", "status": "fail", - "message": RetCode.CAPTCHA_CODE_ERR.value, - } - }, 401 + }, + } + user: UserORM = UserORM.find_by_username(username) if not user: return { "meta": { - "code": RetCode.USER_NOTFOUND_ERR.code, + "code": RetCode.NODATA_ERR.value, + "message": "无数据", "status": "fail", - "message": RetCode.USER_NOTFOUND_ERR.errmsg, - } - }, 401 + }, + } + code = redis_client.get(f"image_code_{image_code_uuid}") + if str(code) != captcha_code: + return { + "meta": { + "code": RetCode.CAPTCHA_CODE_ERR.code, + "status": "fail", + "message": RetCode.CAPTCHA_CODE_ERR.value, + } + }, 401 + if not user: + return { + "meta": { + "code": RetCode.USER_NOTFOUND_ERR.code, + "status": "fail", + "message": RetCode.USER_NOTFOUND_ERR.errmsg, + } + }, 401 if not user.check_password(password): return { - "meta": { - "code": RetCode.PWD_ERR.code, - "status": "fail", - "message": RetCode.PWD_ERR.errmsg, - } - }, 401 + "meta": { + "code": RetCode.PWD_ERR.code, + "status": "fail", + "message": RetCode.PWD_ERR.errmsg, + } + }, 401 access_token = create_access_token(identity=user) refresh_token = create_refresh_token(identity=user) @@ -75,6 +89,7 @@ class LoginApi(MethodView): class LogoutApi(MethodView): @jwt_required() def post(self): + response = make_response( { "meta": { diff --git a/pear_admin/api/department_api.py b/pear_admin/api/department_api.py index a5276b3..4cb9c9c 100644 --- a/pear_admin/api/department_api.py +++ b/pear_admin/api/department_api.py @@ -5,6 +5,7 @@ from flask_pydantic import validate from pear_admin.models import DepartmentModel, PaginationModel from pear_admin.orms import DepartmentORM +from pear_admin.utils.response_code import RetCode class DepartmentApi(MethodView): @@ -12,11 +13,34 @@ class DepartmentApi(MethodView): def get(self, did, query: PaginationModel): if did: dept: DepartmentORM = DepartmentORM.find_by_id(did) + if not dept: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } return dict(success=True, message="ok", dept=dept.json()) else: department_list: list[DepartmentORM] = DepartmentORM.query.all() - + if not department_list: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } action = request.args.get("action") + if not action: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } if action == "tree": return { "status": {"code": 200, "message": "默认"}, @@ -37,6 +61,14 @@ class DepartmentApi(MethodView): @validate() def post(self, body: DepartmentModel): + if not body: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } department = DepartmentORM() department.pid = (body.pid,) department.name = (body.name,) @@ -57,7 +89,23 @@ class DepartmentApi(MethodView): @validate() def put(self, did, body: DepartmentModel): + if not all([did, body]): + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } department: DepartmentORM = DepartmentORM.find_by_id(did) + if not department: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } department.pid = body.pid department.name = body.name department.sort = body.sort @@ -75,7 +123,23 @@ class DepartmentApi(MethodView): } def delete(self, did): + if not did: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } ret: DepartmentORM = DepartmentORM.find_by_id(did) + if not ret: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } ret.delete_from_db() if ret: return { @@ -94,6 +158,14 @@ class DepartmentApi(MethodView): def batch_remove_api(): ids = request.json.get("ids") + if not ids: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } id_list = ids.split(",") for did in id_list: DepartmentORM.delete_by_id(did) diff --git a/pear_admin/api/role_api.py b/pear_admin/api/role_api.py index f856e0b..a3b9aec 100644 --- a/pear_admin/api/role_api.py +++ b/pear_admin/api/role_api.py @@ -14,6 +14,14 @@ from pear_admin.utils.response_code import RetCode class RoleApi(MethodView): @validate() def get(self, rid, query: PaginationModel): + if not query: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } filters = [] if query.query: filters.append(RoleORM.username.like("%" + query.query + "%")) @@ -39,6 +47,14 @@ class RoleApi(MethodView): @jwt_required() @validate() def post(self, body: RoleModel): + if not body: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } role = RoleORM() role.name = body.name role.desc = body.desc @@ -54,7 +70,23 @@ class RoleApi(MethodView): @jwt_required() @validate() def put(self, rid, body: RoleModel): + if not all([rid, body]): + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } role = RoleORM.query.get(rid) + if not role: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } role.name = body.name role.desc = body.desc role.save_to_db() @@ -69,6 +101,14 @@ class RoleApi(MethodView): @jwt_required() @validate() def delete(self, rid): + if not rid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } # 用户项目演示 if rid in [1, 2, 3]: return { @@ -79,6 +119,14 @@ class RoleApi(MethodView): }, } role: RoleORM = RoleORM.find_by_id(rid) + if not role: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } role.delete_from_db() return { "meta": { @@ -93,6 +141,14 @@ class PermissionApi(MethodView): def get(self, pid): if pid: permission: PermissionORM = PermissionORM.query.get(pid) + if not permission: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } return { "result": { "permission": [permission.json()], @@ -104,6 +160,14 @@ class PermissionApi(MethodView): } else: permission_list: list[PermissionORM] = PermissionORM.query.all() + if not permission_list: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } _type = request.args.get("type") if _type == "dtree": # 树形菜单分配权限 rets = [permission.json() for permission in permission_list] @@ -146,6 +210,14 @@ class PermissionApi(MethodView): @jwt_required() @validate() def post(self, body: PermissionModel): + if not body: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } permission: PermissionORM = PermissionORM() permission.pid = body.pid permission.permission_name = body.name @@ -166,6 +238,14 @@ class PermissionApi(MethodView): @jwt_required() @validate() def put(self, pid, body: PermissionModel): + if not all([pid, body]): + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } if pid <= 11: return { "meta": { @@ -174,6 +254,14 @@ class PermissionApi(MethodView): }, } permission = PermissionORM.query.get(pid) + if not permission: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } permission.pid = body.pid permission.name = body.name permission.code = body.code @@ -193,6 +281,14 @@ class PermissionApi(MethodView): @jwt_required() @validate() def delete(self, pid): + if not pid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } if pid <= 11: return { "meta": { @@ -201,6 +297,14 @@ class PermissionApi(MethodView): }, } permission: PermissionORM = PermissionORM.query.get(pid) + if not permission: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } permission.delete_from_db() return { "meta": { @@ -211,7 +315,23 @@ class PermissionApi(MethodView): def role_permission(rid): + if not rid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } role: RoleORM = RoleORM.query.get(rid) + if not role: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } ids: str = request.json.get("ids") per_arr = PermissionORM.query.filter(PermissionORM.id.in_(ids.split(","))).all() role.permission = [] @@ -227,7 +347,23 @@ def role_permission(rid): def permission_enable(pid): + if not pid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头数据缺少", + "status": "fail", + }, + } permission = PermissionORM.find_by_id(pid) + if not permission: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } enable = request.json.get("enable") permission.enable = enable permission.save_to_db() diff --git a/pear_admin/api/users_api.py b/pear_admin/api/users_api.py index 5c6abb5..434f550 100644 --- a/pear_admin/api/users_api.py +++ b/pear_admin/api/users_api.py @@ -8,12 +8,20 @@ from flask_sqlalchemy import Pagination from pear_admin.models import DepartmentModel, PaginationModel, UserModel from pear_admin.orms import DepartmentORM, RoleORM, UserORM +from pear_admin.utils.response_code import RetCode class UserApi(MethodView): @validate() def get(self, uid, query: PaginationModel): - + if not query: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头缺少", + "status": "fail", + }, + } filters = [] if query.query: filters.append(UserORM.username.like("%" + query.query + "%")) @@ -38,6 +46,14 @@ class UserApi(MethodView): @jwt_required() @validate() def post(self, body: UserModel): + if not body: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头缺少", + "status": "fail", + }, + } user = UserORM() user.username = body.username user.nickname = body.nickname @@ -63,7 +79,23 @@ class UserApi(MethodView): @jwt_required() @validate() def put(self, uid, body: UserModel): + if not all([uid, body]): + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头缺少", + "status": "fail", + }, + } user = UserORM.find_by_id(uid) + if not user: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } user.username = body.username user.nickname = body.nickname if body.password: @@ -90,6 +122,14 @@ class UserApi(MethodView): @jwt_required() def delete(self, uid): + if not uid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头缺少", + "status": "fail", + }, + } if uid in [1, 2, 3]: return { "meta": { @@ -98,6 +138,14 @@ class UserApi(MethodView): }, } user: UserORM = UserORM.find_by_id(uid) + if not user: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } user.delete_from_db() return { "meta": { @@ -109,8 +157,24 @@ class UserApi(MethodView): def user_role(uid): roles: list[RoleORM] = RoleORM.query.all() + if not uid: + return { + "meta": { + "code": RetCode.NECESSARY_PARAM_ERR.value, + "message": "请求头缺少", + "status": "fail", + }, + } if request.method == "GET": user: UserORM = UserORM.find_by_id(uid) + if not user: + return { + "meta": { + "code": RetCode.NODATA_ERR.value, + "message": "无数据", + "status": "fail", + }, + } rets = [] for role in roles: if role in user.role: diff --git a/pear_admin/orms/department.py b/pear_admin/orms/department.py index 3725e88..76e98a5 100644 --- a/pear_admin/orms/department.py +++ b/pear_admin/orms/department.py @@ -1,5 +1,8 @@ # -*- coding: utf-8 -*- +from flask import current_app + from pear_admin.extensions import db +from pear_admin.utils.response_code import RetCode class DepartmentORM(db.Model): @@ -37,11 +40,37 @@ class DepartmentORM(db.Model): def save_to_db(self): db.session.add(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } def delete_from_db(self): db.session.delete(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } @classmethod def delete_by_id(cls, did): diff --git a/pear_admin/orms/permission.py b/pear_admin/orms/permission.py index eb7d0da..69c0352 100644 --- a/pear_admin/orms/permission.py +++ b/pear_admin/orms/permission.py @@ -1,5 +1,8 @@ # -*- coding: utf-8 -*- +from flask import current_app + from pear_admin.extensions import db +from pear_admin.utils.response_code import RetCode class PermissionORM(db.Model): @@ -60,8 +63,35 @@ class PermissionORM(db.Model): def save_to_db(self): db.session.add(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } def delete_from_db(self): db.session.delete(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } + diff --git a/pear_admin/orms/role.py b/pear_admin/orms/role.py index ca2e2a7..84c5e5b 100644 --- a/pear_admin/orms/role.py +++ b/pear_admin/orms/role.py @@ -1,7 +1,10 @@ # -*- coding: utf-8 -*- from datetime import datetime +from flask import current_app + from pear_admin.extensions import db +from pear_admin.utils.response_code import RetCode class RoleORM(db.Model): @@ -34,8 +37,35 @@ class RoleORM(db.Model): def save_to_db(self): db.session.add(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } def delete_from_db(self): db.session.delete(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } + diff --git a/pear_admin/orms/user.py b/pear_admin/orms/user.py index 9107e6f..81dbbb0 100644 --- a/pear_admin/orms/user.py +++ b/pear_admin/orms/user.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- from datetime import datetime +from flask import current_app from werkzeug.security import check_password_hash, generate_password_hash from pear_admin.extensions import db +from pear_admin.utils.response_code import RetCode class UserORM(db.Model): @@ -75,8 +77,34 @@ class UserORM(db.Model): def save_to_db(self): db.session.add(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } def delete_from_db(self): db.session.delete(self) - db.session.commit() + try: + db.session.commit() + except Exception as e: + # 添加log + current_app.logger.error(e) + # 滚回操作 + db.session.rollback() + return { + "meta": { + "code": RetCode.DB_ERR.value, + "message": "添加数据成功", + "status": "fail", + }, + } -- Gitee From 84444555db23a184831c068bffddd4c45372a636 Mon Sep 17 00:00:00 2001 From: ge-baichen_admin Date: Sat, 18 Feb 2023 16:58:34 +0800 Subject: [PATCH 3/5] =?UTF-8?q?'=E9=85=8D=E7=BD=AEjsonify=E8=BF=94?= =?UTF-8?q?=E5=9B=9Ejson=E7=9A=84=E7=BC=96=E7=A0=81=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E5=92=8C=E6=B7=BB=E5=8A=A0log=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=8C=E6=9C=89=E5=8A=A9=E4=BA=8E=E6=8E=92=E6=9F=A5?= =?UTF-8?q?bug'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 3 + logs/.gitkeep | 0 logs/log.log | 218 +++++++++++++++++++++++++++++++++ pear_admin/__init__.py | 2 + pear_admin/api/auth_api.py | 36 +++--- pear_admin/orms/permission.py | 1 - pear_admin/orms/role.py | 1 - pear_admin/utils/logs_utils.py | 21 ++++ pear_admin/views/__init__.py | 6 + static/favicon.ico | Bin 0 -> 14280 bytes 10 files changed, 268 insertions(+), 20 deletions(-) create mode 100644 logs/.gitkeep create mode 100644 logs/log.log create mode 100644 pear_admin/utils/logs_utils.py create mode 100644 static/favicon.ico diff --git a/config.py b/config.py index 98e6193..c91cf8e 100644 --- a/config.py +++ b/config.py @@ -29,3 +29,6 @@ JWT_ACCESS_TOKEN_EXPIRES = timedelta(days=1) # 获取项目根目录 root_path = os.path.dirname(os.path.abspath(__file__)) + +# 配置jsonify返回json的编码支持中文 +JSON_AS_ASCII = False diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/logs/log.log b/logs/log.log new file mode 100644 index 0000000..3fabeb9 --- /dev/null +++ b/logs/log.log @@ -0,0 +1,218 @@ +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\__init__.py', reloading +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\config.py', reloading +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\views\\__init__.py', reloading +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET / HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /api/private/v1/menus?fresh=0.635557331109672 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /person HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET / HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /api/private/v1/menus?fresh=0.32575863425449625 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /person HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET / HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /api/private/v1/menus?fresh=0.4851942698546634 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /person HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET / HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:25] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:26] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:26] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:27] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:27] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:28] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:28] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:29] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:30] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:30] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /api/private/v1/menus?fresh=0.8526258048660593 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /person HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://192.168.0.107:5000 +INFO _internal.py:224 Press CTRL+C to quit +INFO _internal.py:224 * Restarting with stat +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET / HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/admin/css/loader.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/admin/css/admin.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /api/private/v1/menus?fresh=0.2565680623723472 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /dashboard HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/css/other/console1.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/echarts.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/echartsTheme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/count.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /person HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/config/pear.config.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /api/private/v1/menus?fresh=0.0121288651722129 HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /dashboard HTTP/1.1" 200 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/data/message.json HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/images/logo.png HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/css/other/console1.css HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/layui/layui.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/pear.js HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/echarts.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/echartsTheme.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:54:00] "GET /static/component/pear/module/count.js?v=3.2.1 HTTP/1.1" 304 - +INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\api\\__init__.py', reloading +INFO _internal.py:224 * Restarting with stat +WARNING _internal.py:224 * Debugger is active! +INFO _internal.py:224 * Debugger PIN: 676-105-859 +INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\views\\__init__.py', reloading +INFO _internal.py:224 * Restarting with stat +WARNING _internal.py:224 * Debugger is active! diff --git a/pear_admin/__init__.py b/pear_admin/__init__.py index 092ec8d..0f4724f 100644 --- a/pear_admin/__init__.py +++ b/pear_admin/__init__.py @@ -5,11 +5,13 @@ import config from pear_admin.api import register_api from pear_admin.extensions import db, register_extensions from pear_admin.orms import DepartmentORM, PermissionORM, RoleORM, UserORM +from pear_admin.utils.logs_utils import setup_log from pear_admin.views import register_blueprint def create_app() -> Flask: app = Flask("pear-admin-flask") + setup_log() app.config.from_object(config) register_extensions(app) register_api(app) diff --git a/pear_admin/api/auth_api.py b/pear_admin/api/auth_api.py index ed29771..fe35210 100644 --- a/pear_admin/api/auth_api.py +++ b/pear_admin/api/auth_api.py @@ -43,28 +43,28 @@ class LoginApi(MethodView): code = redis_client.get(f"image_code_{image_code_uuid}") if str(code) != captcha_code: return { - "meta": { - "code": RetCode.CAPTCHA_CODE_ERR.code, - "status": "fail", - "message": RetCode.CAPTCHA_CODE_ERR.value, - } - }, 401 + "meta": { + "code": RetCode.CAPTCHA_CODE_ERR.code, + "status": "fail", + "message": RetCode.CAPTCHA_CODE_ERR.value, + } + }, 401 if not user: return { - "meta": { - "code": RetCode.USER_NOTFOUND_ERR.code, - "status": "fail", - "message": RetCode.USER_NOTFOUND_ERR.errmsg, - } - }, 401 + "meta": { + "code": RetCode.USER_NOTFOUND_ERR.code, + "status": "fail", + "message": RetCode.USER_NOTFOUND_ERR.errmsg, + } + }, 401 if not user.check_password(password): return { - "meta": { - "code": RetCode.PWD_ERR.code, - "status": "fail", - "message": RetCode.PWD_ERR.errmsg, - } - }, 401 + "meta": { + "code": RetCode.PWD_ERR.code, + "status": "fail", + "message": RetCode.PWD_ERR.errmsg, + } + }, 401 access_token = create_access_token(identity=user) refresh_token = create_refresh_token(identity=user) diff --git a/pear_admin/orms/permission.py b/pear_admin/orms/permission.py index 69c0352..b5a5118 100644 --- a/pear_admin/orms/permission.py +++ b/pear_admin/orms/permission.py @@ -94,4 +94,3 @@ class PermissionORM(db.Model): "status": "fail", }, } - diff --git a/pear_admin/orms/role.py b/pear_admin/orms/role.py index 84c5e5b..6d7c420 100644 --- a/pear_admin/orms/role.py +++ b/pear_admin/orms/role.py @@ -68,4 +68,3 @@ class RoleORM(db.Model): "status": "fail", }, } - diff --git a/pear_admin/utils/logs_utils.py b/pear_admin/utils/logs_utils.py new file mode 100644 index 0000000..ec72fe0 --- /dev/null +++ b/pear_admin/utils/logs_utils.py @@ -0,0 +1,21 @@ +import logging +from logging.handlers import RotatingFileHandler + +from config import LOG_LEVEL + + +def setup_log(): + """配置日志""" + + # 设置日志的记录等级 + logging.basicConfig(level=LOG_LEVEL) # 调试debug级 + # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限 + file_log_handler = RotatingFileHandler( + "logs/log.log", maxBytes=1024 * 1024 * 100, backupCount=10 + ) + # 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息 + formatter = logging.Formatter("%(levelname)s %(filename)s:%(lineno)d %(message)s") + # 为刚创建的日志记录器设置日志记录格式 + file_log_handler.setFormatter(formatter) + # 为全局的日志工具对象(flask app使用的)添加日志记录器 + logging.getLogger().addHandler(file_log_handler) diff --git a/pear_admin/views/__init__.py b/pear_admin/views/__init__.py index d5a1b51..454ea95 100644 --- a/pear_admin/views/__init__.py +++ b/pear_admin/views/__init__.py @@ -11,6 +11,7 @@ from flask import ( Blueprint, Flask, abort, + current_app, make_response, redirect, render_template, @@ -29,6 +30,11 @@ def register_blueprint(app: Flask): app.register_blueprint(view_bp) +@view_bp.get("/favicon.ico") +def favicon(): + return current_app.send_static_file("favicon.ico") + + @view_bp.get("/") @jwt_required(optional=True) def index(): diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a3dbbf3375012028cee418c22f15249eed58cede GIT binary patch literal 14280 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 RfBsvi3VfqjEpHL_{{c$qP&@zt literal 0 HcmV?d00001 -- Gitee From e5446af839410498218aa2f3070cd65be9f976aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9B=B2=E5=A5=87?= Date: Sat, 18 Feb 2023 08:59:30 +0000 Subject: [PATCH 4/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20logs?= =?UTF-8?q?/log.log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logs/log.log | 218 --------------------------------------------------- 1 file changed, 218 deletions(-) delete mode 100644 logs/log.log diff --git a/logs/log.log b/logs/log.log deleted file mode 100644 index 3fabeb9..0000000 --- a/logs/log.log +++ /dev/null @@ -1,218 +0,0 @@ -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\__init__.py', reloading -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\config.py', reloading -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\views\\__init__.py', reloading -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET / HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /api/private/v1/menus?fresh=0.635557331109672 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /person HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:09] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET / HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /api/private/v1/menus?fresh=0.32575863425449625 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /person HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:14] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET / HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /api/private/v1/menus?fresh=0.4851942698546634 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /person HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:17] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:18] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET / HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:23] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:24] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:25] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:26] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:26] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:27] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:27] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:28] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:28] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:29] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:30] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:30] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /api/private/v1/menus?fresh=0.8526258048660593 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /person HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:31] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:52:32] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. - * Running on all addresses (0.0.0.0) - * Running on http://127.0.0.1:5000 - * Running on http://192.168.0.107:5000 -INFO _internal.py:224 Press CTRL+C to quit -INFO _internal.py:224 * Restarting with stat -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET / HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/admin/css/loader.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/js/pear_admin_flask.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/admin/css/admin.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:06] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/layui/font/iconfont.woff2?v=256 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/admin.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/message.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/yaml.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/tab.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/menu.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/frame.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/fullscreen.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/popup.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/drawer.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/loading.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /api/private/v1/menus?fresh=0.2565680623723472 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /dashboard HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/css/other/console1.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/echarts.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/echartsTheme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:07] "GET /static/component/pear/module/count.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /person HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/css/other/person.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/images/act.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:15] "GET /static/component/pear/module/convert.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/config/pear.config.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /api/private/v1/menus?fresh=0.0121288651722129 HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /dashboard HTTP/1.1" 200 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/data/message.json HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/images/logo.png HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/css/pear.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/css/other/console1.css HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/layui/layui.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/pear.js HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/admin/images/avatar.jpg HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/theme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/echarts.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:53:59] "GET /static/component/pear/module/echartsTheme.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 127.0.0.1 - - [18/Feb/2023 16:54:00] "GET /static/component/pear/module/count.js?v=3.2.1 HTTP/1.1" 304 - -INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\api\\__init__.py', reloading -INFO _internal.py:224 * Restarting with stat -WARNING _internal.py:224 * Debugger is active! -INFO _internal.py:224 * Debugger PIN: 676-105-859 -INFO _internal.py:224 * Detected change in 'C:\\Users\\86182\\Desktop\\pear-admin-flask\\pear_admin\\views\\__init__.py', reloading -INFO _internal.py:224 * Restarting with stat -WARNING _internal.py:224 * Debugger is active! -- Gitee From b245d85623b143102c084f08d0ec7c1d534b18fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9B=B2=E5=A5=87?= Date: Sat, 18 Feb 2023 09:05:31 +0000 Subject: [PATCH 5/5] update .gitignore. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小曲奇 --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f448ef8..a43744b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea __pycache__/ *env/ -migrations/ \ No newline at end of file +migrations/ +*.log \ No newline at end of file -- Gitee