Beispiel #1
0
def _update_record_with_linked_id_details(dbm,
                                          record,
                                          linked_id_detail,
                                          questionnaire_id,
                                          nested=False):
    try:
        for linked_id_info in linked_id_detail:
            if nested:
                base_node = record
            else:
                code = linked_id_info['parent_code'] + '-' + linked_id_info[
                    'code'] if linked_id_info[
                        'parent_code'] else linked_id_info['code']
                base_node = record[questionnaire_id + '_' + code + '_details']

            value = base_node[linked_id_info['linked_code']]
            linked_entity = lookup_entity(dbm, value,
                                          [linked_id_info['linked_type']])
            base_node[linked_id_info['linked_code'] +
                      '_details'] = linked_entity
            if linked_id_info['children']:
                _update_record_with_linked_id_details(
                    dbm,
                    base_node[linked_id_info['linked_code'] + '_details'],
                    linked_id_info['children'],
                    questionnaire_id,
                    nested=True)
    except KeyError as key_err:
        return  #When linked ID doesn't have value, this happens and displays blank in view
    except Exception as e:
        logger.exception("Exception in constructing linked id info : \n%s" % e)
        return
Beispiel #2
0
def get_entity(dbm, entry, field, form_model, submission_doc):
    choice_to_entity_entry = entry
    original_field = form_model.get_field_by_code_and_rev(
        field.code, submission_doc.form_model_revision)
    if is_original_question_changed_from_choice_answer_type(
            original_field, field):
        choice_to_entity_entry = convert_choice_options_to_options_text(
            original_field, entry)
    return lookup_entity(dbm, choice_to_entity_entry,
                         [field.unique_id_type]), choice_to_entity_entry
Beispiel #3
0
def _update_name_unique_code(dbm, repeat_entries, fieldset_field):
    for entry in repeat_entries:
        for field in fieldset_field.fields:
            if isinstance(field, UniqueIdField):
                unique_code = entry.get(field.code)
                unique_id_name = lookup_entity(
                    dbm, str(unique_code), [field.unique_id_type]).get('q2')
                entry[field.code +
                      '_unique_code'] = unique_code if unique_code else ''
                entry[field.code] = unique_id_name
            elif isinstance(field, FieldSet):
                _update_name_unique_code(dbm, entry.get(field.code), field)