lybase 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lybase might be problematic. Click here for more details.
- lybase/__init__.pyc +0 -0
- lybase/admin.pyc +0 -0
- lybase/app_data.pyc +0 -0
- lybase/apps.pyc +0 -0
- lybase/jinja2_env.pyc +0 -0
- lybase/management/__init__.pyc +0 -0
- lybase/management/commands/__init__.pyc +0 -0
- lybase/management/commands/column_convert.pyc +0 -0
- lybase/management/commands/create_backend_i18n_db_data.pyc +0 -0
- lybase/management/commands/fix_url_get_name_map.pyc +0 -0
- lybase/management/commands/get_all_url.pyc +0 -0
- lybase/management/commands/i18n_convert.pyc +0 -0
- lybase/management/commands/new_front_end_auto_code_pack/__init__.pyc +0 -0
- lybase/management/commands/new_front_end_auto_code_pack/batch_update.pyc +0 -0
- lybase/management/commands/new_front_end_auto_code_pack/search_condition_config_list.pyc +0 -0
- lybase/management/commands/sys_auto_code_generate_db_data.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/__init__.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/check_app_i18n_file.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/common.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_api_info_by_type_script.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_app_all_api_json_zip.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_app_all_select_modal_ts_zip.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_app_all_select_ts_zip.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_app_i18n_file.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_page_info_by_type_script2.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/export_permission_by_type_script.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/import_api_info_by_json_file.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/import_remote_page_code_by_json_file.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/__init__.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_batch_config_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_column_config_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_edit_config_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_menu_json.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_remote_config_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_required_condition.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_update_config_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_select_modal_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/generate_select_ts.pyc +0 -0
- lybase/management/commands/sys_auto_code_new_pack/utils/tools.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/__init__.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_create_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_delete_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_get_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_m2m_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_query_name_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_query_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_recover_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/code_by_update_tmp.pyc +0 -0
- lybase/management/commands/sys_auto_code_pack/common.pyc +0 -0
- lybase/migrations/0001_initial.pyc +0 -0
- lybase/migrations/0002_auto_20240930_0219.pyc +0 -0
- lybase/migrations/0003_auto_20241015_1628.pyc +0 -0
- lybase/migrations/0004_auto_20241028_1612.pyc +0 -0
- lybase/migrations/0005_languagedata.pyc +0 -0
- lybase/migrations/0006_language_languageproject.pyc +0 -0
- lybase/migrations/0007_auto_20241113_1054.pyc +0 -0
- lybase/migrations/0008_auto_20241119_1130.pyc +0 -0
- lybase/migrations/0009_auto_20241119_1517.pyc +0 -0
- lybase/migrations/0010_auto_20241119_1732.pyc +0 -0
- lybase/migrations/0011_sqlite3_parameter_is_edit_array.pyc +0 -0
- lybase/migrations/0012_sqlite3_parameter_is_m2m.pyc +0 -0
- lybase/migrations/0013_auto_20241125_1447.pyc +0 -0
- lybase/migrations/0014_auto_20250116_1458.pyc +0 -0
- lybase/migrations/0015_auto_20250123_1015.pyc +0 -0
- lybase/migrations/0016_sqlite3_pageinfo_remote_page_query_code_json.pyc +0 -0
- lybase/migrations/0017_sqlite3_parameter_post_url.pyc +0 -0
- lybase/migrations/0018_sqlite3_pageinfo_is_operation.pyc +0 -0
- lybase/migrations/__init__.pyc +0 -0
- lybase/models/__init__.pyc +0 -0
- lybase/models/models.pyc +0 -0
- lybase/models.pyc +0 -0
- lybase/signals/__init__.pyc +0 -0
- lybase/signals/batch_update.pyc +0 -0
- lybase/static/lybase/favicon-16x16.png +0 -0
- lybase/static/lybase/favicon-32x32.png +0 -0
- lybase/static/lybase/index.css +16 -0
- lybase/static/lybase/swagger-initializer.js +20 -0
- lybase/static/lybase/swagger-ui-bundle.js +2 -0
- lybase/static/lybase/swagger-ui-bundle.js.map +1 -0
- lybase/static/lybase/swagger-ui-es-bundle-core.js +3 -0
- lybase/static/lybase/swagger-ui-es-bundle-core.js.map +1 -0
- lybase/static/lybase/swagger-ui-es-bundle.js +2 -0
- lybase/static/lybase/swagger-ui-es-bundle.js.map +1 -0
- lybase/static/lybase/swagger-ui-standalone-preset.js +2 -0
- lybase/static/lybase/swagger-ui-standalone-preset.js.map +1 -0
- lybase/static/lybase/swagger-ui.css +3 -0
- lybase/static/lybase/swagger-ui.css.map +1 -0
- lybase/static/lybase/swagger-ui.js +2 -0
- lybase/static/lybase/swagger-ui.js.map +1 -0
- lybase/templates/lybase/index.html +42 -0
- lybase/templates/lybase/oauth2-redirect.html +79 -0
- lybase/tests.pyc +0 -0
- lybase/views.pyc +0 -0
- lybase/views_base.pyc +0 -0
- lybase/views_convert_excel_data.pyc +0 -0
- lybase/views_dev.pyc +0 -0
- lybase/views_swagger.pyc +0 -0
- lybase/views_swagger_tools.pyc +0 -0
- lybase-1.0.0.dist-info/METADATA +240 -0
- lybase-1.0.0.dist-info/RECORD +163 -0
- lybase-1.0.0.dist-info/WHEEL +4 -0
- lybase-1.0.0.dist-info/top_level.txt +2 -0
- util/__init__.pyc +0 -0
- util/api_tools.pyc +0 -0
- util/assets/word.data +25547 -0
- util/auth.pyc +0 -0
- util/base_data.pyc +0 -0
- util/base_model_fields.pyc +0 -0
- util/basemodel.pyc +0 -0
- util/basetest.pyc +0 -0
- util/celery_task.pyc +0 -0
- util/common.pyc +0 -0
- util/consul_util.pyc +0 -0
- util/custom_opc_data.pyc +0 -0
- util/db_router/__init__.pyc +0 -0
- util/db_router/session_router.pyc +0 -0
- util/ding_oa/__init__.pyc +0 -0
- util/ding_oa/ding_9a0_machine.pyc +0 -0
- util/ding_oa/ding_callback_crypto3.pyc +0 -0
- util/ding_oa/ding_db.pyc +0 -0
- util/ding_oa/ding_oa_process.pyc +0 -0
- util/ding_tools.pyc +0 -0
- util/email_tools.pyc +0 -0
- util/emailtools.pyc +0 -0
- util/emoji.pyc +0 -0
- util/error_middle.pyc +0 -0
- util/file_tools.pyc +0 -0
- util/formate_datetime.pyc +0 -0
- util/formula_tools.pyc +0 -0
- util/formula_tools2.pyc +0 -0
- util/func_tools.pyc +0 -0
- util/image_tools.pyc +0 -0
- util/influx_client.pyc +0 -0
- util/influxdb_tools.pyc +0 -0
- util/java2python_sessionengine.pyc +0 -0
- util/jsonresult.pyc +0 -0
- util/jyx_tools.pyc +0 -0
- util/link_ding_talk.pyc +0 -0
- util/liyuoa_tools.pyc +0 -0
- util/login_appapi.pyc +0 -0
- util/login_org_person.pyc +0 -0
- util/loginrequired.pyc +0 -0
- util/middleware.pyc +0 -0
- util/model_base_fun.pyc +0 -0
- util/model_tools.pyc +0 -0
- util/models_mongodb.pyc +0 -0
- util/notice.pyc +0 -0
- util/nsfile_tools.pyc +0 -0
- util/org_tools.pyc +0 -0
- util/pickle_serializer.pyc +0 -0
- util/pinyin.pyc +0 -0
- util/pymongo_util.pyc +0 -0
- util/qrcode_utils.pyc +0 -0
- util/remove_symbol.pyc +0 -0
- util/request_tools.pyc +0 -0
- util/sql_middleware.pyc +0 -0
- util/sys_utils.pyc +0 -0
- util/time_utils.pyc +0 -0
- util/tools.pyc +0 -0
- util/url_util.pyc +0 -0
- util/wechat_pay.pyc +0 -0
- util/wechat_tools.pyc +0 -0
- util/xml_handler.pyc +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- HTML for static distribution bundle build -->
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>Swagger UI</title>
|
|
7
|
+
{% load static %}
|
|
8
|
+
<link rel="stylesheet" type="text/css" href="{% static 'lybase/swagger-ui.css' %}">
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="{% static 'lybase/index.css' %}">
|
|
10
|
+
|
|
11
|
+
<link rel="icon" type="image/png" href="{% static 'lybase/favicon-32x32.png' %}" sizes="32x32"/>
|
|
12
|
+
<link rel="icon" type="image/png" href="{% static 'lybase/favicon-16x16.png' %}" sizes="32x32"/>
|
|
13
|
+
</head>
|
|
14
|
+
|
|
15
|
+
<body>
|
|
16
|
+
<div id="swagger-ui"></div>
|
|
17
|
+
<script src="{% static 'lybase/swagger-ui-bundle.js' %}" charset="UTF-8"></script>
|
|
18
|
+
<script src="{% static 'lybase/swagger-ui-standalone-preset.js' %}" charset="UTF-8"></script>
|
|
19
|
+
<script charset="UTF-8">
|
|
20
|
+
window.onload = function() {
|
|
21
|
+
//<editor-fold desc="Changeable Configuration Block">
|
|
22
|
+
|
|
23
|
+
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
|
|
24
|
+
window.ui = SwaggerUIBundle({
|
|
25
|
+
url: "/swagger.json",
|
|
26
|
+
dom_id: '#swagger-ui',
|
|
27
|
+
deepLinking: true,
|
|
28
|
+
presets: [
|
|
29
|
+
SwaggerUIBundle.presets.apis,
|
|
30
|
+
SwaggerUIStandalonePreset
|
|
31
|
+
],
|
|
32
|
+
plugins: [
|
|
33
|
+
SwaggerUIBundle.plugins.DownloadUrl
|
|
34
|
+
],
|
|
35
|
+
layout: "StandaloneLayout"
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//</editor-fold>
|
|
39
|
+
};
|
|
40
|
+
</script>
|
|
41
|
+
</body>
|
|
42
|
+
</html>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Swagger UI: OAuth2 Redirect</title>
|
|
5
|
+
</head>
|
|
6
|
+
<body>
|
|
7
|
+
<script>
|
|
8
|
+
'use strict';
|
|
9
|
+
function run () {
|
|
10
|
+
var oauth2 = window.opener.swaggerUIRedirectOauth2;
|
|
11
|
+
var sentState = oauth2.state;
|
|
12
|
+
var redirectUrl = oauth2.redirectUrl;
|
|
13
|
+
var isValid, qp, arr;
|
|
14
|
+
|
|
15
|
+
if (/code|token|error/.test(window.location.hash)) {
|
|
16
|
+
qp = window.location.hash.substring(1).replace('?', '&');
|
|
17
|
+
} else {
|
|
18
|
+
qp = location.search.substring(1);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
arr = qp.split("&");
|
|
22
|
+
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
|
|
23
|
+
qp = qp ? JSON.parse('{' + arr.join() + '}',
|
|
24
|
+
function (key, value) {
|
|
25
|
+
return key === "" ? value : decodeURIComponent(value);
|
|
26
|
+
}
|
|
27
|
+
) : {};
|
|
28
|
+
|
|
29
|
+
isValid = qp.state === sentState;
|
|
30
|
+
|
|
31
|
+
if ((
|
|
32
|
+
oauth2.auth.schema.get("flow") === "accessCode" ||
|
|
33
|
+
oauth2.auth.schema.get("flow") === "authorizationCode" ||
|
|
34
|
+
oauth2.auth.schema.get("flow") === "authorization_code"
|
|
35
|
+
) && !oauth2.auth.code) {
|
|
36
|
+
if (!isValid) {
|
|
37
|
+
oauth2.errCb({
|
|
38
|
+
authId: oauth2.auth.name,
|
|
39
|
+
source: "auth",
|
|
40
|
+
level: "warning",
|
|
41
|
+
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (qp.code) {
|
|
46
|
+
delete oauth2.state;
|
|
47
|
+
oauth2.auth.code = qp.code;
|
|
48
|
+
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
|
|
49
|
+
} else {
|
|
50
|
+
let oauthErrorMsg;
|
|
51
|
+
if (qp.error) {
|
|
52
|
+
oauthErrorMsg = "["+qp.error+"]: " +
|
|
53
|
+
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
|
|
54
|
+
(qp.error_uri ? "More info: "+qp.error_uri : "");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
oauth2.errCb({
|
|
58
|
+
authId: oauth2.auth.name,
|
|
59
|
+
source: "auth",
|
|
60
|
+
level: "error",
|
|
61
|
+
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
|
|
66
|
+
}
|
|
67
|
+
window.close();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (document.readyState !== 'loading') {
|
|
71
|
+
run();
|
|
72
|
+
} else {
|
|
73
|
+
document.addEventListener('DOMContentLoaded', function () {
|
|
74
|
+
run();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
</script>
|
|
78
|
+
</body>
|
|
79
|
+
</html>
|
lybase/tests.pyc
ADDED
|
Binary file
|
lybase/views.pyc
ADDED
|
Binary file
|
lybase/views_base.pyc
ADDED
|
Binary file
|
|
Binary file
|
lybase/views_dev.pyc
ADDED
|
Binary file
|
lybase/views_swagger.pyc
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lybase
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: lybase库,包括lybase和util两个包,适用于Django项目的基础功能与工具集。
|
|
5
|
+
Author-email: 8mu <8mu@8mu.com.cn>
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: django==3.2.10
|
|
9
|
+
Requires-Dist: requests>2.5
|
|
10
|
+
Requires-Dist: beautifulsoup4
|
|
11
|
+
Requires-Dist: phonenumbers
|
|
12
|
+
Requires-Dist: Pillow>=2.0.0
|
|
13
|
+
Requires-Dist: paho-mqtt==1.2
|
|
14
|
+
Requires-Dist: XlsxWriter==1.0.5
|
|
15
|
+
Requires-Dist: celery<4.4
|
|
16
|
+
Requires-Dist: django-redis==4.12.1
|
|
17
|
+
Requires-Dist: django-timezone-field>=2.0
|
|
18
|
+
Requires-Dist: opcua==0.98.3
|
|
19
|
+
Requires-Dist: sentry-sdk==2.29.1
|
|
20
|
+
Requires-Dist: loguru
|
|
21
|
+
Requires-Dist: influxdb
|
|
22
|
+
|
|
23
|
+
# 开发方式
|
|
24
|
+
|
|
25
|
+
开发时,使用如下命令安装源码到 python 环境
|
|
26
|
+
|
|
27
|
+
```shell
|
|
28
|
+
pip install -e .
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
这样修改源码后,无需重新安装即可生效,适合开发调试
|
|
32
|
+
|
|
33
|
+
# 打包方式
|
|
34
|
+
|
|
35
|
+
初始化打包环境,执行如下命令
|
|
36
|
+
|
|
37
|
+
```shell
|
|
38
|
+
pip install -r requirements.txt
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
执行打包命令
|
|
42
|
+
|
|
43
|
+
```shell
|
|
44
|
+
./build.sh
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
# 发布
|
|
48
|
+
|
|
49
|
+
打包后,执行如下命令将软件包发布到指定的 pip 源
|
|
50
|
+
|
|
51
|
+
```shell
|
|
52
|
+
twine upload --repository-url {url} -u{username} -p{password} dist/*
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
示例:
|
|
56
|
+
|
|
57
|
+
```shell
|
|
58
|
+
twine upload --repository-url http://192.168.5.200:9080/ -u8mu -p123456 dist/*
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
# 安装
|
|
62
|
+
|
|
63
|
+
```shell
|
|
64
|
+
pip install lybase -U --pre -i http://192.168.5.200:9080/simple --trusted-host 192.168.5.200
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
# required_condition 配置与机制说明
|
|
68
|
+
|
|
69
|
+
## 1. Model 中 Meta 的 `required_condition` 配置
|
|
70
|
+
|
|
71
|
+
### 基本用法
|
|
72
|
+
|
|
73
|
+
在 Django Model 的 `Meta` 类中,可以通过 `required_condition` 字段配置顶部数据切换条件,用于全局过滤。
|
|
74
|
+
|
|
75
|
+
**配置示例:**
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
SUBJECT_GROUP_ID_REQUIRED_CONDITION_META = RequiredConditionMeta(
|
|
79
|
+
"group_id",
|
|
80
|
+
"subject__group_id",
|
|
81
|
+
allow_all=False,
|
|
82
|
+
pre_options=[{"id": "{{my_group_ids|json}}", "name": "我的项目"}],
|
|
83
|
+
list_query_params={
|
|
84
|
+
"is_pagination": False,
|
|
85
|
+
"conditions": [
|
|
86
|
+
[
|
|
87
|
+
{
|
|
88
|
+
"field_name": "is_active",
|
|
89
|
+
"operator": "eq",
|
|
90
|
+
"value": [True],
|
|
91
|
+
"format": "choices",
|
|
92
|
+
"class_name": "bool",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"field_name": "id",
|
|
96
|
+
"operator": "j_in",
|
|
97
|
+
"value": ["*{{my_group_ids|json}}"],
|
|
98
|
+
"format": "choices",
|
|
99
|
+
"class_name": "int",
|
|
100
|
+
},
|
|
101
|
+
]
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### RequiredConditionMeta 配置参数说明
|
|
108
|
+
|
|
109
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
110
|
+
| ----------------- | --------- | ------ | --------------------------------------------------------------------- |
|
|
111
|
+
| key | str | 必填 | 全局切换配置的 key,相同 key 在不同页面值会共享 |
|
|
112
|
+
| field_name | str | 必填 | 关联的 model 字段名,决定顶部切换的实际过滤字段 |
|
|
113
|
+
| value_key | str | 'id' | 顶部下拉列表的 value 字段名 |
|
|
114
|
+
| label_key | str | 'name' | 顶部下拉列的 label 字段名 |
|
|
115
|
+
| title | str/None | None | 下拉列表前的标题,None 时自动为"切换{field_name 对应的 verbose_name}" |
|
|
116
|
+
| allow_all | bool | True | 是否允许"全部"选项 |
|
|
117
|
+
| list_app_flag | str/None | None | 下拉列表查询时的 app_flag,None 时自动获取 |
|
|
118
|
+
| list_model_name | str/None | None | 下拉列表查询时的 model_name,None 时自动获取 |
|
|
119
|
+
| list_query_params | dict/None | None | 下拉列表查询时的参数,支持 conditions、is_pagination 等 |
|
|
120
|
+
| list_url | str/None | None | 下拉列表查询时的自定义 url,None 时自动生成 |
|
|
121
|
+
| pre_options | list/None | None | 下拉列表前置选项,支持 Jinja2 模板 |
|
|
122
|
+
| append_options | list/None | None | 下拉列表追加选项, 支持 Jinja2 模板 |
|
|
123
|
+
|
|
124
|
+
### `pre_options` 和 `append_options` 说明
|
|
125
|
+
|
|
126
|
+
`pre_options` 和 `append_options` item 的 `value_key` 的值可以是一个 Jinja2 模板, 无论模板返回的是列表还是单个值,查询时都会变成列表进行 in 查询
|
|
127
|
+
|
|
128
|
+
### `list_query_params` 中 conditions 的 operator 以 `j_` 开头的处理说明
|
|
129
|
+
|
|
130
|
+
在 `list_query_params` 的 `conditions` 配置中,`operator` 字段如果以 `j_` 开头(如 `j_in`、`j_eq`),表示该条件的 `value` 支持 Jinja2 模板渲染。
|
|
131
|
+
|
|
132
|
+
#### 处理机制
|
|
133
|
+
|
|
134
|
+
- 框架会自动去除 `j_` 前缀,将剩余部分作为实际的操作符(如 `j_in` 实际等价于 `in`)。
|
|
135
|
+
- `value` 会先经过 Jinja2 模板渲染,渲染结果作为最终的查询值。
|
|
136
|
+
- 如果`value` 列表中某个值是以`*`开头的,那么这个值会展开到外层列表。
|
|
137
|
+
|
|
138
|
+
#### 代码参考
|
|
139
|
+
|
|
140
|
+
在 `views_base.py` 的 `get_condition` 方法中:
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
if operator.startswith('j_'):
|
|
144
|
+
operator = operator[2:]
|
|
145
|
+
is_jinja2 = True
|
|
146
|
+
else:
|
|
147
|
+
is_jinja2 = False
|
|
148
|
+
...
|
|
149
|
+
if is_jinja2:
|
|
150
|
+
value = Jinja2Env().render_list(value)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### 典型用法示例
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
{
|
|
157
|
+
"field_name": "id",
|
|
158
|
+
"operator": "j_in",
|
|
159
|
+
"value": ["*{{my_group_ids|json}}"],
|
|
160
|
+
...
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
- 其中 `{{my_group_ids|json}}` 会被渲染为当前用户的项目 ID 列表,最终作为 `in` 查询条件。
|
|
165
|
+
- 如果 value 以 `*` 开头,渲染后会自动展开为外层列表。
|
|
166
|
+
|
|
167
|
+
#### 场景说明
|
|
168
|
+
|
|
169
|
+
- 适用于需要根据用户、组织、权限等动态生成过滤条件的场景。
|
|
170
|
+
- 结合 `register_global_vars` 注册的全局变量,可实现灵活的多租户、权限隔离等需求。
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 2. 字段级 `required_condition` 配置与继承机制
|
|
175
|
+
|
|
176
|
+
### 字段默认行为
|
|
177
|
+
|
|
178
|
+
- 此配置为了配置哪些字段在高级后普通查询时,其下拉列表对应的选项的查询条件,如何根据顶部切换而变化
|
|
179
|
+
- 此配置中 `key` 如果和顶部切换的 `key` 相同,下拉列表的 options 就会根据顶部切换而变化
|
|
180
|
+
- 字段的 `required_condition` 默认值为 `None`。
|
|
181
|
+
- 如果本 Model 的 `Meta` 中配置了 `required_condition`,且 key 匹配,则该字段会**自动继承**外键对应 Model 的 `Meta.required_condition` 配置。
|
|
182
|
+
|
|
183
|
+
### 继承前提
|
|
184
|
+
|
|
185
|
+
- 只有当本 Model 的 `Meta.required_condition` 和外键 Model 的 `Meta.required_condition` 配置的 key 同时存在且一致时,才会继承外键 Model 的配置。
|
|
186
|
+
|
|
187
|
+
### 忽略继承
|
|
188
|
+
|
|
189
|
+
- 如果字段的 `required_condition` 显式设置为 `False`,则**不会继承**外键 Model 的配置。
|
|
190
|
+
|
|
191
|
+
### 代码示例
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
class DataSet(BaseModel):
|
|
195
|
+
subject = models.ForeignKey(ModelSubject, on_delete=PROTECT, ...)
|
|
196
|
+
# subject 字段未设置 required_condition,若 DataSet.Meta.required_condition和ModelSubject.Meta.required_condition 配置的key同时有 group_id,则会继承 ModelSubject.Meta.required_condition
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### RequiredConditionParam 配置参数说明
|
|
200
|
+
|
|
201
|
+
`RequiredConditionParam` 用于描述字段级 required_condition 的配置参数,定义于 `util/base_model_fields.py`。
|
|
202
|
+
|
|
203
|
+
| 参数名 | 类型 | 说明 |
|
|
204
|
+
| ---------- | ---- | ---------------------------------------------------------------------------------- |
|
|
205
|
+
| key | str | 全局切换配置的 key,要和 meta 配置的 key 对应,切换时才会影响对应的远程下拉框的列表 |
|
|
206
|
+
| field_name | str | 实际过滤用的字段名 |
|
|
207
|
+
|
|
208
|
+
- 该类本质上是一个列表,可以包含多个 {key, field_name} 配置。
|
|
209
|
+
- 用于字段级 required_condition 继承和过滤逻辑。
|
|
210
|
+
|
|
211
|
+
### 代码示例
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
class DataSet(BaseModel):
|
|
215
|
+
subject = models.ForeignKey(ModelSubject, on_delete=PROTECT, required_condition=RequiredConditionParam('group_id','group_id'))
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 3. `register_global_vars` 装饰器的使用
|
|
221
|
+
|
|
222
|
+
### 作用
|
|
223
|
+
|
|
224
|
+
- 用于注册全局 Jinja2 模板变量,便于在 `required_condition` 的 Jinja2 表达式中动态获取上下文数据。
|
|
225
|
+
|
|
226
|
+
### 用法
|
|
227
|
+
|
|
228
|
+
```python
|
|
229
|
+
from lybase.jinja2_env import register_global_vars
|
|
230
|
+
|
|
231
|
+
@register_global_vars("my_group_ids")
|
|
232
|
+
def my_group_ids(context) -> list[int]:
|
|
233
|
+
from model_show.models.models import ModelGroupMember
|
|
234
|
+
person = context.person
|
|
235
|
+
if not person:
|
|
236
|
+
return []
|
|
237
|
+
return list(ModelGroupMember.objects.filter(person_id=person['id']).values_list('model_group_id', flat=True))
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
- 在模板中可直接使用 `{{my_group_ids|json}}` 获取当前用户的项目 ID 列表。
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
lybase-1.0.0.dist-info/METADATA,sha256=46c9-y_MWKNYHK7dTA3TvATwd0PQ5VdfCoCEn9-DNe8,8888
|
|
2
|
+
lybase-1.0.0.dist-info/RECORD,,
|
|
3
|
+
lybase-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
4
|
+
lybase-1.0.0.dist-info/top_level.txt,sha256=j8twX34kXD1Um5kgN0r-hsu5iKzq_7QRbjqR2ZqejnA,12
|
|
5
|
+
lybase/__init__.pyc,sha256=eFoqmueunYebyeq-BWrXNk4kGpErxJXrh1jkiWMm0Zw,141
|
|
6
|
+
lybase/admin.pyc,sha256=NxVdTmQmYvce1bJEOrWTf6PWTelhzHYzW4ptuemttWA,167
|
|
7
|
+
lybase/app_data.pyc,sha256=XFiQY1NTPr1xFBINWVMZPM1BxWTwCaIkhaf1sD_7qEM,313
|
|
8
|
+
lybase/apps.pyc,sha256=M1z71Mhr8vPAisIybfQJxrmTkSwGeGCul2VAKbBpZeU,360
|
|
9
|
+
lybase/jinja2_env.pyc,sha256=gyA1osaamBFUzzMgHwQIuCbQ9y1KLENq8y_rnqjaHJU,5605
|
|
10
|
+
lybase/management/__init__.pyc,sha256=3ZA8JgS9pJ_m6dKkOSyNr0sVbIo5h9SfFk40OyPY7l8,137
|
|
11
|
+
lybase/management/commands/__init__.pyc,sha256=lkB_ETzqA0mpgDpvDVi2ghaFpbVH-L1RuwfGCStCN7I,146
|
|
12
|
+
lybase/management/commands/column_convert.pyc,sha256=l4NJMYFROCeLKwWCKAU8Blfj6u7rcRkdCDIuflTQfWg,2759
|
|
13
|
+
lybase/management/commands/create_backend_i18n_db_data.pyc,sha256=Eg6983QNGAJ5YEIAxu1Ce21LEQ_wSQhIxYZmbQ2ia8w,2530
|
|
14
|
+
lybase/management/commands/fix_url_get_name_map.pyc,sha256=t6juuWxcCLZ6xTl3iCsvDUW2h1hvZWvwhH5mDd6qw2g,1473
|
|
15
|
+
lybase/management/commands/get_all_url.pyc,sha256=WnYq_BZqEZ75-id47RweHlPXaKWlA5ck2ZetM7Anc5k,1306
|
|
16
|
+
lybase/management/commands/i18n_convert.pyc,sha256=Jqbz3nef5P_I4omX-6XW1t2o-Oi9vLnAhPw_e-OC9cc,4938
|
|
17
|
+
lybase/management/commands/new_front_end_auto_code_pack/__init__.pyc,sha256=iEab3-K37UEGWGq3lhfu_CoA1H9YGfXV0te2gLFc7Ik,175
|
|
18
|
+
lybase/management/commands/new_front_end_auto_code_pack/batch_update.pyc,sha256=Fffs1wtY_tB021NKEFOf59CAVXpvwYQ5CiisGsjXFPY,5204
|
|
19
|
+
lybase/management/commands/new_front_end_auto_code_pack/search_condition_config_list.pyc,sha256=H47eaOMf-r_-uFS_EPluJKoohdw6pAV_Z4byCW2d6gs,9406
|
|
20
|
+
lybase/management/commands/sys_auto_code_generate_db_data.pyc,sha256=HNAEkNwdS4Luxf1Ywefekke-IgRb4KgQiTvvilbA70Y,5885
|
|
21
|
+
lybase/management/commands/sys_auto_code_new_pack/__init__.pyc,sha256=EWhalw8KLbOGStvj-ACkEBHl1zZpmA36DQWoSCAgJ0g,188
|
|
22
|
+
lybase/management/commands/sys_auto_code_new_pack/check_app_i18n_file.pyc,sha256=zpLQump8UOrZps0xDUxVRkZBCBLYvEKT8PQXw5ZMfk4,1092
|
|
23
|
+
lybase/management/commands/sys_auto_code_new_pack/common.pyc,sha256=ybeGS_2JEjovEWYL9N4CLidNw11Np0q6VQJ1hVyo7uc,1429
|
|
24
|
+
lybase/management/commands/sys_auto_code_new_pack/export_api_info_by_type_script.pyc,sha256=_QKREGlThfnpmCd3ZXw26UKefjJ6vG55x6ZKqipgjDQ,1955
|
|
25
|
+
lybase/management/commands/sys_auto_code_new_pack/export_app_all_api_json_zip.pyc,sha256=F5Scf47_4Q_CSCqgIkEJwt1lcbBSshU3-MSXWvv3Wl4,1865
|
|
26
|
+
lybase/management/commands/sys_auto_code_new_pack/export_app_all_select_modal_ts_zip.pyc,sha256=KgChgufHAFAP-tYN-6PJ6zQ4XrLeQ9pI5mCGQNOSgfE,1816
|
|
27
|
+
lybase/management/commands/sys_auto_code_new_pack/export_app_all_select_ts_zip.pyc,sha256=1j2zxJvXsqGisesatCb5f2DJBeBcTWXsfapAPph3rcI,1648
|
|
28
|
+
lybase/management/commands/sys_auto_code_new_pack/export_app_i18n_file.pyc,sha256=GXftvc6oM1JQZX97pbTfHfUcsyPcASwkNIKYIOOJg1k,1587
|
|
29
|
+
lybase/management/commands/sys_auto_code_new_pack/export_page_info_by_type_script2.pyc,sha256=EZChgrYwaEFj98s8y7A-u9P9NrH1BEI6cK8ZzKhL-e0,16344
|
|
30
|
+
lybase/management/commands/sys_auto_code_new_pack/export_permission_by_type_script.pyc,sha256=yR2i0F0Ysv_ZFlfphYnKTJhEW1dHz9VsxOVeAnsAAEs,1560
|
|
31
|
+
lybase/management/commands/sys_auto_code_new_pack/import_api_info_by_json_file.pyc,sha256=CECm_vxuX57cb0QzS6rTnySbZjqIrTtBLeAiadRqkpw,3867
|
|
32
|
+
lybase/management/commands/sys_auto_code_new_pack/import_remote_page_code_by_json_file.pyc,sha256=w71v0dG4xe5v1nr-rAOJ482aKMuGBiDgkQWAINgJ17Q,1039
|
|
33
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/__init__.pyc,sha256=IBJLntTvr8c_wXxn1Tj5zXUv2sCiahx4JnUb9ijPoTE,175
|
|
34
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_batch_config_ts.pyc,sha256=O0-WgDxHcDnNblGFRuJAFbcqFD11s-ZJ3AS6sYfoW2w,941
|
|
35
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_column_config_ts.pyc,sha256=4rqa_3D_bGt1RdWup_VzQc_95p4kpN4yMt-tnxdaCIo,6562
|
|
36
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_edit_config_ts.pyc,sha256=jsFtXDBKAAJRdwPk0Xjv49VGLpDhisHZkHL9CrXKemQ,7066
|
|
37
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_menu_json.pyc,sha256=Ztzez__svm7o9fXvRKOd52ONSYyLG1liHC5EgctMObY,1568
|
|
38
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_remote_config_ts.pyc,sha256=unua7EpzbpsURLmLXIak6Rn75YV2np51Shle72Nf6gQ,1232
|
|
39
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_required_condition.pyc,sha256=uyByJcBiFd_2brJoHscMCuhgeol9WzgmwnSkPPHSY5c,2786
|
|
40
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_page_info_update_config_ts.pyc,sha256=i7WByzOPok4vfxv71GONoFeQU1qFGYf4JfSyM3OnJMU,7092
|
|
41
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_select_modal_ts.pyc,sha256=ZoPJR46OHPYFEZ1wvLYkHhywQFkDH2dzupzcVBZ8mUI,3093
|
|
42
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/generate_select_ts.pyc,sha256=TQ-ikJ2aLpPJnn_6SDxd0eIaIuU5vSf-x_eigcRTbhM,1571
|
|
43
|
+
lybase/management/commands/sys_auto_code_new_pack/utils/tools.pyc,sha256=m2mFPms2Ld-ux3mSU7e-9gb-vB0aDd_yYHOvMPfH5cs,11461
|
|
44
|
+
lybase/management/commands/sys_auto_code_pack/__init__.pyc,sha256=umQuZwryywsG74fz2KUqIkgPFZ9HcOa-WwbNWvZbVJw,576
|
|
45
|
+
lybase/management/commands/sys_auto_code_pack/code_by_create_tmp.pyc,sha256=12nqCg1v_PlNFtqEkODHLDfESkwwIYvcvpzYGHlWx6k,1073
|
|
46
|
+
lybase/management/commands/sys_auto_code_pack/code_by_delete_tmp.pyc,sha256=SrX5GQgcdat5oui95sALmf8j4m9ECI5BnNeLcqFSVAM,1041
|
|
47
|
+
lybase/management/commands/sys_auto_code_pack/code_by_get_tmp.pyc,sha256=gxRAgcsnh4QinG9Z7-4yGUUdDyfOxibUCzDcVJzw4nY,1216
|
|
48
|
+
lybase/management/commands/sys_auto_code_pack/code_by_m2m_tmp.pyc,sha256=TbM72k7BvmR6sRVPfrTU9JmRR5Pa25DMWDlWL25F19U,1256
|
|
49
|
+
lybase/management/commands/sys_auto_code_pack/code_by_query_name_tmp.pyc,sha256=tDNlkUtlZBKdy7rsgNP22w_VgGAxYqaG1C0RjTo2r74,1515
|
|
50
|
+
lybase/management/commands/sys_auto_code_pack/code_by_query_tmp.pyc,sha256=exMTbknEgCiOPUIbRAatj0ADL-kriFFI64rH2MbKJ8o,3632
|
|
51
|
+
lybase/management/commands/sys_auto_code_pack/code_by_recover_tmp.pyc,sha256=WplbPVFU5cIljhzIZQZvBHv9gH0cRTxkte8iw_2NbcU,1045
|
|
52
|
+
lybase/management/commands/sys_auto_code_pack/code_by_update_tmp.pyc,sha256=ALb3M9-McETCynCcJGUeN9GXyImWup0IqZsoB9houBg,1259
|
|
53
|
+
lybase/management/commands/sys_auto_code_pack/common.pyc,sha256=BpD-4CCLChVqUh8ASkoDz7aJR0duln24IJm8__We48s,13834
|
|
54
|
+
lybase/migrations/0001_initial.pyc,sha256=2AtXlK2MDI4TejA1h7D66YMsBkT3AyIQvzEUa_7uFts,6556
|
|
55
|
+
lybase/migrations/0002_auto_20240930_0219.pyc,sha256=ND2IhsBI4vDWti9jhkezLl6SA2JNE9-pBjjfQZ0Hhd4,664
|
|
56
|
+
lybase/migrations/0003_auto_20241015_1628.pyc,sha256=JgZ0GyEg-ujUEDXAxP_Ucolu41znSeGNWI-hWpJHizU,850
|
|
57
|
+
lybase/migrations/0004_auto_20241028_1612.pyc,sha256=yh2yYiK4_djxzlFrajgTcYxn1SU7V4-79iTbFr6qppU,1446
|
|
58
|
+
lybase/migrations/0005_languagedata.pyc,sha256=Tp-eXCv1MZiPk7HdundxA5aoOXJKHw4EGL39VHKbWs8,1445
|
|
59
|
+
lybase/migrations/0006_language_languageproject.pyc,sha256=FTkzNHv4Uefv7Iq1TloUXh4INGI3dLMYc_-pk1-r6hI,1817
|
|
60
|
+
lybase/migrations/0007_auto_20241113_1054.pyc,sha256=0u2c2kyPak-AOyO671eEqhnKOi-As1QHyfZ8AkmoI-A,1352
|
|
61
|
+
lybase/migrations/0008_auto_20241119_1130.pyc,sha256=tijeLa6g-ljtGHL2b7iPTdaA6CBFciwkTAFh24cwjyk,1081
|
|
62
|
+
lybase/migrations/0009_auto_20241119_1517.pyc,sha256=hkcuQPck9XfJ25axefC98AqX7aAgT69dXNyWMDSThO8,916
|
|
63
|
+
lybase/migrations/0010_auto_20241119_1732.pyc,sha256=bCDZcGaaw2jGDpfQt1LIjhFVuechYqpqt9Ux7V3b3t4,647
|
|
64
|
+
lybase/migrations/0011_sqlite3_parameter_is_edit_array.pyc,sha256=lym36U56CHmnXcz21bpPltAgfVH0QkHQ1jzdVsISQp8,727
|
|
65
|
+
lybase/migrations/0012_sqlite3_parameter_is_m2m.pyc,sha256=yBg9_xnr1TJcCCkkEys_1kEwGNYB5PQ-ycMnoG8jffo,643
|
|
66
|
+
lybase/migrations/0013_auto_20241125_1447.pyc,sha256=17M88e8JjGbxZ5edlQvDvjzrmrQHaflRAfVGOwX8VdI,659
|
|
67
|
+
lybase/migrations/0014_auto_20250116_1458.pyc,sha256=G6i1rzzcrpVcXSw4Qed3oGbnQaLq6e8XqlhHUTL2bpw,1901
|
|
68
|
+
lybase/migrations/0015_auto_20250123_1015.pyc,sha256=AU3j8dHOgcaiEEXJmBWEEgEpaBph3pxtZNHsuXF7OvE,969
|
|
69
|
+
lybase/migrations/0016_sqlite3_pageinfo_remote_page_query_code_json.pyc,sha256=ISoOfBGKpH6M0OHxW3ymJ4feC0b0DbunUWPweGo9-T0,682
|
|
70
|
+
lybase/migrations/0017_sqlite3_parameter_post_url.pyc,sha256=P3FN91gAtCbPBrUnxj_l6e21MDZ2870Q01CKfuv5wlM,679
|
|
71
|
+
lybase/migrations/0018_sqlite3_pageinfo_is_operation.pyc,sha256=sKNkQ__bnG5kDbIK6tffgbFj4J77QNeEoPsI95XU5j0,651
|
|
72
|
+
lybase/migrations/__init__.pyc,sha256=34Eq43Z23Re6yZJVh7fbWi9f6wbb-V2pe7WTFYCsB5E,137
|
|
73
|
+
lybase/models.pyc,sha256=5kOPN-xXl_rNRtKebTGvhjC3cqkGgt96BiscPHyQQKU,10440
|
|
74
|
+
lybase/models/__init__.pyc,sha256=Wk_vp9u88txA2sVW6GgddcHSA099lDk-IXydCt_kPCA,429
|
|
75
|
+
lybase/models/models.pyc,sha256=5CoPI4kgEUTp910NQQUv-x8FMHlsK8rAdCh14nlHGg0,10447
|
|
76
|
+
lybase/signals/__init__.pyc,sha256=qn-w4MxHfm58p32arBkSxDtJbBsx5SN0f5PHJAHmmsY,134
|
|
77
|
+
lybase/signals/batch_update.pyc,sha256=83H9BS09cT2h5uptOvIf33JLQnNMeEhFmYpesoiEH38,251
|
|
78
|
+
lybase/static/lybase/favicon-16x16.png,sha256=ryStYE3Xs7zaj5dauXMHX0ovcKQIeUShL474tjo-B8I,665
|
|
79
|
+
lybase/static/lybase/favicon-32x32.png,sha256=PtYS9B4FDKXnAAytbxy-fn2jn2X8qZwC6Z5lkQVuWDc,628
|
|
80
|
+
lybase/static/lybase/index.css,sha256=kySAfUJFZaFjm7KfN1TI1NRcEAnGdnTpluMzVfaSnOc,202
|
|
81
|
+
lybase/static/lybase/swagger-initializer.js,sha256=qJUDTyTxLXzYHsR8mNpPFXIdnZqNJAXyLyFwSCH4HQI,539
|
|
82
|
+
lybase/static/lybase/swagger-ui-bundle.js,sha256=wuSp7wgUSDn_R8FCAgY-z-TlnnCk5xVKJr1Q2IDIi6E,1452753
|
|
83
|
+
lybase/static/lybase/swagger-ui-bundle.js.map,sha256=XA0HBcAHnjwbJK6IBi38JZaPT5dU3o-hTLtUiviZaVQ,1920878
|
|
84
|
+
lybase/static/lybase/swagger-ui-es-bundle-core.js,sha256=ong0_WujlHwQEY2sP4erkdwACSbXJQNvfbZ1i2xPthw,462121
|
|
85
|
+
lybase/static/lybase/swagger-ui-es-bundle-core.js.map,sha256=XYzPSfuw9SVUyroAs_y0D311I9YOs-Vm-uQOMCw28Xw,1572111
|
|
86
|
+
lybase/static/lybase/swagger-ui-es-bundle.js,sha256=61hgpK_46c23dTBWc57hckzIm6qqsybnXTk2Bi4GtVE,1452507
|
|
87
|
+
lybase/static/lybase/swagger-ui-es-bundle.js.map,sha256=Fx8FqHESauTfZu1AoD33rQuXMatMMv32mjq7jP7TW7I,1912421
|
|
88
|
+
lybase/static/lybase/swagger-ui-standalone-preset.js,sha256=M7em9a_KxJAv35MoG-LS4S2xXyQdOEYG5ubRd0W3-G8,230293
|
|
89
|
+
lybase/static/lybase/swagger-ui-standalone-preset.js.map,sha256=Y2JB5Bwr5afywvXmw_lyIRGbefR6zvxhsglWioWFv9Q,330036
|
|
90
|
+
lybase/static/lybase/swagger-ui.css,sha256=QBcPDuhZ0X-SExunBzKaiKBw5PZodNETZemnfSMvYRc,152071
|
|
91
|
+
lybase/static/lybase/swagger-ui.css.map,sha256=bLvRANTpWbEC1UqIjl-iHgXa-EihrW2sNrhKa-K6Fqw,262651
|
|
92
|
+
lybase/static/lybase/swagger-ui.js,sha256=y9GjaHRy0CW0GkmDb8DllnnX_Y6rOBaNUbQ55zC3eKE,339321
|
|
93
|
+
lybase/static/lybase/swagger-ui.js.map,sha256=7fskYxkvl8njTCTbzRK_P99pGrNrC9Vf8lhtynLW8cw,1159517
|
|
94
|
+
lybase/templates/lybase/index.html,sha256=-IY8Qc4Myq0GE_AQ-4uwP1T1FkxoKhP0EtIvHIlgja4,1329
|
|
95
|
+
lybase/templates/lybase/oauth2-redirect.html,sha256=OX_TCiSZzSxfNBGt4Mp_vXhtUBFjnKeKBoJNWAuDwSI,2715
|
|
96
|
+
lybase/tests.pyc,sha256=9ynguCf0cXDMoXrWKYvllqfw4hnMzeaPO0mALrsWwCo,167
|
|
97
|
+
lybase/views.pyc,sha256=SOTUxPwD5hqS9jlUjtwPFfKEl959qjPtLJbiXSNu6fU,49662
|
|
98
|
+
lybase/views_base.pyc,sha256=A0YNPmW8Se5XfQgiMv8VXeaggjnoJ3PhwQcptf3kF-I,9250
|
|
99
|
+
lybase/views_convert_excel_data.pyc,sha256=rpE4J8rMhn8VDwSj2w1aS98u-STUf9gOHw3thB3gRbw,4983
|
|
100
|
+
lybase/views_dev.pyc,sha256=xPTpk8mlSE9nuwhqvMGCZXcU-X7O65ulEsi6ujKhUqs,14931
|
|
101
|
+
lybase/views_swagger.pyc,sha256=E7mzDCSLXPBonyT1MyjpKAH1P6-hniTHWM1lHMzAwkY,7751
|
|
102
|
+
lybase/views_swagger_tools.pyc,sha256=8Coeo8JvDg1AqEeVtWpQolxfU_FpcXST_viAn0eoUIs,2098
|
|
103
|
+
util/__init__.pyc,sha256=zIHViilzFKlIIYyANmgieVOaE_WcYFMiwGG-OWyhSxk,148
|
|
104
|
+
util/api_tools.pyc,sha256=9KtFxfhepHChPbJgWd_sRNtTg5hs3Z0PsDE9fm7jS_k,1211
|
|
105
|
+
util/assets/word.data,sha256=vbA-2pvSS_ArnkQeIUejR2qKpEzHE6SlvsHuwcTJdeU,377047
|
|
106
|
+
util/auth.pyc,sha256=PoS1GhWKTz-mXx-4HTCLs74mIsbqM2FB3OshtLrtTzo,1845
|
|
107
|
+
util/base_data.pyc,sha256=kzr9lMBZevtkscIVZzG1HrB-WAVH997cK5mH32nZ9B8,27549
|
|
108
|
+
util/base_model_fields.pyc,sha256=KMViMLRu__DTyrfiUgjWaqD6ujgMHc0mYNT4leOnUts,7461
|
|
109
|
+
util/basemodel.pyc,sha256=mWug5ZMa_Ylmf1m6QzkczZlSJ94wnaZd1ZMPIXX2xP4,21518
|
|
110
|
+
util/basetest.pyc,sha256=AohWx8-T33QJRv6wet_mBidk0elpmDul1WQyMdYjDqA,1585
|
|
111
|
+
util/celery_task.pyc,sha256=UqFB7XHxJ3TZn1Cez4_YccqLL-51Rb2csOrfHU_4sKw,3739
|
|
112
|
+
util/common.pyc,sha256=AgqCpIGqEpRifxo9y0d8wuJIr6EhFMK1qJNJ8A-LduM,186
|
|
113
|
+
util/consul_util.pyc,sha256=k9DkTSlvEDM6xL3kfCLJv8CFQCgSSL6noOcWJj1f0so,4722
|
|
114
|
+
util/custom_opc_data.pyc,sha256=zhtLmJ9alIoIho2LeLiDpE5cRyAhTQ-zGeODeSJHRwI,2268
|
|
115
|
+
util/db_router/__init__.pyc,sha256=aPfVRTdeVo2brVIguWTH1PBcfweO7bbcFCP4CJVo2AA,134
|
|
116
|
+
util/db_router/session_router.pyc,sha256=cwgQuX9XUtUg2XpOgh7V-xsC9pArhZM8InJjGuQKzjU,1282
|
|
117
|
+
util/ding_oa/__init__.pyc,sha256=g_7AdHgiHKkGLFlWlkHEmGYfhEfJoLWC667iD297QBs,132
|
|
118
|
+
util/ding_oa/ding_9a0_machine.pyc,sha256=Y8FM_Ei_lbdrBGS9ncN49Xm61efq9sUeDt1E59vrwbA,3296
|
|
119
|
+
util/ding_oa/ding_callback_crypto3.pyc,sha256=tQB1S7nCcIiNDe-iXlb0TMRGfG2B-r7S-cOlv9ROjrQ,4952
|
|
120
|
+
util/ding_oa/ding_db.pyc,sha256=RQGSakd57HrJUkeg4WJZu6sJxL8VifImPhcjUud8w7s,2486
|
|
121
|
+
util/ding_oa/ding_oa_process.pyc,sha256=9ut_LFePORtt7JgD1z_ugpyrhK_MajUFB0N0Yb08KPw,5399
|
|
122
|
+
util/ding_tools.pyc,sha256=SvBR9PB22hyNs2b9aVyPWmxk0SCnWuc3i-q2ZZn52Gs,1892
|
|
123
|
+
util/email_tools.pyc,sha256=6nyl5XEwn9uOYUzX_ltxe6S6qHQi5qrlvrQEHC2tTyE,1790
|
|
124
|
+
util/emailtools.pyc,sha256=JAAwWSx6G64Ir3GVM_TBpP5odC7T--tSOJJBs7Yw6fU,1951
|
|
125
|
+
util/emoji.pyc,sha256=NeQ4bD55i6UT6BW5vSttwXgebnGkAzfqGvMZeae9ldY,938
|
|
126
|
+
util/error_middle.pyc,sha256=TcImuRztophZ4UvCy4zioPxlc1X2vR05Np_z9pXqAfg,2544
|
|
127
|
+
util/file_tools.pyc,sha256=eyR9Ork-jW_Dr3QDaa7mtqT4ODEG3SZ9de1D56BvMPc,1516
|
|
128
|
+
util/formate_datetime.pyc,sha256=ph6p1USp0tjvSIRKj0y2cTpbigmlPmxOE9SEjCay0Q4,3379
|
|
129
|
+
util/formula_tools.pyc,sha256=7mpXMHo5YFiX5gAVKMMpbav8kjNOpuy-idGdFQ8CqvY,5454
|
|
130
|
+
util/formula_tools2.pyc,sha256=ly90Hc9uH77lGhTdtk9FfTfO6yDkQVMZIog90fD2kIw,8452
|
|
131
|
+
util/func_tools.pyc,sha256=Akn_4wOu0_3XaEBfZPNw87MlTYakL9kaSs17OjdtpFo,677
|
|
132
|
+
util/image_tools.pyc,sha256=OSnllQxSrQLXms7LvsRAz6HJth0uJk3ee0SXOthbjhM,908
|
|
133
|
+
util/influx_client.pyc,sha256=QOQXYR1xGGOhHsFvDEFSB1WtHroVVsD3xyB0QYrACkM,1060
|
|
134
|
+
util/influxdb_tools.pyc,sha256=7g7Ajhktf7HQZ4EJ9OIkaK5JaHQG440Pje51_3LHNww,2500
|
|
135
|
+
util/java2python_sessionengine.pyc,sha256=PyNwFlETbQJwqjV8jstzc5OavF3BziJ7accjB0PCkfc,1119
|
|
136
|
+
util/jsonresult.pyc,sha256=KdOxufGTgjsIMRynF4ZJZDPwDT8qb9WPX31CKqYKhDs,9134
|
|
137
|
+
util/jyx_tools.pyc,sha256=De9Op0l4gh6qb27BTCXNMKE5GQa55FuUh7zFoS-xwUQ,372
|
|
138
|
+
util/link_ding_talk.pyc,sha256=9s6KdrDOyoBqjb1jInj40hs5CtxXpdZ4rTz-S91XT2g,5640
|
|
139
|
+
util/liyuoa_tools.pyc,sha256=Dekfkr0JadCv6q-piPaITh9_Y7jiSY3bJe-Nz5xn5Tk,1142
|
|
140
|
+
util/login_appapi.pyc,sha256=G8POAWgR0VH-dWik2ngYHfOGFGPT3zry5pM1f9nLJYo,9912
|
|
141
|
+
util/login_org_person.pyc,sha256=RfQIk7RvZGMN0tvd92r_-JSOFr2IeUOO7Fds1kkLA7o,3669
|
|
142
|
+
util/loginrequired.pyc,sha256=5A7qf2f8MBwntYoDImauCwZFOaiOKBIi9lPM_vI8drs,18598
|
|
143
|
+
util/middleware.pyc,sha256=StPA_50YC8YbSEmjNMo-9-TPS-GzJyZ8Cj9NCrRYiVk,10455
|
|
144
|
+
util/model_base_fun.pyc,sha256=nS8j_ZwJhNEBYY0AnIrnZslFCcTlUzEJ0XtRbPpN_S4,1135
|
|
145
|
+
util/model_tools.pyc,sha256=c2F9dVjimGajijM5YIFMD_mf6g6AgfTCHP2UILXeoXs,1310
|
|
146
|
+
util/models_mongodb.pyc,sha256=LpiePgijVf4e0XBmxpvM9gnQsCwG2jTiZWacJUizdeg,9561
|
|
147
|
+
util/notice.pyc,sha256=ycQkWuhpnOROH0lyeKW1mleqv5UfAMNYg8bp6lWKogE,8123
|
|
148
|
+
util/nsfile_tools.pyc,sha256=Ftg9BzDi9bko3hmZCn6xtdZdtdUMc_VB0vXY6JjvNh4,10502
|
|
149
|
+
util/org_tools.pyc,sha256=7wFy79EGzCdQgmZuIjbQx4j6-2rPYYJ6BiG01sFZPsA,6407
|
|
150
|
+
util/pickle_serializer.pyc,sha256=nNGJ4i2fKdNyJJA06VOHkmyny6TCYQFYd2NP4V93C68,698
|
|
151
|
+
util/pinyin.pyc,sha256=z4ovbAf4pdi9c4uoLUQEIgl9ow_K7OwSDC0HfpA4LYQ,1588
|
|
152
|
+
util/pymongo_util.pyc,sha256=QqtYwc7vWi5bqoqNJ2_bF_LqH2YNOubS22f-MyLQUrM,793
|
|
153
|
+
util/qrcode_utils.pyc,sha256=Lvv9XxjPj7DE988SS4VU-DJjM7BrXqzmEF0ij4BLq3A,1655
|
|
154
|
+
util/remove_symbol.pyc,sha256=sak1IrzOHF0J6x0qt2afX678F09wlpSOAt7YwZIVvwA,543
|
|
155
|
+
util/request_tools.pyc,sha256=NMcXRmtdIJr0MUudhNaR5FtcsKzTjFXnzwqQDgeksns,759
|
|
156
|
+
util/sql_middleware.pyc,sha256=hpn4MgHQ_Zhtu3WUbsliJqMl3N-YwTAJklUy6D18yf4,3714
|
|
157
|
+
util/sys_utils.pyc,sha256=-j6ofFeEPd_1odqZqy9j298YiRGwe9MJ8fyLz3DFkjk,1711
|
|
158
|
+
util/time_utils.pyc,sha256=ZPToEJZ3Xh_TWzHYQzt_9dQFO_JKeF1JwlXPb5IQKvs,737
|
|
159
|
+
util/tools.pyc,sha256=ptHoepNXafztHe53tnHC2IrRfDTkgwxPdOSFfgFoR7A,13609
|
|
160
|
+
util/url_util.pyc,sha256=U4A-gZk9xU_66fRanxZu2FO3ZwW8Jhp8FAj9ilEKMEc,393
|
|
161
|
+
util/wechat_pay.pyc,sha256=YDHObKg-qSBE2pU0en-CdsA8W_sAWkcqKGQZ9kZGgPg,2880
|
|
162
|
+
util/wechat_tools.pyc,sha256=QhACPyXo_Y-mZ8adicNTNoHc-cK6nOOEN_3Cvni_CnY,2381
|
|
163
|
+
util/xml_handler.pyc,sha256=PEIDHmpNuLq5VDCn0SpglXEm_jYmbf75LfL_ELg0jBE,1157
|
util/__init__.pyc
ADDED
|
Binary file
|
util/api_tools.pyc
ADDED
|
Binary file
|