def question_details(self, question_payload): new_question = question.Question() new_question.id = question_payload['QuestionID'] new_question.name = question_payload['DataExportTag'] new_question.prompt = self.strip_tags(question_payload['QuestionText']) new_question.type = question_payload['QuestionType'] if question_payload.get('Selector') is not None: new_question.subtype = question_payload['Selector'] return new_question
def singleMulti_into_multiselect(self, multiselect_question, matching_MC): multiselect_question.question_order = matching_MC.response_order for response in matching_MC.responses: sub_question = question.Question() sub_question.name = '%s_x%s' % (multiselect_question.name, response.value) sub_question.id = '%s_%s' % (multiselect_question.id, response.value) sub_question.code = response.value sub_question.prompt = response.label sub_question.add_dynamic_response('1', 1) multiselect_question.add_question(sub_question)
def matrix_into_multiselect(self, multiselect, matrix): multiselect.question_order = matrix.question_order for current_q in matrix.questions: sub_question = question.Question() sub_question.name = '%s_x%s' % (matrix.name, current_q.code) sub_question.id = '%s_%s' % (multiselect.id, current_q.code) sub_question.code = current_q.code sub_question.prompt = current_q.prompt sub_question.add_dynamic_response('1', 1) multiselect.add_question(sub_question)
def multiselect_into_multiselect(self, dynamic_multi, matching_multi): dynamic_multi.question_order = matching_multi.question_order for sub_question in matching_multi.questions: current_q = question.Question() current_q.name = '%s_x%s' % (dynamic_multi.name, sub_question.code) current_q.id = '%s_%s' % (dynamic_multi.id, sub_question.code) current_q.code = sub_question.code current_q.prompt = sub_question.prompt for response in sub_question.responses: current_q.add_dynamic_response(response.label, response.value) dynamic_multi.add_question(current_q)
def singleMulti_into_matrix(self, dynamic_matrix, matching_MC): dynamic_matrix.question_order = matching_MC.response_order for response in matching_MC.responses: sub_question = question.Question() sub_question.name = '%s_x%s' % (dynamic_matrix.name, response.value) sub_question.id = '%s_%s' % (dynamic_matrix.id, response.value) sub_question.code = response.value sub_question.prompt = response.label for sub_response in dynamic_matrix.temp_responses: sub_question.add_dynamic_response(sub_response.label, sub_response.value) dynamic_matrix.add_question(sub_question)
def multiselect_into_matrix(self, dynamic_matrix, matching_multiselect): dynamic_matrix.question_order = matching_multiselect.question_order for current_q in matching_multiselect.questions: sub_question = question.Question() sub_question.name = '%s_x%s' % (dynamic_matrix.name, current_q.code) sub_question.id = '%s_%s' % (dynamic_matrix.id, current_q.code) sub_question.code = current_q.code sub_question.prompt = current_q.prompt for sub_responses in dynamic_matrix.temp_responses: sub_question.add_dynamic_response(sub_responses.label, sub_responses.value) dynamic_matrix.add_question(sub_question)
def matrix_into_matrix(self, dynamic_matrix, matching_matrix): dynamic_matrix.question_order = matching_matrix.question_order for current_q in matching_matrix.questions: sub_question = question.Question() sub_question.name ='%s_x%s' % (dynamic_matrix.name, current_q.code) sub_question.id = '%s_%s' % (dynamic_matrix.name, current_q.code) sub_question.code = current_q.code sub_question.prompt = current_q.prompt for response in current_q.responses: sub_question.add_dynamic_response(response.label, response.value) dynamic_matrix.add_question(sub_question)
def question_details(self, question_payload, constant_sum): for code, parent_question in question_payload['Choices'].items(): sub_question = question.Question() sub_question.id = '%s_%s' % (constant_sum.id, code) sub_question.code = code sub_question.type = question_payload['QuestionType'] sub_question.subtype = question_payload['Selector'] sub_question.name = '%s_%s' % (constant_sum.name, code) sub_question.prompt = parent_question['Display'] sub_question.add_response(sub_question.prompt, sub_question.code) constant_sum.add_question(sub_question)
def question_details(self, question_payload, multiple_select): for code, parent_question in question_payload['Choices'].items(): sub_question = question.Question() sub_question.id = '%s_%s' % (multiple_select.id, code) sub_question.code = code sub_question.type = question_payload['QuestionType'] sub_question.subtype = question_payload['Selector'] sub_question.name = '%s_%s' % (multiple_select.name, code) sub_question.prompt = self.convert_prompt_from_byte_str(parent_question['Display'].encode('ascii', 'ignore')) sub_question.add_response('1',1) multiple_select.add_question(sub_question)
def question_details(self, hotspot, question_payload): for code, current_question in question_payload['Choices'].items(): sub_question = question.Question() sub_question.id = '%s_%s' % (hotspot.id, code) sub_question.code = code sub_question.type = question_payload['QuestionType'] sub_question.subtype = question_payload['Selector'] sub_question.name = '%s_%s' % (hotspot.name, code) sub_question.prompt = current_question['Display'] sub_question.add_response('0','1') sub_question.add_response('1','2') hotspot.add_question(sub_question)
def constantsum_match(self, dynamic_question, questions): matching_question = next((question for question in questions \ if question.id == dynamic_question.carry_forward_question_id), None) if matching_question.type == "CompositeMultipleSelect": dynamic_question.question_order = matching_question.question_order for current_q in matching_question.questions: sub_question = question.Question() sub_question.name ='%s_x%s' % (dynamic_question.name, current_q.code) sub_question.id = '%s_%s' % (dynamic_question.name, current_q.code) sub_question.code = current_q.code sub_question.prompt = current_q.prompt for response in current_q.responses: sub_question.add_dynamic_response(response.label, response.value) dynamic_question.add_question(sub_question)
def question_details(self, code, prompt, question_payload, responses): new_question = question.Question() new_question.id = '%s_%s' % (str(question_payload['QuestionID']), code) new_question.code = code new_question.type = question_payload['QuestionType'] if question_payload.get('SubSelector') is None: pass else: new_question.subtype = question_payload['SubSelector'] if question_payload['ChoiceDataExportTags']: new_question.name = question_payload['ChoiceDataExportTags'][code] else: new_question.name = '%s_%s' % (str(question_payload['DataExportTag']), code) new_question.prompt = self.strip_tags(prompt['Display'].encode('ascii', 'ignore')) new_question.response_order = question_payload['AnswerOrder'] for code, response in responses.items(): try: response_name = self.strip_tags(response['Display'].encode('ascii','ignore')) new_question.add_response(response_name, code) except: pass return new_question
def create_questions(self, question_data): questions = question.Questions() for response_row in question_data: question_name = response_row['variable'] question_prompt = response_row['prompt'] matching_question = questions.find_by_name(question_name) if matching_question: if response_row.get('value'): value = response_row['value'] else: value = '1' matching_question.add_response(response_row['label'], value) else: new_question = question.Question() new_question.name = question_name new_question.prompt = question_prompt if response_row.get('value'): value = response_row['value'] else: value = '1' new_question.add_response(response_row['label'], value) questions.add(new_question) return questions