Skip to content

Commit cfc412b

Browse files
insistencegitee-org
authored andcommitted
!16 Dash-FastAPI-Admin v1.0.10
Merge pull request !16 from insistence/develop
2 parents 7e04e00 + f3dc961 commit cfc412b

File tree

19 files changed

+125
-151
lines changed

19 files changed

+125
-151
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<p align="center">
22
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
33
</p>
4-
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Dash-FastAPI-Admin v1.0.9</h1>
4+
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Dash-FastAPI-Admin v1.0.10</h1>
55
<h4 align="center">基于Dash+FastAPI前后端分离的纯Python快速开发框架</h4>
66
<p align="center">
77
<a href="https://gitee.com/insistence2022/dash-fastapi-admin/stargazers"><img src="https://gitee.com/insistence2022/dash-fastapi-admin/badge/star.svg?theme=dark"></a>
88
<a href="https://github.com/insistence/Dash-FastAPI-Admin"><img src="https://img.shields.io/github/stars/insistence/Dash-FastAPI-Admin?style=social"></a>
9-
<a href="https://gitee.com/insistence2022/dash-fastapi-admin"><img src="https://img.shields.io/badge/DashFastAPIAdmin-v1.0.9-brightgreen.svg"></a>
9+
<a href="https://gitee.com/insistence2022/dash-fastapi-admin"><img src="https://img.shields.io/badge/DashFastAPIAdmin-v1.0.10-brightgreen.svg"></a>
1010
<a href="https://gitee.com/insistence2022/dash-fastapi-admin/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
1111
<img src="https://img.shields.io/badge/python-3.8 | 3.9-blue">
1212
<img src="https://img.shields.io/badge/MySQL-≥5.7-blue">
@@ -20,6 +20,12 @@ Dash-FastAPI-Admin是一套全部开源的快速开发平台,毫无保留给
2020
* 后端采用FastAPI、sqlalchemy、MySQL、Redis、OAuth2 & Jwt。
2121
* 权限认证使用OAuth2 & Jwt,支持多终端认证系统。
2222
* 支持加载动态权限菜单,多方式轻松权限控制。
23+
* Vue2版本:
24+
- Gitte仓库地址:https://gitee.com/insistence2022/RuoYi-Vue-FastAPI
25+
- GitHub仓库地址:https://github.com/insistence/RuoYi-Vue-FastAPI
26+
* Vue3版本:
27+
- Gitte仓库地址:https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI
28+
- GitHub仓库地址:https://github.com/insistence/RuoYi-Vue3-FastAPI
2329
* 特别鸣谢:<u>[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)</u> ,<u>[feffery-antd-components](https://github.com/CNFeffery/feffery-antd-components)</u>,<u>[feffery-utils-components](https://github.com/CNFeffery/feffery-utils-components)</u>。
2430

2531
## 内置功能

dash-fastapi-backend/config/get_redis.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import aioredis
1+
from redis import asyncio as aioredis
2+
from redis.exceptions import AuthenticationError, TimeoutError, RedisError
23
from module_admin.service.dict_service import DictDataService
34
from module_admin.service.config_service import ConfigService
45
from config.env import RedisConfig
@@ -27,7 +28,18 @@ async def create_redis_pool(cls) -> aioredis.Redis:
2728
encoding="utf-8",
2829
decode_responses=True
2930
)
30-
logger.info("redis连接成功")
31+
try:
32+
connection = await redis.ping()
33+
if connection:
34+
logger.info("redis连接成功")
35+
else:
36+
logger.error("redis连接失败")
37+
except AuthenticationError as e:
38+
logger.error(f"redis用户名或密码错误,详细错误信息:{e}")
39+
except TimeoutError as e:
40+
logger.error(f"redis连接超时,详细错误信息:{e}")
41+
except RedisError as e:
42+
logger.error(f"redis连接错误,详细错误信息:{e}")
3143
return redis
3244

3345
@classmethod

