示例#1
0
def addValidators(field, column, validators=None, getDBSes=None, model=None):
    if validators is None:
        validators = field.validators
    if not hasattr(field, 'extattrs'):
        field.extattrs = {}
    extattrs = field.extattrs
    if column.nullable:
        validators.append(Optional())
    elif not isinstance(column.type, types.Boolean):
        validators.append(InputRequired())
        field.label = RequiredLabel(field.label.field_id, field.label.text)
    if column.unique and getDBSes is not None and model is not None:
        validators.append(Unique(getDBSes, model, column))
    if isinstance(column.type, types.String) and column.type.length:
        validators.append(Length(max=column.type.length))
        extattrs['maxlength'] = column.type.length
    elif isinstance(column.type,
                    (types.Integer, types.SmallInteger, types.BigInteger,
                     types.Float, types.Numeric)):
        extattrs['maxlength'] = 15
        if not any(isinstance(v, NumberRange) for v in validators):
            # arbitary decision to forbid negatives unless otherwise allowed
            # TODO support HTML5 input[number] max and min?
            validators.append(NumberRange(min=0))
    for vtor in validators:
        flags = getattr(vtor, 'field_flags', ())
        for flag in flags:
            setattr(field.flags, flag, True)
示例#2
0
    def _parse_rules(self, field_name, rules):
        field_type = None
        validators = []

        for rule in rules:
            rule_name = rule
            rule_params = {}
            if isinstance(rule, tuple):
                rule_name, rule_params = rule

            if rule_name in self._DATA_TYPES:
                # Parse data type
                if not field_type:
                    field_type = self._DATA_TYPES[rule_name]
                else:
                    raise RuleException(
                        'Multiple data types defined for field: "{}"'.format(
                            field_name))
            else:
                # Parse validator
                validator = self._RULES_MAP.get(rule_name, None)
                if not validator:
                    raise RuleException(
                        'Undefined rule: "{}"'.format(rule_name))

                if isinstance(validator, types.FunctionType):
                    validators.append(validator)
                else:
                    validators.append(validator(**rule_params))

        field_type = StringField if not field_type else field_type
        return (field_type, validators)
示例#3
0
文件: forms.py 项目: trodjr/notify
def email_address(label='Email address', gov_user=True):
    validators = [
        Length(min=5, max=255),
        DataRequired(message='Can’t be empty'),
        ValidEmail()
    ]

    if gov_user:
        validators.append(ValidGovEmail())
    return EmailField(label, validators)
示例#4
0
def email_address(label='Email address', gov_user=True):
    validators = [
        Length(min=5, max=255),
        DataRequired(message='Can’t be empty'),
        Email(message='Enter a valid email address')
    ]

    if gov_user:
        validators.append(ValidGovEmail())
    return EmailField(label, validators)
def email_address(label=_l('Email address'), gov_user=True, required=True):
    if(label == "email address"):
        label = _l("email address")
    elif (label == "phone number"):
        label = _l("phone number")

    validators = [
        ValidEmail(),
    ]

    if gov_user:
        validators.append(ValidGovEmail())

    if required:
        validators.append(DataRequired(message=_l('Can’t be empty')))

    return EmailField(label, validators, render_kw={'spellcheck': 'false'})
示例#6
0
 def __init__(self, label=None, validators=None, **kwargs):
     validators = validators or []
     validators.append(validate_set)
     super(SetField, self).__init__(label=label,
                                    validators=validators,
                                    **kwargs)
示例#7
0
 def __init__(self, label=None, validators=None, **kwargs):
   validators = validators or []
   validators.append(validate_set)
   super(SetField, self).__init__(label=label, validators=validators, **kwargs)
示例#8
0
 def __init__(self, *args, validators=[], **kwargs):
     validators.append(EmptyOrValidatorValidator(wtforms.validators.Regexp('#([0-9a-f]{6})')))
     super().__init__(*args, validators=validators, **kwargs)
     self.widget = ColorWidget()
     self.data_default = {'red': None, 'green': None, 'blue': None}
     self.data = self.data_default