deepfos 1.1.68__tar.gz → 1.1.69__tar.gz
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.
- {deepfos-1.1.68 → deepfos-1.1.69}/CHANGELOG.md +7 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/PKG-INFO +1 -1
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/_version.py +3 -3
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/exceptions/__init__.py +1 -1
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/msg.py +21 -7
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.68 → deepfos-1.1.69}/.gitattributes +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/.gitignore +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/MANIFEST.in +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/README.md +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/account.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/app.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/base.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deep_pipeline.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/deepmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deep_pipeline.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/deepmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/system.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/python.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/space.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/system.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/cache.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/config.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/edb.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/base.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deep_pipeline.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/deepmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/journal.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lazy.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/edb_lexer.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/local.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/options.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos/translation.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/requirements.txt +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/setup.cfg +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/setup.py +0 -0
- {deepfos-1.1.68 → deepfos-1.1.69}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-08-
|
|
11
|
+
"date": "2025-08-13T05:47:18+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "8ee03bc48deaa7e1f492dac1690e50b4097da6ea",
|
|
15
|
+
"version": "1.1.69"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -200,7 +200,7 @@ class MsgCenterError(DeepfosBaseException):
|
|
|
200
200
|
self.reasons = reasons
|
|
201
201
|
|
|
202
202
|
def __str__(self):
|
|
203
|
-
return '
|
|
203
|
+
return '推送失败,响应错误详情:\n' + '\n'.join([str(r.dict()) for r in self.reasons])
|
|
204
204
|
|
|
205
205
|
|
|
206
206
|
# -----------------------------------------------------------------------------
|
|
@@ -111,7 +111,8 @@ class AsyncMsgCenter:
|
|
|
111
111
|
content_param: Dict[str, str] = None,
|
|
112
112
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
113
113
|
cc_email: List[str] = None,
|
|
114
|
-
api_idx: Literal[0, 1] = 0
|
|
114
|
+
api_idx: Literal[0, 1] = 0,
|
|
115
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
115
116
|
) -> List:
|
|
116
117
|
payload = {
|
|
117
118
|
'receiver': receivers,
|
|
@@ -139,7 +140,11 @@ class AsyncMsgCenter:
|
|
|
139
140
|
|
|
140
141
|
api = self.type_api_map[tpl_type][api_idx]
|
|
141
142
|
resp = await api(payload)
|
|
142
|
-
if resp.failure
|
|
143
|
+
if resp.failure and (
|
|
144
|
+
success_rule == 'all' or (
|
|
145
|
+
success_rule == 'partial' and not resp.success
|
|
146
|
+
)
|
|
147
|
+
):
|
|
143
148
|
raise MsgCenterError(*resp.failure)
|
|
144
149
|
|
|
145
150
|
return resp.success
|
|
@@ -153,6 +158,7 @@ class AsyncMsgCenter:
|
|
|
153
158
|
title_param: Dict[str, str] = None,
|
|
154
159
|
content_param: Dict[str, str] = None,
|
|
155
160
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
161
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
156
162
|
) -> List:
|
|
157
163
|
"""推送指定消息模版的消息
|
|
158
164
|
|
|
@@ -164,6 +170,7 @@ class AsyncMsgCenter:
|
|
|
164
170
|
title_param: 可选,标题变量
|
|
165
171
|
content_param: 可选,内容变量
|
|
166
172
|
attachments: 可选,站内消息或邮箱的消息附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
|
|
173
|
+
success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
|
|
167
174
|
|
|
168
175
|
.. admonition:: 示例
|
|
169
176
|
|
|
@@ -217,7 +224,7 @@ class AsyncMsgCenter:
|
|
|
217
224
|
return await self._publish(
|
|
218
225
|
template, sender=sender, receivers=receivers,
|
|
219
226
|
title_param=title_param, content_param=content_param,
|
|
220
|
-
attachments=attachments,
|
|
227
|
+
attachments=attachments, success_rule=success_rule,
|
|
221
228
|
)
|
|
222
229
|
|
|
223
230
|
async def send_mail(
|
|
@@ -229,6 +236,7 @@ class AsyncMsgCenter:
|
|
|
229
236
|
content_param: Dict[str, str] = None,
|
|
230
237
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
231
238
|
cc_email: List[str] = None,
|
|
239
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
232
240
|
) -> List:
|
|
233
241
|
"""发送指定消息模版的邮件
|
|
234
242
|
|
|
@@ -240,6 +248,7 @@ class AsyncMsgCenter:
|
|
|
240
248
|
content_param: 可选,内容变量
|
|
241
249
|
attachments: 可选,附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
|
|
242
250
|
cc_email: 可选,抄送人列表
|
|
251
|
+
success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
|
|
243
252
|
|
|
244
253
|
|
|
245
254
|
.. admonition:: 示例
|
|
@@ -289,7 +298,7 @@ class AsyncMsgCenter:
|
|
|
289
298
|
template, sender=sender, receivers=receivers,
|
|
290
299
|
title_param=title_param, content_param=content_param,
|
|
291
300
|
attachments=attachments, cc_email=cc_email,
|
|
292
|
-
api_idx=1
|
|
301
|
+
api_idx=1, success_rule=success_rule,
|
|
293
302
|
)
|
|
294
303
|
|
|
295
304
|
async def send_sms(
|
|
@@ -298,7 +307,8 @@ class AsyncMsgCenter:
|
|
|
298
307
|
receivers: List[str],
|
|
299
308
|
sender: str = None,
|
|
300
309
|
title_param: Dict[str, str] = None,
|
|
301
|
-
content_param: Dict[str, str] = None
|
|
310
|
+
content_param: Dict[str, str] = None,
|
|
311
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
302
312
|
) -> List:
|
|
303
313
|
"""发送指定消息模版的短信
|
|
304
314
|
|
|
@@ -308,6 +318,7 @@ class AsyncMsgCenter:
|
|
|
308
318
|
sender: 可选,发送人userid,默认为当前用户id
|
|
309
319
|
title_param: 可选,标题变量
|
|
310
320
|
content_param: 可选,内容变量
|
|
321
|
+
success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
|
|
311
322
|
|
|
312
323
|
|
|
313
324
|
.. admonition:: 示例
|
|
@@ -351,7 +362,7 @@ class AsyncMsgCenter:
|
|
|
351
362
|
return await self._publish(
|
|
352
363
|
template, sender=sender, receivers=receivers,
|
|
353
364
|
title_param=title_param, content_param=content_param,
|
|
354
|
-
api_idx=1
|
|
365
|
+
api_idx=1, success_rule=success_rule,
|
|
355
366
|
)
|
|
356
367
|
|
|
357
368
|
|
|
@@ -368,6 +379,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
|
|
|
368
379
|
title_param: Dict[str, str] = None,
|
|
369
380
|
content_param: Dict[str, str] = None,
|
|
370
381
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
382
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
371
383
|
) -> List:
|
|
372
384
|
...
|
|
373
385
|
|
|
@@ -380,6 +392,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
|
|
|
380
392
|
content_param: Dict[str, str] = None,
|
|
381
393
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
382
394
|
cc_email: List[str] = None,
|
|
395
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
383
396
|
) -> List:
|
|
384
397
|
...
|
|
385
398
|
|
|
@@ -389,6 +402,7 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
|
|
|
389
402
|
receivers: List[str],
|
|
390
403
|
sender: str = None,
|
|
391
404
|
title_param: Dict[str, str] = None,
|
|
392
|
-
content_param: Dict[str, str] = None
|
|
405
|
+
content_param: Dict[str, str] = None,
|
|
406
|
+
success_rule: Literal['partial', 'all'] = 'all'
|
|
393
407
|
) -> List:
|
|
394
408
|
...
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|