Skip to content

Commit f2925f3

Browse files
committed
fix: Defect of embedding application parameters as empty and reporting errors
--bug=1052184 --user=王孝刚 【github#2273】【应用】-有非必填接口传参的编排应用,作为节点加入新的编排应用后,接口传参为空时对话报错 https://www.tapd.cn/57709429/s/1654259
1 parent 0640d4c commit f2925f3

File tree

2 files changed

+30
-14
lines changed

2 files changed

+30
-14
lines changed

apps/application/flow/step_node/application_node/i_application_node.py

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111

1212
class ApplicationNodeSerializer(serializers.Serializer):
1313
application_id = serializers.CharField(required=True, error_messages=ErrMessage.char(_("Application ID")))
14-
question_reference_address = serializers.ListField(required=True, error_messages=ErrMessage.list(_("User Questions")))
14+
question_reference_address = serializers.ListField(required=True,
15+
error_messages=ErrMessage.list(_("User Questions")))
1516
api_input_field_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("API Input Fields")))
16-
user_input_field_list = serializers.ListField(required=False, error_messages=ErrMessage.uuid(_("User Input Fields")))
17+
user_input_field_list = serializers.ListField(required=False,
18+
error_messages=ErrMessage.uuid(_("User Input Fields")))
1719
image_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("picture")))
1820
document_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("document")))
1921
audio_list = serializers.ListField(required=False, error_messages=ErrMessage.list(_("Audio")))
20-
child_node = serializers.DictField(required=False, allow_null=True, error_messages=ErrMessage.dict(_("Child Nodes")))
22+
child_node = serializers.DictField(required=False, allow_null=True,
23+
error_messages=ErrMessage.dict(_("Child Nodes")))
2124
node_data = serializers.DictField(required=False, allow_null=True, error_messages=ErrMessage.dict(_("Form Data")))
2225

2326

@@ -33,11 +36,16 @@ def _run(self):
3336
self.node_params_serializer.data.get('question_reference_address')[1:])
3437
kwargs = {}
3538
for api_input_field in self.node_params_serializer.data.get('api_input_field_list', []):
36-
kwargs[api_input_field['variable']] = self.workflow_manage.get_reference_field(api_input_field['value'][0],
37-
api_input_field['value'][1:])
39+
value = api_input_field.get('value', [''])[0] if api_input_field.get('value') else ''
40+
kwargs[api_input_field['variable']] = self.workflow_manage.get_reference_field(value,
41+
api_input_field['value'][
42+
1:]) if value != '' else ''
43+
3844
for user_input_field in self.node_params_serializer.data.get('user_input_field_list', []):
39-
kwargs[user_input_field['field']] = self.workflow_manage.get_reference_field(user_input_field['value'][0],
40-
user_input_field['value'][1:])
45+
value = user_input_field.get('value', [''])[0] if user_input_field.get('value') else ''
46+
kwargs[user_input_field['field']] = self.workflow_manage.get_reference_field(value,
47+
user_input_field['value'][
48+
1:]) if value != '' else ''
4149
# 判断是否包含这个属性
4250
app_document_list = self.node_params_serializer.data.get('document_list', [])
4351
if app_document_list and len(app_document_list) > 0:
@@ -46,15 +54,17 @@ def _run(self):
4654
app_document_list[1:])
4755
for document in app_document_list:
4856
if 'file_id' not in document:
49-
raise ValueError(_("Parameter value error: The uploaded document lacks file_id, and the document upload fails"))
57+
raise ValueError(
58+
_("Parameter value error: The uploaded document lacks file_id, and the document upload fails"))
5059
app_image_list = self.node_params_serializer.data.get('image_list', [])
5160
if app_image_list and len(app_image_list) > 0:
5261
app_image_list = self.workflow_manage.get_reference_field(
5362
app_image_list[0],
5463
app_image_list[1:])
5564
for image in app_image_list:
5665
if 'file_id' not in image:
57-
raise ValueError(_("Parameter value error: The uploaded image lacks file_id, and the image upload fails"))
66+
raise ValueError(
67+
_("Parameter value error: The uploaded image lacks file_id, and the image upload fails"))
5868

5969
app_audio_list = self.node_params_serializer.data.get('audio_list', [])
6070
if app_audio_list and len(app_audio_list) > 0:
@@ -63,7 +73,8 @@ def _run(self):
6373
app_audio_list[1:])
6474
for audio in app_audio_list:
6575
if 'file_id' not in audio:
66-
raise ValueError(_("Parameter value error: The uploaded audio lacks file_id, and the audio upload fails."))
76+
raise ValueError(
77+
_("Parameter value error: The uploaded audio lacks file_id, and the audio upload fails."))
6778
return self.execute(**self.node_params_serializer.data, **self.flow_params_serializer.data,
6879
app_document_list=app_document_list, app_image_list=app_image_list,
6980
app_audio_list=app_audio_list,

apps/application/flow/step_node/application_node/impl/base_application_node.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,20 +220,25 @@ def execute(self, application_id, message, chat_id, chat_record_id, stream, re_c
220220
def get_details(self, index: int, **kwargs):
221221
global_fields = []
222222
for api_input_field in self.node_params_serializer.data.get('api_input_field_list', []):
223+
value = api_input_field.get('value', [''])[0] if api_input_field.get('value') else ''
223224
global_fields.append({
224225
'label': api_input_field['variable'],
225226
'key': api_input_field['variable'],
226227
'value': self.workflow_manage.get_reference_field(
227-
api_input_field['value'][0],
228-
api_input_field['value'][1:])
228+
value,
229+
api_input_field['value'][1:]
230+
) if value != '' else ''
229231
})
232+
230233
for user_input_field in self.node_params_serializer.data.get('user_input_field_list', []):
234+
value = user_input_field.get('value', [''])[0] if user_input_field.get('value') else ''
231235
global_fields.append({
232236
'label': user_input_field['label'],
233237
'key': user_input_field['field'],
234238
'value': self.workflow_manage.get_reference_field(
235-
user_input_field['value'][0],
236-
user_input_field['value'][1:])
239+
value,
240+
user_input_field['value'][1:]
241+
) if value != '' else ''
237242
})
238243
return {
239244
'name': self.node.properties.get('stepName'),

0 commit comments

Comments
 (0)