def deserialise_dates(block_json, mapped_answers): answer_json_list = SchemaHelper.get_answers_for_block(block_json) # Deserialise all dates from the store date_answer_ids = [ a['id'] for a in answer_json_list if a['type'] == "Date" or a['type'] == 'MonthYearDate' ] for date_answer_id in date_answer_ids: if date_answer_id in mapped_answers: substrings = mapped_answers[date_answer_id].split("/") if len(substrings) == 3: del mapped_answers[date_answer_id] mapped_answers.update({ '{answer_id}-day'.format(answer_id=date_answer_id): substrings[0], '{answer_id}-month'.format(answer_id=date_answer_id): substrings[1].lstrip("0"), '{answer_id}-year'.format(answer_id=date_answer_id): substrings[2], }) elif len(substrings) == 2: del mapped_answers[date_answer_id] mapped_answers.update({ '{answer_id}-month'.format(answer_id=date_answer_id): substrings[0].lstrip("0"), '{answer_id}-year'.format(answer_id=date_answer_id): substrings[1], }) return mapped_answers
def test_form_ids_match_block_answer_ids(self): survey = load_schema_file("1_0102.json") block_json = SchemaHelper.get_block(survey, "reporting-period") error_messages = SchemaHelper.get_messages(survey) form = generate_form(block_json, {}, error_messages) for answer in SchemaHelper.get_answers_for_block(block_json): self.assertTrue(hasattr(form, answer['id']))
def map_errors(self): ordered_errors = [] answer_json_list = SchemaHelper.get_answers_for_block(block_json) for answer_json in answer_json_list: if answer_json[ 'id'] in self.errors and 'parent_answer_id' not in answer_json: ordered_errors += map_subfield_errors( self.errors, answer_json['id']) if 'options' in answer_json and 'parent_answer_id' not in answer_json: ordered_errors += map_child_option_errors( self.errors, answer_json) return ordered_errors
def get_name_form(block_json, error_messages): class NameForm(Form): pass for answer in SchemaHelper.get_answers_for_block(block_json): validate_with = [validators.optional()] if answer['mandatory'] is True: error_message = error_messages['MANDATORY'] if 'validation' in answer and 'messages' in answer['validation'] \ and 'MANDATORY' in answer['validation']['messages']: error_message = answer['validation']['messages']['MANDATORY'] validate_with = [validators.InputRequired(message=error_message, )] # Have to be set this way given hyphenated names # are considered invalid in python field = StringField(validators=validate_with) setattr(NameForm, answer['id'], field) return NameForm