dash-fastapi-backend/module_admin/dao/dept_dao.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,10 @@ def get_dept_info_for_edit_option(cls, db: Session, dept_info: DeptModel, data_s
8686
SysDept.parent_id != dept_info.dept_id,
8787
SysDept.del_flag == 0, SysDept.status == 0,
8888
eval(data_scope_sql)) \
89-
.all()
90-
dept = cls.get_dept_by_id(db, dept_info.dept_id)
91-
parent = cls.get_dept_by_id(db, dept.parent_id)
92-
dept_result.insert(0, parent)
89+
.order_by(SysDept.order_num) \
90+
.distinct().all()
9391

94-
return list_format_datetime(list(set(dept_result)))
92+
return list_format_datetime(dept_result)
9593

9694
@classmethod
9795
def get_children_dept(cls, db: Session, dept_id: int):

dash-fastapi-frontend/callbacks/forget_c.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from dash.exceptions import PreventUpdate
66

77
from server import app
8+
from utils.common import validate_data_not_empty
89
from api.user import forget_user_pwd_api
910
from api.message import send_message_api
1011

@@ -38,7 +39,7 @@
3839
def forget_auth(nClicks, username, password, password_again, input_captcha, session_id):
3940
if nClicks:
4041
# 校验全部输入值是否不为空
41-
if all([username, password, password_again, input_captcha]):
42+
if all(validate_data_not_empty(item) for item in [username, password, password_again, input_captcha]):
4243

4344
if password == password_again:
4445
try:
@@ -107,14 +108,14 @@ def forget_auth(nClicks, username, password, password_again, input_captcha, sess
107108
)
108109

109110
return dict(
110-
username_form_status=None if username else 'error',
111-
password_form_status=None if password else 'error',
112-
password_again_form_status=None if password_again else 'error',
113-
captcha_form_status=None if input_captcha else 'error',
114-
username_form_help=None if username else '请输入用户名!',
115-
password_form_help=None if password else '请输入新密码!',
116-
password_again_form_help=None if password_again else '请再次输入新密码!',
117-
captcha_form_help=None if input_captcha else '请输入短信验证码!',
111+
username_form_status=None if validate_data_not_empty(username) else 'error',
112+
password_form_status=None if validate_data_not_empty(password) else 'error',
113+
password_again_form_status=None if validate_data_not_empty(password_again) else 'error',
114+
captcha_form_status=None if validate_data_not_empty(input_captcha) else 'error',
115+
username_form_help=None if validate_data_not_empty(username) else '请输入用户名!',
116+
password_form_help=None if validate_data_not_empty(password) else '请输入新密码!',
117+
password_again_form_help=None if validate_data_not_empty(password_again) else '请再次输入新密码!',
118+
captcha_form_help=None if validate_data_not_empty(input_captcha) else '请输入短信验证码!',
118119
submit_loading=False,
119120
redirect_container=None,
120121
global_message_container=None

dash-fastapi-frontend/callbacks/login_c.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import time
77

88
from server import app
9+
from utils.common import validate_data_not_empty
910
from api.login import login_api, get_captcha_image_api
1011

1112

@@ -41,7 +42,7 @@ def login_auth(nClicks, username, password, input_captcha, session_id, image_cli
4142
if captcha_hidden:
4243
input_captcha = 'hidden'
4344
# 校验全部输入值是否不为空
44-
if all([username, password, input_captcha]):
45+
if all(validate_data_not_empty(item) for item in [username, password, input_captcha]):
4546

4647
try:
4748
user_params = dict(username=username, password=password, captcha=input_captcha, session_id=session_id)
@@ -95,12 +96,12 @@ def login_auth(nClicks, username, password, input_captcha, session_id, image_cli
9596
)
9697

9798
return dict(
98-
username_form_status=None if username else 'error',
99-
password_form_status=None if password else 'error',
100-
captcha_form_status=None if input_captcha else 'error',
101-
username_form_help=None if username else '请输入用户名!',
102-
password_form_help=None if password else '请输入密码!',
103-
captcha_form_help=None if input_captcha else '请输入验证码!',
99+
username_form_status=None if validate_data_not_empty(username) else 'error',
100+
password_form_status=None if validate_data_not_empty(password) else 'error',
101+
captcha_form_status=None if validate_data_not_empty(input_captcha) else 'error',
102+
username_form_help=None if validate_data_not_empty(username) else '请输入用户名!',
103+
password_form_help=None if validate_data_not_empty(password) else '请输入密码!',
104+
captcha_form_help=None if validate_data_not_empty(input_captcha) else '请输入验证码!',
104105
image_click=dash.no_update,
105106
submit_loading=False,
106107
token=None,

dash-fastapi-frontend/callbacks/monitor_c/job_c/job_c.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import feffery_utils_components as fuc
99

1010
from server import app
11+
from utils.common import validate_data_not_empty
1112
from api.job import get_job_list_api, get_job_detail_api, add_job_api, edit_job_api, execute_job_api, delete_job_api, export_job_list_api
1213
from api.dict import query_dict_data_list_api
1314

@@ -334,7 +335,7 @@ def job_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_lab
334335
# 获取所有输入表单项对应的value及label
335336
form_value_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-2]}
336337
form_label_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-1]}
337-
if all([form_value_state.get(k) for k in form_label_output_list]):
338+
if all(validate_data_not_empty(item) for item in [form_value_state.get(k) for k in form_label_output_list]):
338339
params_add = form_value_state
339340
params_edit = params_add.copy()
340341
params_edit['job_id'] = edit_row_info.get('job_id') if edit_row_info else None
@@ -374,8 +375,8 @@ def job_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_lab
374375
)
375376

