diff --git a/apps/bi/correct.py b/apps/bi/correct.py new file mode 100644 index 00000000..9cb4c94f --- /dev/null +++ b/apps/bi/correct.py @@ -0,0 +1,10 @@ +from apps.bi.models import Dataset + + +def correct_bi_test_param(): + dss = Dataset.objects.all() + for ds in dss: + if not ds.test_param and ds.default_param: + ds.test_param = ds.default_param + ds.default_param = {} + ds.save() diff --git a/apps/bi/migrations/0004_dataset_test_param.py b/apps/bi/migrations/0004_dataset_test_param.py new file mode 100644 index 00000000..cc503c26 --- /dev/null +++ b/apps/bi/migrations/0004_dataset_test_param.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2024-03-19 03:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bi', '0003_dataset_default_param'), + ] + + operations = [ + migrations.AddField( + model_name='dataset', + name='test_param', + field=models.JSONField(blank=True, default=dict, verbose_name='测试查询参数'), + ), + ] diff --git a/apps/bi/models.py b/apps/bi/models.py index b8f23fd4..b300b234 100644 --- a/apps/bi/models.py +++ b/apps/bi/models.py @@ -9,6 +9,7 @@ class Dataset(CommonBDModel): description = models.TextField('描述说明', default='', blank=True) sql_query = models.TextField('sql查询语句', default='', blank=True) echart_options = models.TextField(default='', blank=True) + test_param = models.JSONField('测试查询参数', default=dict, blank=True) default_param = models.JSONField('默认查询参数', default=dict, blank=True) cache_seconds = models.PositiveIntegerField('缓存秒数', default=10, blank=True) diff --git a/apps/bi/views.py b/apps/bi/views.py index cf528224..e47e265d 100644 --- a/apps/bi/views.py +++ b/apps/bi/views.py @@ -73,10 +73,12 @@ class DatasetViewSet(CustomModelViewSet): if dt.sql_query: try: + if dt.default_param: + query.update(dt.default_param) sql_f_ = check_sql_safe(dt.sql_query.format(**query)) except KeyError as e: - if is_test and dt.default_param: - new_query = dt.default_param + if is_test and dt.test_param: + new_query = dt.test_param new_query.update(query) try: sql_f_ = check_sql_safe(