示例#1
0
def filter_cases(filter_expr,
                 api_auth,
                 session_data=None,
                 form_context=None,
                 restore_xml=None,
                 force_sync=False,
                 uses_sqlite=False):
    session_data = session_data or {}
    form_context = form_context or {}

    modified_xpath = "join(',', instance('casedb')/casedb/case%(filters)s[@status= 'open']/@case_id)" % \
                     {"filters": filter_expr}
    # whenever we do a filter case operation we need to load all
    # the cases, so force this unless manually specified
    if 'preload_cases' not in session_data:
        session_data['preload_cases'] = True

    ccInstances = CCInstances(session_data,
                              api_auth,
                              form_context=form_context,
                              restore_xml=restore_xml,
                              force_sync=force_sync,
                              uses_sqlite=uses_sqlite)
    caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")

    try:
        caseInstance.initialize(ccInstances, "casedb")
    except (HTTPError, URLError), e:
        raise TouchFormsUnauthorized('Unable to connect to HQ: %s' % str(e))
示例#2
0
def filter_cases(content):
    try:
        modified_xpath = "join(',', instance('casedb')/casedb/case%(filters)s/@case_id)" % \
                {"filters": content["filter_expr"]}

        api_auth = content.get('hq_auth')
        session_data = content.get("session_data", {})
        ccInstances = CCInstances(session_data, api_auth)
        caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")
        caseInstance.initialize(ccInstances, "casedb")
        instances = to_hashtable({"casedb": caseInstance})
        case_list = XPathFuncExpr.toString(XPathParseTool.parseXPath(modified_xpath)\
            .eval(EvaluationContext(None, instances)))
        return {'cases': filter(lambda x: x, case_list.split(","))}
    except Exception, e:
        return {'error': str(e)}
示例#3
0
def filter_cases(content):
    try: 
        modified_xpath = "join(',', instance('casedb')/casedb/case%(filters)s/@case_id)" % \
                {"filters": content["filter_expr"]}
            
        api_auth = content.get('hq_auth')
        session_data = content.get("session_data", {})
        ccInstances = CCInstances(session_data, api_auth)
        caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")
        caseInstance.initialize(ccInstances, "casedb")
        instances = to_hashtable({"casedb": caseInstance})
        case_list = XPathFuncExpr.toString(XPathParseTool.parseXPath(modified_xpath)\
            .eval(EvaluationContext(None, instances)))
        return {'cases': filter(lambda x: x,case_list.split(","))}
    except Exception, e:
        return {'error': str(e)}
示例#4
0
def filter_cases(filter_expr, api_auth, session_data=None, form_context=None):
    session_data = session_data or {}
    form_context = form_context or {}
    modified_xpath = "join(',', instance('casedb')/casedb/case%(filters)s/@case_id)" % \
        {"filters": filter_expr}

    # whenever we do a filter case operation we need to load all
    # the cases, so force this unless manually specified
    if 'preload_cases' not in session_data:
        session_data['preload_cases'] = True

    ccInstances = CCInstances(session_data, api_auth, form_context)
    caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")

    try:
        caseInstance.initialize(ccInstances, "casedb")
    except (HTTPError, URLError), e:
        raise TouchFormsUnauthorized('Unable to connect to HQ: %s' % str(e))
示例#5
0
        session_data['preload_cases'] = True

    ccInstances = CCInstances(session_data, api_auth, form_context=form_context,
                              restore_xml=restore_xml, force_sync=force_sync, uses_sqlite=uses_sqlite)
    caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")

    try:
        caseInstance.initialize(ccInstances, "casedb")
    except (HTTPError, URLError), e:
        raise TouchFormsUnauthorized('Unable to connect to HQ: %s' % str(e))

    instances = to_hashtable({"casedb": caseInstance})

    # load any additional instances needed
    for extra_instance_config in session_data.get('extra_instances', []):
        data_instance = ExternalDataInstance(extra_instance_config['src'], extra_instance_config['id'])
        data_instance.initialize(ccInstances, extra_instance_config['id'])
        instances[extra_instance_config['id']] = data_instance

    try:
        case_list = XPathFuncExpr.toString(
            XPathParseTool.parseXPath(modified_xpath).eval(
                EvaluationContext(None, instances)))
        return {'cases': filter(lambda x: x, case_list.split(","))}
    except (XPathException, XPathSyntaxException), e:
        raise TouchcareInvalidXPath('Error querying cases with xpath %s: %s' % (filter_expr, str(e)))


def query_case_ids(q, criteria=None):
    criteria = copy(criteria) or {}  # don't modify the passed in dict
    criteria["ids_only"] = 'true'
示例#6
0
                              form_context=form_context,
                              restore_xml=restore_xml,
                              force_sync=force_sync,
                              uses_sqlite=uses_sqlite)
    caseInstance = ExternalDataInstance("jr://instance/casedb", "casedb")

    try:
        caseInstance.initialize(ccInstances, "casedb")
    except (HTTPError, URLError), e:
        raise TouchFormsUnauthorized('Unable to connect to HQ: %s' % str(e))

    instances = to_hashtable({"casedb": caseInstance})

    # load any additional instances needed
    for extra_instance_config in session_data.get('extra_instances', []):
        data_instance = ExternalDataInstance(extra_instance_config['src'],
                                             extra_instance_config['id'])
        data_instance.initialize(ccInstances, extra_instance_config['id'])
        instances[extra_instance_config['id']] = data_instance

    try:
        case_list = XPathFuncExpr.toString(
            XPathParseTool.parseXPath(modified_xpath).eval(
                EvaluationContext(None, instances)))
        return {'cases': filter(lambda x: x, case_list.split(","))}
    except (XPathException, XPathSyntaxException), e:
        raise TouchcareInvalidXPath('Error querying cases with xpath %s: %s' %
                                    (filter_expr, str(e)))


def query_case_ids(q, criteria=None):
    criteria = copy(criteria) or {}  # don't modify the passed in dict