mangroveorg/datawinners

View on GitHub
support/find_language_conflict_questionnairs.py

Summary

Maintainability
A
0 mins
Test Coverage
# vim: ai ts=4 sts=4 et sw=4 encoding=utf-8
import logging
from find_all_db_managers import all_db_names
from mangrove.datastore.database import get_db_manager
import settings

db_server = "http://localhost:5984"
managers = all_db_names(db_server)

map_fun_project_docs = """
function(doc) {
    if (doc.document_type == 'FormModel' && !doc.void) {
        result ={}
        result[doc.form_code]={}
        result['no_active_lang']='False'

        no_lang = []
        act_lang = doc.metadata['activeLanguages']

        if(!act_lang){
           result['no_active_lang'] = 'True'
        }

        result['active_language'] = act_lang
        for (field in doc.json_fields){
            lang_list = []

            f_lang = doc.json_fields[field]['language']

            if(!f_lang){
                no_lang[no_lang.length]=field
            }else{
                if(doc.json_fields[field]['choices'])
                {
                    choices = doc.json_fields[field]['choices']
                    for(index in choices){
                        lang_list =[]
                        text = choices[index]['text']

                        for(lang_key in text){
                            lang_list[lang_list.length] = lang_key
                        }
                        if(lang_list.indexOf(f_lang) < 0){
                            result[doc.form_code]['lang_conflict'] = [f_lang, lang_list]
                        }
                    }
                }
            }
        }

        result[doc.form_code]['field_no_lang'] = no_lang

        if((result[doc.form_code]['field_no_lang'].length && doc.json_fields[field]['choices']) ||
            result[doc.form_code]['lang_conflict'].length || result['no_active_lang']=='True'){
            emit(doc.form_code, result)
        }
    }
}
"""

logger = logging.getLogger("django")

def find_subject():
    result = {}

    managers = all_db_names()
    for manager_name in managers:
        logger.info(manager_name)

        manager = get_db_manager(server=db_server, database=manager_name,credentials=settings.COUCHDBMAIN_CREDENTIALS)
        database_query = manager.database.query(map_fun_project_docs)
        if database_query:
            result[manager.database_name]=database_query
            logger.info("**********************pro found**********************" + manager_name)

find_subject()