def db_save_questionnaire_answers(store, internaltip_id, entries): ret = [] for key, value in entries.iteritems(): field_answer = models.FieldAnswer({ 'internaltip_id': internaltip_id, 'key': key }) store.add(field_answer) if isinstance(value, list): field_answer.is_leaf = False field_answer.value = "" n = 0 for entries in value: group = models.FieldAnswerGroup({ 'fieldanswer_id': field_answer.id, 'number': n }) store.add(group) group_elems = db_save_questionnaire_answers( store, internaltip_id, entries) for group_elem in group_elems: group.fieldanswers.add(group_elem) n += 1 else: field_answer.is_leaf = True field_answer.value = unicode(value) ret.append(field_answer) return ret
def db_save_answers_subject_to_stats(session, tid, internaltip_id, entries, stats=None): if stats is None: stats = { x[0]: True for x in session.query(models.Field.id).filter( models.Field.stats == True) } if not stats: return ret = [] for key, value in entries.items(): if key not in stats: continue field_answer = models.FieldAnswer({ 'tid': tid, 'internaltip_id': internaltip_id, 'key': key }) session.add(field_answer) session.flush() if isinstance(value, list): field_answer.is_leaf = False field_answer.value = "" n = 0 for elem in value: group = models.FieldAnswerGroup({ 'fieldanswer_id': field_answer.id, 'number': n, 'tid': tid, }) session.add(group) session.flush() group_elems = db_save_answers_subject_to_stats( session, tid, internaltip_id, elem, stats) for group_elem in group_elems: group_elem.fieldanswergroup_id = group.id n += 1 else: field_answer.is_leaf = True field_answer.value = str(value) ret.append(field_answer) return ret
def db_save_plaintext_answers(session, tid, internaltip_id, entries, skip_encryption=None): if skip_encryption is None: skip_encryption = { x[0]: True for x in session.query(models.Field.id).filter( models.Field.encrypt.is_(False)) } if not skip_encryption: return ret = [] for key, value in entries.items(): if key != 'value' and key not in skip_encryption: continue field_answer = models.FieldAnswer({ 'tid': tid, 'internaltip_id': internaltip_id, 'key': key }) session.add(field_answer) session.flush() if isinstance(value, list): field_answer.is_leaf = False field_answer.value = "" n = 0 for elem in value: group = models.FieldAnswerGroup({ 'fieldanswer_id': field_answer.id, 'number': n, 'tid': tid, }) session.add(group) session.flush() group_elems = db_save_plaintext_answers( session, tid, internaltip_id, elem, skip_encryption) for group_elem in group_elems: group_elem.fieldanswergroup_id = group.id n += 1 else: field_answer.is_leaf = True field_answer.value = value ret.append(field_answer) return ret
def db_save_questionnaire_answers(session, tid, internaltip_id, entries): ret = [] for key, value in entries.items(): field_answer = models.FieldAnswer({ 'internaltip_id': internaltip_id, 'key': key, 'tid': tid, }) session.add(field_answer) session.flush() if isinstance(value, list): field_answer.is_leaf = False field_answer.value = "" n = 0 for elem in value: group = models.FieldAnswerGroup({ 'fieldanswer_id': field_answer.id, 'number': n, 'tid': tid, }) session.add(group) session.flush() group_elems = db_save_questionnaire_answers( session, tid, internaltip_id, elem) for group_elem in group_elems: group_elem.fieldanswergroup_id = group.id n += 1 else: field_answer.is_leaf = True field_answer.value = text_type(value) ret.append(field_answer) return ret