From 936c37c65c1e14e523652c7ec079cd03886ea92f Mon Sep 17 00:00:00 2001 From: VincentFu Date: Tue, 25 Jan 2022 07:12:58 +0000 Subject: [PATCH 1/9] =?UTF-8?q?update=20applications/configs/config.py.=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=BC=96=E7=A0=81=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BAutf8mb4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/configs/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/configs/config.py b/applications/configs/config.py index bdae8ec..f0e989e 100644 --- a/applications/configs/config.py +++ b/applications/configs/config.py @@ -44,7 +44,7 @@ class BaseConfig: MYSQL_DATABASE = os.getenv('MYSQL_DATABASE') or "PearAdminFlask" # mysql 数据库的配置信息 - SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}" + SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4" # 默认日志等级 LOG_LEVEL = logging.WARN # -- Gitee From 38a5136e692d572eb6be42bec59350019689af7a Mon Sep 17 00:00:00 2001 From: zebra Date: Tue, 8 Feb 2022 10:18:47 +0000 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E5=AD=97=E7=AC=A6=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/common/script/initdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/common/script/initdb.py b/applications/common/script/initdb.py index 84399ff..27358e3 100644 --- a/applications/common/script/initdb.py +++ b/applications/common/script/initdb.py @@ -22,7 +22,7 @@ def is_exist_database(): def init_database(): db = pymysql.connect(host=HOST, port=int(PORT), user=USERNAME, password=PASSWORD, charset='utf8mb4') cursor1 = db.cursor() - sql = "CREATE DATABASE IF NOT EXISTS %s" % DATABASE + sql = "CREATE DATABASE IF NOT EXISTS %s CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;" % DATABASE res = cursor1.execute(sql) db.close() return res -- Gitee From af873bf45ee42ef3cb02d8dc640d6a925c7479bd Mon Sep 17 00:00:00 2001 From: sunshine <53550304+resonates@users.noreply.github.com> Date: Tue, 12 Apr 2022 16:50:48 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .flaskenv | 6 +++--- requirement/requirement-dev.txt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.flaskenv b/.flaskenv index ddabb3b..721d9f0 100644 --- a/.flaskenv +++ b/.flaskenv @@ -14,11 +14,11 @@ MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_DATABASE=PearAdminFlask MYSQL_USERNAME=root -MYSQL_PASSWORD=root +MYSQL_PASSWORD=123456 # Redis 配置 -REDIS_HOST=127.0.0.1 -REDIS_PORT=6379 +# REDIS_HOST=127.0.0.1 +# REDIS_PORT=6379 # 密钥配置(记得改) SECRET_KEY='pear-admin-flask' diff --git a/requirement/requirement-dev.txt b/requirement/requirement-dev.txt index 7b61d56..e039497 100644 --- a/requirement/requirement-dev.txt +++ b/requirement/requirement-dev.txt @@ -1,8 +1,8 @@ -Flask==2.0.2 +Flask==2.1.1 Flask-APScheduler==1.12.2 Flask-DebugToolbar==0.11.0 Flask-Migrate==3.1.0 -Flask-Login==0.5.0 +Flask-Login==0.6.0 Flask_Reuploaded==0.5.0 Flask-SQLAlchemy==2.5.1 flask-marshmallow==0.14.0 -- Gitee From c50d5e79218f96259485a7ff43ae4ad04ff31b2a Mon Sep 17 00:00:00 2001 From: sunshine <53550304+resonates@users.noreply.github.com> Date: Tue, 12 Apr 2022 16:55:27 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=87=8D=E5=86=99sqlalchemy=E7=9A=84query,?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=8F=E5=88=97=E5=8C=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/extensions/init_sqlalchemy.py | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/applications/extensions/init_sqlalchemy.py b/applications/extensions/init_sqlalchemy.py index ed9fdc0..13e68d4 100644 --- a/applications/extensions/init_sqlalchemy.py +++ b/applications/extensions/init_sqlalchemy.py @@ -55,15 +55,33 @@ class Query(BaseQuery): def logic_all(self): return self.filter_by(delete_at=None).all() + def all_json(self, schema: Marshmallow().Schema): + return schema(many=True).dump(self.all()) + def layui_paginate(self): + return self.paginate(page=request.args.get('page', type=int), + per_page=request.args.get('limit', type=int), + error_out=False) + + def layui_paginate_json(self, schema: Marshmallow().Schema): """ - layui表格分页 - page - limit + 返回dict """ - return self.paginate(page=request.args.get('page', type=int), + _res = self.paginate( + page=request.args.get('page', type=int), + per_page=request.args.get('limit', type=int), + error_out=False + ) + return schema(many=True).dump(_res.items), _res.total, _res.page, _res.per_page + + def layui_paginate_db_json(self): + """ + db.query(A.name).layui_paginate_db_json() + """ + _res = self.paginate(page=request.args.get('page', type=int), per_page=request.args.get('limit', type=int), error_out=False) + return [dict(i) for i in _res.items], _res.total db = SQLAlchemy(query_class=Query) -- Gitee From 7ae59415e88fb2acaf15e26984f64471713758ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E8=83=9C=E8=88=9F?= <1650473152@qq.com> Date: Tue, 12 Apr 2022 11:16:54 +0000 Subject: [PATCH 5/9] update applications/view/passport/__init__.py. --- applications/view/passport/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/view/passport/__init__.py b/applications/view/passport/__init__.py index 16a971d..3c18e50 100644 --- a/applications/view/passport/__init__.py +++ b/applications/view/passport/__init__.py @@ -49,10 +49,10 @@ def login_post(): return fail_api(msg="验证码错误") user = User.query.filter_by(username=username).first() - if user is None: + if not user: return fail_api(msg="不存在的用户") - if user.enable is 0: + if user.enable == 0: return fail_api(msg="用户被暂停使用") if username == user.username and user.validate_password(password): -- Gitee From 1a7e45705451849adba0a4a9ea415be300325cd8 Mon Sep 17 00:00:00 2001 From: sunshine <53550304+resonates@users.noreply.github.com> Date: Sun, 8 May 2022 21:29:44 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/view/department/__init__.py | 29 +++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/applications/view/department/__init__.py b/applications/view/department/__init__.py index c8a8584..322c87a 100644 --- a/applications/view/department/__init__.py +++ b/applications/view/department/__init__.py @@ -1,15 +1,13 @@ from flask import Blueprint, render_template, request, jsonify -from marshmallow import INCLUDE -from webargs.flaskparser import use_args from applications.common import curd +from applications.common.utils import validate from applications.common.utils.http import success_api, fail_api from applications.common.utils.rights import authorize -from applications.common.utils import validate +from applications.common.utils.validate import xss_escape from applications.extensions import db from applications.models import Dept, User from applications.schemas import DeptOutSchema -from applications.schemas.admin_dept import DeptInSchema dept_bp = Blueprint('dept', __name__, url_prefix='/dept') @@ -56,17 +54,17 @@ def tree(): @dept_bp.post('/save') @authorize("admin:dept:add", log=True) -@use_args(DeptInSchema(), location="json", unknown=True) -def save(args): +def save(): + req_json = request.json dept = Dept( - parent_id=args['parentId'], - dept_name=args['deptName'], - sort=args['sort'], - leader=args['leader'], - phone=args['phone'], - email=args['email'], - status=args['status'], - address=args['address'] + parent_id=req_json.get('parentId'), + dept_name=xss_escape(req_json.get('deptName')), + sort=xss_escape(req_json.get('sort')), + leader=xss_escape(req_json.get('leader')), + phone=xss_escape(req_json.get('phone')), + email=xss_escape(req_json.get('email')), + status=xss_escape(req_json.get('status')), + address=xss_escape(req_json.get('address')) ) r = db.session.add(dept) db.session.commit() @@ -77,7 +75,7 @@ def save(args): @authorize("admin:dept:edit", log=True) def edit(): _id = request.args.get("deptId") - dept = curd.get_one_by_id(model=Dept,id=_id) + dept = curd.get_one_by_id(model=Dept, id=_id) return render_template('admin/dept/edit.html', dept=dept) @@ -115,7 +113,6 @@ def dis_enable(): @authorize("admin:dept:edit", log=True) def update(): json = request.json - validate.check_data(DeptSchema(unknown=INCLUDE), json) id = json.get("deptId"), data = { "dept_name": validate.xss_escape(json.get("deptName")), -- Gitee From 261a9836786d0f8e432fa49ba2b4ee47d624545d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com> Date: Fri, 13 May 2022 06:52:00 +0000 Subject: [PATCH 7/9] update README.md. --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index e0adb5e..42f18b0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ 开 箱 即 用 的 Flask 快 速 开 发 平 台 - [预 览](http://flask.pearadmin.com) | [官 网](http://www.pearadmin.com/) | [群聊](https://jq.qq.com/?_wv=1027&k=5OdSmve) | [社区](http://forum.pearadmin.com/) + [预 览](http://flask.pearadmin.com) | [官 网](http://www.pearadmin.com/) | [群聊](https://jq.qq.com/?_wv=1027&k=TkLAKUxC) | [社区](http://forum.pearadmin.com/)

