deepfos 1.1.69__tar.gz → 1.1.70__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.69 → deepfos-1.1.70}/CHANGELOG.md +7 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/PKG-INFO +1 -1
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/_version.py +3 -3
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/system.py +2 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/msg.py +15 -3
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/PKG-INFO +1 -1
- {deepfos-1.1.69 → deepfos-1.1.70}/.gitattributes +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/.gitee/ISSUE_GUIDELINES.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/.gitee/ISSUE_TEMPLATE.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/.gitignore +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/MANIFEST.in +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/README.md +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/algo/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/algo/graph.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/models/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_1/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_2/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_2/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_2/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/V1_2/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/account.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/accounting_engines.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/app.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/approval_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/consolidation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/consolidation_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/datatable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/deep_pipeline.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/deepfos_task.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/journal_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/memory_financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/account.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/accounting_engines.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/app.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/approval_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/business_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/consolidation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/consolidation_process.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/datatable_mysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/deep_pipeline.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/deepfos_task.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/journal_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/memory_financial_model.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/platform.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/python.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/reconciliation_engine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/reconciliation_report.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/role_strategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/space.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/models/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/platform.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/python.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/reconciliation_engine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/reconciliation_report.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/role_strategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/space.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/system.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/api/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/jstream.c +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/jstream.pyx +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/pandas.c +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/pandas.pyx +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/py_jstream.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/boost/py_pandas.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/cache.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/config.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/_base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/constants.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/cube.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/formula.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/syscube.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/typing.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/cube/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/_base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/dimcreator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/dimexpr.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/dimmember.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/eledimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/filters.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/dimension/sysdimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/_cache.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/_operator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/nodemixin.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/sqlcondition.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/core/logictable/tablemodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/cipher.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/clickhouse.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/connector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/daclickhouse.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/dameng.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/damysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/dbkits.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/deepengine.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/deepmodel_kingbase.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/edb.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/gauss.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/kingbase.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/mysql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/oracle.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/postgresql.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/sqlserver.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/db/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/accounting.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/apvlprocess.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/base.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/bizmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/datatable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/deep_pipeline.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/deepconnector.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/deepmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/dimension.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/fact_table.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/finmodel.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/journal.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/journal_template.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/pyscript.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/reconciliation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/rolestrategy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/smartlist.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/variable.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/element/workflow.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/exceptions/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/exceptions/hook.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lazy.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/__init__.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/_javaobj.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/asynchronous.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/concurrency.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/constant.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/decorator.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/deepchart.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/deepux.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/discovery.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/edb_lexer.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/eureka.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/filterparser.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/httpcli.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/jsonstreamer.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/nacos.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/patch.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/redis.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/serutils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/stopwatch.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/subtask.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/sysutils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/lib/utils.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/local.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/options.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos/translation.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/SOURCES.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/dependency_links.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/not-zip-safe +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/requires.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/deepfos.egg-info/top_level.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/requirements.txt +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/setup.cfg +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/setup.py +0 -0
- {deepfos-1.1.69 → deepfos-1.1.70}/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-18T10:23:53+0000",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "1.1.
|
|
14
|
+
"full-revisionid": "7c62afcad8175dbdb4e323deb062c91083af3793",
|
|
15
|
+
"version": "1.1.70"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -954,6 +954,8 @@ class MsgPushHasAttachmentRequestVO(BaseModel):
|
|
|
954
954
|
params: Optional[List[MessageTemplateParamVO]] = None
|
|
955
955
|
#: 接收对象(用户/用户组)
|
|
956
956
|
receiver: List[MessageReceiverVO]
|
|
957
|
+
#: 抄送对象(用户/用户组)
|
|
958
|
+
ccEmail: Optional[List[MessageReceiverVO]] = None
|
|
957
959
|
#: 发送人
|
|
958
960
|
sender: Optional[str] = None
|
|
959
961
|
#: 模板编码
|
|
@@ -110,7 +110,7 @@ class AsyncMsgCenter:
|
|
|
110
110
|
title_param: Dict[str, str] = None,
|
|
111
111
|
content_param: Dict[str, str] = None,
|
|
112
112
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
113
|
-
cc_email: List
|
|
113
|
+
cc_email: List = None,
|
|
114
114
|
api_idx: Literal[0, 1] = 0,
|
|
115
115
|
success_rule: Literal['partial', 'all'] = 'all'
|
|
116
116
|
) -> List:
|
|
@@ -158,7 +158,9 @@ class AsyncMsgCenter:
|
|
|
158
158
|
title_param: Dict[str, str] = None,
|
|
159
159
|
content_param: Dict[str, str] = None,
|
|
160
160
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
161
|
-
success_rule: Literal['partial', 'all'] = 'all'
|
|
161
|
+
success_rule: Literal['partial', 'all'] = 'all',
|
|
162
|
+
cc_users: List[str] = None,
|
|
163
|
+
cc_groups: List[str] = None,
|
|
162
164
|
) -> List:
|
|
163
165
|
"""推送指定消息模版的消息
|
|
164
166
|
|
|
@@ -171,6 +173,8 @@ class AsyncMsgCenter:
|
|
|
171
173
|
content_param: 可选,内容变量
|
|
172
174
|
attachments: 可选,站内消息或邮箱的消息附件,以 文件名: 文件(字符串/bytes) 的字典形式提供
|
|
173
175
|
success_rule: 可选,发送成功规则,'partial' 表示部分成功即可,'all' 表示所有收件人都必须成功
|
|
176
|
+
cc_users: 可选,抄送人userid列表
|
|
177
|
+
cc_groups: 可选,抄送人groupid列表
|
|
174
178
|
|
|
175
179
|
.. admonition:: 示例
|
|
176
180
|
|
|
@@ -217,6 +221,11 @@ class AsyncMsgCenter:
|
|
|
217
221
|
receivers.extend([{'id': r, 'type': 'USER'} for r in receiver_users])
|
|
218
222
|
if receiver_groups:
|
|
219
223
|
receivers.extend([{'id': r, 'type': 'GROUP'} for r in receiver_groups])
|
|
224
|
+
cc_email = []
|
|
225
|
+
if cc_users:
|
|
226
|
+
cc_email.extend([{'id': r, 'type': 'USER'} for r in cc_users])
|
|
227
|
+
if cc_groups:
|
|
228
|
+
cc_email.extend([{'id': r, 'type': 'GROUP'} for r in cc_groups])
|
|
220
229
|
|
|
221
230
|
if not receivers:
|
|
222
231
|
raise ValueError('需提供receiver_users和receiver_groups中的至少一项')
|
|
@@ -225,6 +234,7 @@ class AsyncMsgCenter:
|
|
|
225
234
|
template, sender=sender, receivers=receivers,
|
|
226
235
|
title_param=title_param, content_param=content_param,
|
|
227
236
|
attachments=attachments, success_rule=success_rule,
|
|
237
|
+
cc_email=cc_email
|
|
228
238
|
)
|
|
229
239
|
|
|
230
240
|
async def send_mail(
|
|
@@ -379,7 +389,9 @@ class MsgCenter(AsyncMsgCenter, metaclass=SyncMeta):
|
|
|
379
389
|
title_param: Dict[str, str] = None,
|
|
380
390
|
content_param: Dict[str, str] = None,
|
|
381
391
|
attachments: Dict[str, Union[str, bytes]] = None,
|
|
382
|
-
success_rule: Literal['partial', 'all'] = 'all'
|
|
392
|
+
success_rule: Literal['partial', 'all'] = 'all',
|
|
393
|
+
cc_users: List[str] = None,
|
|
394
|
+
cc_groups: List[str] = None,
|
|
383
395
|
) -> List:
|
|
384
396
|
...
|
|
385
397
|
|
|
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
|