From 65b29e1a9d8737debed703cfe26b8e874721c6c7 Mon Sep 17 00:00:00 2001 From: Dan Funk Date: Thu, 23 Apr 2020 09:44:11 -0400 Subject: [PATCH] Don't just bomb out as soon as someone types an empty string. --- crc/api/workflow.py | 14 ++++++++++---- crc/services/workflow_processor.py | 2 +- tests/test_workflow_service.py | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/crc/api/workflow.py b/crc/api/workflow.py index 74de1462..7002e479 100644 --- a/crc/api/workflow.py +++ b/crc/api/workflow.py @@ -202,8 +202,14 @@ def lookup(workflow_id, task_id, field_id, query, limit): raise ApiError("unknown_field", "No field named %s in task %s" % (task_id, spiff_task.task_spec.name)) lookup_model = WorkflowService.get_lookup_table(spiff_task, field) - search_results = LookupDataModel.query.\ - filter(LookupDataModel.lookup_file_model == lookup_model).\ - filter(LookupDataModel.label.match("%s:*" % query)).limit(limit).all() + db_query = LookupDataModel.query.filter(LookupDataModel.lookup_file_model == lookup_model) - return LookupDataSchema(many=True).dump(search_results) \ No newline at end of file + query = query.strip() + if(len(query) > 1): + if(' ' in query): + query = ':* ||'.join(query.split(' ')) + db_query = db_query.filter(LookupDataModel.label.match("%s:*" % query)).limit(limit) + else: + db_query = db_query.filter(LookupDataModel.label.match("%s:*" % query)).limit(limit) + + return LookupDataSchema(many=True).dump(db_query.all()) \ No newline at end of file diff --git a/crc/services/workflow_processor.py b/crc/services/workflow_processor.py index b1054664..23dd572a 100644 --- a/crc/services/workflow_processor.py +++ b/crc/services/workflow_processor.py @@ -85,7 +85,7 @@ class CustomBpmnScriptEngine(BpmnScriptEngine): return eval(expression) except NameError as ne: raise ApiError.from_task('invalid_expression', - 'The expression you provided does not exist:' + expression, + "The expression '%s' you provided has a missing value. % s" % (expression, str(ne)), task=task) class MyCustomParser(BpmnDmnParser): diff --git a/tests/test_workflow_service.py b/tests/test_workflow_service.py index 5709a59f..0b2daf69 100644 --- a/tests/test_workflow_service.py +++ b/tests/test_workflow_service.py @@ -129,3 +129,5 @@ class TestWorkflowService(BaseTest): self.assertIsNotNone(lookup_records) self.assertEqual(2, len(lookup_records)) + def test_some_queries(self): + pass \ No newline at end of file