def get_month_year_form(answer, error_messages):
"""
Returns a month year form metaclass with appropriate validators. Used in both date and
date range form creation.
:param answer: The answer on which to base this form
:param error_messages: The messages to use upon this form during validation
:return: The generated MonthYearDateForm metaclass
"""
class MonthYearDateForm(Form):
year = StringField()
validate_with = [OptionalForm()]
if answer['mandatory'] is True:
error_message = error_messages['MANDATORY_DATE']
if 'validation' in answer and 'messages' in answer['validation'] \
and 'MANDATORY_DATE' in answer['validation']['messages']:
error_message = answer['validation']['messages']['MANDATORY_DATE']
validate_with = [DateRequired(message=error_message)]
if 'validation' in answer and 'messages' in answer['validation'] \
and 'INVALID_DATE' in answer['validation']['messages']:
error_message = answer['validation']['messages']['INVALID_DATE']
validate_with += [MonthYearCheck(error_message)]
else:
validate_with += [MonthYearCheck()]
# 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)]
MonthYearDateForm.month = SelectField(choices=month_choices, default='', validators=validate_with)
return MonthYearDateForm
评论列表
文章目录