# coding=utf-8
"""
    @project: LZKB
    @Author：虎
    @file： SystemEncoder.py
    @date：2025/3/17 16:38
    @desc:
"""
import datetime
import decimal
import json
import uuid

from django.core.files.uploadedfile import InMemoryUploadedFile, TemporaryUploadedFile


class SystemEncoder(json.JSONEncoder):
    def encode(self, obj):
        # 先序列化为字符串
        json_str = super().encode(obj)
        # 移除所有空字符
        json_str = json_str.replace('\\u0000', '')
        return json_str

    def default(self, obj):
        if isinstance(obj, uuid.UUID):
            return str(obj)
        if isinstance(obj, datetime.datetime):
            return obj.strftime("%Y-%m-%d %H:%M:%S")
        if isinstance(obj, decimal.Decimal):
            return float(obj)
        if isinstance(obj, InMemoryUploadedFile):
            return {'name': obj.name, 'size': obj.size}
        if isinstance(obj, TemporaryUploadedFile):
            return {'name': obj.name, 'size': obj.size}
        else:
            return json.JSONEncoder.default(self, obj)
