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))
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)}
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)}
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))
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'
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