@@ -90,8 +90,6 @@ Pear Admin Flask ``` - - #### 项目安装 ```bash -- Gitee From 248145b8219bb97e5b3177bcf6c48b163a5962db Mon Sep 17 00:00:00 2001 From: stevenhu Date: Thu, 2 Jun 2022 05:08:36 +0000 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmysql=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E4=B8=AD=E5=AF=86=E7=A0=81=E5=8C=85=E5=90=AB@=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=AD=97=E7=AC=A6=E6=97=B6=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/configs/config.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/applications/configs/config.py b/applications/configs/config.py index f0e989e..18b9edd 100644 --- a/applications/configs/config.py +++ b/applications/configs/config.py @@ -1,5 +1,6 @@ import logging import os +from urllib.parse import quote_plus as urlquote class BaseConfig: @@ -44,7 +45,8 @@ class BaseConfig: MYSQL_DATABASE = os.getenv('MYSQL_DATABASE') or "PearAdminFlask" # mysql 数据库的配置信息 - SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4" + SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USERNAME}:{urlquote(MYSQL_PASSWORD)}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4" + # 默认日志等级 LOG_LEVEL = logging.WARN # -- Gitee From cae6f555889ca80f308ff67df89df7a493b037bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=99=A8=E4=BA=AE?= Date: Mon, 20 Jun 2022 11:30:15 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=B8=8D=E4=BD=BF=E7=94=A8=E5=9B=BD?= =?UTF-8?q?=E5=86=85=E6=BA=90=E7=9A=84=E6=96=B9=E5=BC=8F=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E4=BC=9A=E9=80=A0=E6=88=90=E4=BE=9D=E8=B5=96=E7=9A=84=E9=95=BF?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=8B=E8=BD=BD=E7=94=9A=E8=87=B3=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E3=80=82=20=E6=84=9F=E8=A7=89=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E4=BC=98=E9=9B=85=E7=9A=84=E6=96=B9=E5=BC=8F=E6=98=AF=E6=98=8E?= =?UTF-8?q?=E7=A1=AE=E7=89=88=E6=9C=AC=E5=8F=B7=E4=B8=8E=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E6=BA=90=E8=B7=AF=E5=BE=84=E3=80=82?= =?UTF-8?q?=20comment=20=20#I58MCU=20link=20=20#I58MCU?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 45a2cbe..0b051cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM python:3.7-alpine +FROM python:3.7.13-alpine3.15 -RUN echo http://mirrors.aliyun.com/alpine/v3.12/main > /etc/apk/repositories \ - && echo http://mirrors.aliyun.com/alpine/v3.12/community >> /etc/apk/repositories \ +RUN echo http://mirrors.aliyun.com/alpine/v3.15/main > /etc/apk/repositories \ + && echo http://mirrors.aliyun.com/alpine/v3.15/community >> /etc/apk/repositories \ && apk update \ && apk --update add --no-cache gcc \ && apk --update add --no-cache g++ \ -- Gitee