42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
from apps.utils.serializers import CustomModelSerializer
 | 
						|
from apps.bi.models import Dataset, DatasetRecord
 | 
						|
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.get('sql_query', '')
 | 
						|
        if sql_query:
 | 
						|
            check_sql_safe(sql_query)
 | 
						|
        return attrs
 | 
						|
 | 
						|
 | 
						|
class DatasetSerializer(CustomModelSerializer):
 | 
						|
    class Meta:
 | 
						|
        model = Dataset
 | 
						|
        fields = '__all__'
 | 
						|
 | 
						|
class DatasetRecordSerializer(CustomModelSerializer):
 | 
						|
    class Meta:
 | 
						|
        model = DatasetRecord
 | 
						|
        fields = '__all__'
 | 
						|
 | 
						|
# class ReportSerializer(CustomModelSerializer):
 | 
						|
#     class Meta:
 | 
						|
#         model = Report
 | 
						|
#         fields = '__all__'
 | 
						|
#         read_only_fields = EXCLUDE_FIELDS
 | 
						|
 | 
						|
 | 
						|
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)
 |