MaxKB/apps/common/forms/slider_field.py
2025-04-17 18:01:33 +08:00

66 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding=utf-8
"""
@project: MaxKB
@Author
@file slider_field.py
@date2024/8/22 17:06
@desc:
"""
from typing import Dict
from common.exception.app_exception import AppApiException
from common.forms import BaseField, TriggerType, BaseLabel
from django.utils.translation import gettext_lazy as _
class SliderField(BaseField):
"""
滑块输入框
"""
def __init__(self, label: str or BaseLabel,
_min,
_max,
_step,
precision,
required: bool = False,
default_value=None,
relation_show_field_dict: Dict = None,
attrs=None, props_info=None):
"""
@param label: 提示
@param _min: 最小值
@param _max: 最大值
@param _step: 步长
@param precision: 保留多少小数
@param required: 是否必填
@param default_value: 默认值
@param relation_show_field_dict:
@param attrs:
@param props_info:
"""
_attrs = {'min': _min, 'max': _max, 'step': _step,
'precision': precision, 'show-input-controls': False, 'show-input': True}
if attrs is not None:
_attrs.update(attrs)
super().__init__('Slider', label, required, default_value, relation_show_field_dict,
{},
TriggerType.OPTION_LIST, _attrs, props_info)
def is_valid(self, value):
super().is_valid(value)
field_label = self.label.label if hasattr(self.label, 'to_dict') else self.label
if value is not None:
if value < self.attrs.get('min'):
raise AppApiException(500,
_("The {field_label} cannot be less than {min}").format(field_label=field_label,
min=self.attrs.get(
'min')))
if value > self.attrs.get('max'):
raise AppApiException(500,
_("The {field_label} cannot be greater than {max}").format(
field_label=field_label,
max=self.attrs.get(
'max')))