| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # coding=utf-8
- """
- @project: MaxKB
- @Author:虎
- @file: slider_field.py
- @date:2024/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')))
|