Python Flask DateField отключает выходные - PullRequest
0 голосов
/ 21 марта 2019

Мне было интересно, можно ли добавить какую-либо проверку, чтобы убедиться, что выбранная дата не выходной? В настоящее время мой код выглядит так:

appointment_date = DateField('Appointment Date', format='%Y-%m-%d', default=date.today(), validators=[DateRange(min=date.today()), DataRequired()])

Какой самый простой способ сделать это? Спасибо

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Пользовательская проверка данных в WTForms может быть легко реализована путем определения пользовательского средства проверки https://wtforms.readthedocs.io/en/stable/validators.html#custom-validators. Это любой вызываемый объект, который принимает 2 позиционных аргумента, форму и поле и вызывает wtforms.ValidationError в случае сбоя проверки.

class WeekdayValidator(object):
    def __call__(self, form, field):
        if field.data and field.data.isoweekday() > 5:
            raise ValidationError("Date selected cannot be a weekend.")

Это может затем использоваться вместе с другими валидаторами в вашем определении поля.

appointment_date = DateField('Appointment Date', 
                             format='%Y-%m-%d',
                             default=date.today(), 
                             validators=[WeekdayValidator(), 
                                         DateRange(min=date.today()),
                                         DataRequired()])
0 голосов
/ 21 марта 2019

Чтобы проверить что-то вроде дня недели, загляните в документацию Python3, где показано что-то вроде:

>>> my_date = date(2002, 12, 4)
>>> my_date.isoweekday()
3

Где понедельник - день 1, а воскресенье - день 7.

источник: date.isoweekday ()

...