2024-01-16 08:46:54 +00:00
|
|
|
|
# coding=utf-8
|
|
|
|
|
|
"""
|
|
|
|
|
|
@project: maxkb
|
|
|
|
|
|
@Author:虎
|
|
|
|
|
|
@file: common.py
|
|
|
|
|
|
@date:2024/1/11 18:44
|
|
|
|
|
|
@desc:
|
|
|
|
|
|
"""
|
|
|
|
|
|
from rest_framework import serializers
|
2025-01-13 03:15:51 +00:00
|
|
|
|
from django.utils.translation import gettext_lazy as _
|
2024-01-16 08:46:54 +00:00
|
|
|
|
|
2024-08-15 09:17:25 +00:00
|
|
|
|
class ObjectField(serializers.Field):
|
|
|
|
|
|
def __init__(self, model_type_list, **kwargs):
|
|
|
|
|
|
self.model_type_list = model_type_list
|
|
|
|
|
|
super().__init__(**kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def to_internal_value(self, data):
|
|
|
|
|
|
for model_type in self.model_type_list:
|
|
|
|
|
|
if isinstance(data, model_type):
|
|
|
|
|
|
return data
|
2025-01-13 03:15:51 +00:00
|
|
|
|
self.fail(_('Message type error'), value=data)
|
2024-08-15 09:17:25 +00:00
|
|
|
|
|
|
|
|
|
|
def to_representation(self, value):
|
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-01-16 08:46:54 +00:00
|
|
|
|
class InstanceField(serializers.Field):
|
|
|
|
|
|
def __init__(self, model_type, **kwargs):
|
|
|
|
|
|
self.model_type = model_type
|
|
|
|
|
|
super().__init__(**kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def to_internal_value(self, data):
|
|
|
|
|
|
if not isinstance(data, self.model_type):
|
2025-01-13 03:15:51 +00:00
|
|
|
|
self.fail(_('Message type error'), value=data)
|
2024-01-16 08:46:54 +00:00
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
def to_representation(self, value):
|
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FunctionField(serializers.Field):
|
|
|
|
|
|
|
|
|
|
|
|
def to_internal_value(self, data):
|
|
|
|
|
|
if not callable(data):
|
2025-01-13 03:15:51 +00:00
|
|
|
|
self.fail(_('not a function'), value=data)
|
2024-01-16 08:46:54 +00:00
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
def to_representation(self, value):
|
|
|
|
|
|
return value
|
2024-04-23 11:03:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UploadedImageField(serializers.ImageField):
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
|
|
super().__init__(**kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def to_representation(self, value):
|
|
|
|
|
|
return value
|
2024-07-05 11:02:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UploadedFileField(serializers.FileField):
|
|
|
|
|
|
def __init__(self, **kwargs):
|
|
|
|
|
|
super().__init__(**kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def to_representation(self, value):
|
|
|
|
|
|
return value
|