diff --git a/apps/bi/serializers.py b/apps/bi/serializers.py index 74338540..69f7a030 100644 --- a/apps/bi/serializers.py +++ b/apps/bi/serializers.py @@ -34,3 +34,4 @@ class DataExecSerializer(serializers.Serializer): query = serializers.JSONField( label="查询字典参数", required=False, allow_null=True) is_test = serializers.BooleanField(label='是否测试', default=False) + raise_exception = serializers.BooleanField(label='是否直接报错', default=False) diff --git a/apps/bi/views.py b/apps/bi/views.py index ed814e84..64193e33 100644 --- a/apps/bi/views.py +++ b/apps/bi/views.py @@ -54,7 +54,7 @@ class DatasetViewSet(CustomModelViewSet): return obj - @action(methods=['post'], detail=True, perms_map={'post': 'dataset.exec'}, serializer_class=DataExecSerializer, cache_seconds=0) + @action(methods=['post'], detail=True, perms_map={'post': 'dataset.exec'}, serializer_class=DataExecSerializer, cache_seconds=0, logging_methods=[]) def exec(self, request, pk=None): """执行sql查询 @@ -64,6 +64,7 @@ class DatasetViewSet(CustomModelViewSet): rdata = DatasetSerializer(instance=dt).data query = request.data.get('query', {}) is_test = request.data.get('is_test', False) + raise_exception = request.data.get('raise_exception', False) query['r_user'] = request.user.id query['r_dept'] = request.user.belong_dept.id if request.user.belong_dept else '' results = {} @@ -104,8 +105,11 @@ class DatasetViewSet(CustomModelViewSet): results[name], results2[name] = format_sqldata( res[0], res[1]) except Exception as e: - results[name] = 'error: ' + str(e) - can_cache = False + if raise_exception: + raise + else: + results[name] = 'error: ' + str(e) + can_cache = False rdata['data'] = results rdata['data2'] = results2 if rdata['echart_options'] and not rdata['echart_options'].startswith('function'):