376377
return dict(
377-
form_label_validate_status=[None if form_value_state.get(k) else 'error' for k in form_label_output_list],
378-
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
378+
form_label_validate_status=[None if validate_data_not_empty(form_value_state.get(k)) else 'error' for k in form_label_output_list],
379+
form_label_validate_info=[None if validate_data_not_empty(form_value_state.get(k)) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
379380
modal_visible=dash.no_update,
380381
operations=dash.no_update,
381382
api_check_token_trigger=dash.no_update,

dash-fastapi-frontend/callbacks/system_c/config_c.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import feffery_utils_components as fuc
88

99
from server import app
10+
from utils.common import validate_data_not_empty
1011
from api.config import get_config_list_api, get_config_detail_api, add_config_api, edit_config_api, delete_config_api, export_config_list_api, refresh_config_api
1112

1213

@@ -297,7 +298,7 @@ def add_edit_config_modal(operation_click, button_click, selected_row_keys, clic
297298
),
298299
prevent_initial_call=True
299300
)
300-
def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_label):
301+
def config_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_label):
301302
"""
302303
新增或编辑参数设置弹窗确认回调,实现新增或编辑操作
303304
"""
@@ -307,7 +308,7 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
307308
# 获取所有输入表单项对应的value及label
308309
form_value_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-2]}
309310
form_label_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-1]}
310-
if all([form_value_state.get(k) for k in form_label_output_list]):
311+
if all(validate_data_not_empty(item) for item in [form_value_state.get(k) for k in form_label_output_list]):
311312
params_add = form_value_state
312313
params_edit = params_add.copy()
313314
params_edit['config_id'] = edit_row_info.get('config_id') if edit_row_info else None
@@ -347,8 +348,8 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
347348
)
348349

349350
return dict(
350-
form_label_validate_status=[None if form_value_state.get(k) else 'error' for k in form_label_output_list],
351-
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
351+
form_label_validate_status=[None if validate_data_not_empty(form_value_state.get(k)) else 'error' for k in form_label_output_list],
352+
form_label_validate_info=[None if validate_data_not_empty(form_value_state.get(k)) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
352353
modal_visible=dash.no_update,
353354
operations=dash.no_update,
354355
api_check_token_trigger=dash.no_update,

dash-fastapi-frontend/callbacks/system_c/dept_c.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import feffery_utils_components as fuc
77

88
from server import app
9+
from utils.common import validate_data_not_empty
910
from utils.tree_tool import list_to_tree
1011
from api.dept import get_dept_tree_api, get_dept_list_api, add_dept_api, edit_dept_api, delete_dept_api, \
1112
get_dept_detail_api, get_dept_tree_for_edit_option_api
@@ -304,7 +305,7 @@ def dept_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_la
304305
# 获取所有输入表单项对应的value及label
305306
form_value_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-2]}
306307
form_label_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-1]}
307-
if all([form_value_state.get(k) for k in form_label_output_list]):
308+
if all(validate_data_not_empty(item) for item in [form_value_state.get(k) for k in form_label_output_list]):
308309
params_add = form_value_state
309310
params_edit = params_add.copy()
310311
params_edit['dept_id'] = edit_row_info.get('dept_id') if edit_row_info else None
@@ -344,8 +345,8 @@ def dept_confirm(confirm_trigger, modal_type, edit_row_info, form_value, form_la
344345
)
345346

