def get_date_form(answer=None, error_messages=None):
"""
Returns a date form metaclass with appropriate validators. Used in both date and
date range form creation.
:param error_messages: The messages during validation
:param answer: The answer on which to base this form
:return: The generated DateForm metaclass
"""
class DateForm(Form):
day = StringField()
year = StringField()
validate_with = [OptionalForm()]
if not error_messages:
date_messages = {}
else:
date_messages = error_messages.copy()
if answer['mandatory'] is True:
if 'validation' in answer and 'messages' in answer['validation'] \
and 'MANDATORY_DATE' in answer['validation']['messages']:
date_messages['MANDATORY_DATE'] = answer['validation']['messages']['MANDATORY_DATE']
validate_with = [DateRequired(message=date_messages['MANDATORY_DATE'])]
if 'validation' in answer and 'messages' in answer['validation'] \
and 'INVALID_DATE' in answer['validation']['messages']:
date_messages['INVALID_DATE'] = answer['validation']['messages']['INVALID_DATE']
validate_with += [DateCheck(date_messages['INVALID_DATE'])]
# Set up all the calendar month choices for select
month_choices = [('', 'Select month')] + [(str(x), calendar.month_name[x]) for x in range(1, 13)]
DateForm.month = SelectField(choices=month_choices, default='', validators=validate_with)
return DateForm
评论列表
文章目录