from apps.utils.serializers import CustomModelSerializer from apps.bi.models import Dataset, Report from apps.utils.constants import EXCLUDE_FIELDS from rest_framework import serializers from apps.bi.services import check_sql_safe class DatasetCreateUpdateSerializer(CustomModelSerializer): class Meta: model = Dataset exclude = EXCLUDE_FIELDS def validate(self, attrs): sql_query = attrs['sql_query'] if sql_query: check_sql_safe(sql_query) return attrs class DatasetSerializer(CustomModelSerializer): class Meta: model = Dataset fields = '__all__' class ReportCreateUpdateSerializer(CustomModelSerializer): class Meta: model = Report exclude = EXCLUDE_FIELDS class ReportSerializer(CustomModelSerializer): class Meta: model = Report fields = '__all__' class ReportExecSerializer(serializers.Serializer): query = serializers.JSONField(label="查询字典参数", required=False, allow_null=True)