Exemple #1
0
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
Exemple #2
0
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
Exemple #4
0
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