346347
return dict(
347-
form_label_validate_status=[None if form_value_state.get(k) else 'error' for k in form_label_output_list],
348-
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
348+
form_label_validate_status=[None if validate_data_not_empty(form_value_state.get(k)) else 'error' for k in form_label_output_list],
349+
form_label_validate_info=[None if validate_data_not_empty(form_value_state.get(k)) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
349350
modal_visible=dash.no_update,
350351
operations=dash.no_update,
351352
api_check_token_trigger=dash.no_update,

dash-fastapi-frontend/callbacks/system_c/dict_c/dict_c.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import feffery_utils_components as fuc
88

99
from server import app
10+
from utils.common import validate_data_not_empty
1011
from api.dict import get_dict_type_list_api, get_all_dict_type_api, get_dict_type_detail_api, add_dict_type_api, edit_dict_type_api, delete_dict_type_api, export_dict_type_list_api, refresh_dict_api
1112

1213

@@ -311,7 +312,7 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
311312
# 获取所有输入表单项对应的value及label
312313
form_value_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-2]}
313314
form_label_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-1]}
314-
if all([form_value_state.get(k) for k in form_label_output_list]):
315+
if all(validate_data_not_empty(item) for item in [form_value_state.get(k) for k in form_label_output_list]):
315316
params_add = form_value_state
316317
params_edit = params_add.copy()
317318
params_edit['dict_id'] = edit_row_info.get('dict_id') if edit_row_info else None
@@ -351,8 +352,8 @@ def dict_type_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
351352
)
352353

353354
return dict(
354-
form_label_validate_status=[None if form_value_state.get(k) else 'error' for k in form_label_output_list],
355-
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
355+
form_label_validate_status=[None if validate_data_not_empty(form_value_state.get(k)) else 'error' for k in form_label_output_list],
356+
form_label_validate_info=[None if validate_data_not_empty(form_value_state.get(k)) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
356357
modal_visible=dash.no_update,
357358
operations=dash.no_update,
358359
api_check_token_trigger=dash.no_update,

dash-fastapi-frontend/callbacks/system_c/dict_c/dict_data_c.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import feffery_utils_components as fuc
88

99
from server import app
10+
from utils.common import validate_data_not_empty
1011
from api.dict import get_dict_data_list_api, get_dict_data_detail_api, add_dict_data_api, edit_dict_data_api, delete_dict_data_api, export_dict_data_list_api
1112

1213

@@ -306,7 +307,7 @@ def dict_data_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
306307
# 获取所有输入表单项对应的value及label
307308
form_value_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-2]}
308309
form_label_state = {x['id']['index']: x.get('value') for x in dash.ctx.states_list[-1]}
309-
if all([form_value_state.get(k) for k in form_label_output_list]):
310+
if all(validate_data_not_empty(item) for item in [form_value_state.get(k) for k in form_label_output_list]):
310311
params_add = form_value_state
311312
params_edit = params_add.copy()
312313
params_edit['dict_code'] = edit_row_info.get('dict_code') if edit_row_info else None
@@ -346,8 +347,8 @@ def dict_data_confirm(confirm_trigger, modal_type, edit_row_info, form_value, fo
346347
)
347348

348349
return dict(
349-
form_label_validate_status=[None if form_value_state.get(k) else 'error' for k in form_label_output_list],
350-
form_label_validate_info=[None if form_value_state.get(k) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
350+
form_label_validate_status=[None if validate_data_not_empty(form_value_state.get(k)) else 'error' for k in form_label_output_list],
351+
form_label_validate_info=[None if validate_data_not_empty(form_value_state.get(k)) else f'{form_label_state.get(k)}不能为空!' for k in form_label_output_list],
351352
modal_visible=dash.no_update,
352353
operations=dash.no_update,
353354
api_check_token_trigger=dash.no_update,

0 commit comments

Comments
 (0)