def generateRoot(self, instance): ref = instance.getReference() def from_bundle(inst): root = inst.getRoot() root.setParent(instance.getBase()) return root if 'casedb' in ref: return CaseInstanceTreeElement( instance.getBase(), CaseDatabase(self.vars['domain'], self.vars['user_id'], self.auth, self.vars.get("additional_filters", {})), False) elif 'fixture' in ref: fixture_id = ref.split('/')[-1] user_id = self.vars['user_id'] ret = self._get_fixture(user_id, fixture_id) # Unclear why this is necessary but it is ret.setParent(instance.getBase()) return ret elif 'session' in ref: meta_keys = ['device_id', 'app_version', 'username', 'user_id'] exclude_keys = ['additional_filters'] sess = CommCareSession( None) # will not passing a CCPlatform cause problems later? for k, v in self.vars.iteritems(): if k not in meta_keys and k not in exclude_keys: sess.setDatum(k, v) return from_bundle( sess.getSessionInstance( *[self.vars.get(k, '') for k in meta_keys]))
def generateRoot(self, instance): ref = instance.getReference() def from_bundle(inst): root = inst.getRoot() root.setParent(instance.getBase()) return root if 'casedb' in ref: return CaseInstanceTreeElement(instance.getBase(), CaseDatabase(self.vars['domain'], self.vars['user_id'], self.auth, self.vars.get("additional_filters", {})), False) elif 'fixture' in ref: fixture_id = ref.split('/')[-1] user_id = self.vars['user_id'] ret = self._get_fixture(user_id, fixture_id) # Unclear why this is necessary but it is ret.setParent(instance.getBase()) return ret elif 'session' in ref: meta_keys = ['device_id', 'app_version', 'username', 'user_id'] exclude_keys = ['additional_filters'] sess = CommCareSession(None) # will not passing a CCPlatform cause problems later? for k, v in self.vars.iteritems(): if k not in meta_keys and k not in exclude_keys: sess.setDatum(k, v) return from_bundle(sess.getSessionInstance(*[self.vars.get(k, '') for k in meta_keys]))
def generateRoot(self, instance): ref = instance.getReference() def from_bundle(inst): root = inst.getRoot() root.setParent(instance.getBase()) return root if 'casedb' in ref: return CaseInstanceTreeElement( instance.getBase(), CaseDatabase( self.vars.get('host'), self.vars['domain'], self.auth, self.vars.get("additional_filters", {}), self.vars.get("preload_cases", False), self.form_context, ), False ) elif 'fixture' in ref: fixture_id = ref.split('/')[-1] user_id = self.vars['user_id'] ret = self._get_fixture(user_id, fixture_id) # Unclear why this is necessary but it is ret.setParent(instance.getBase()) return ret elif 'ledgerdb' in ref: return LedgerInstanceTreeElement( instance.getBase(), LedgerDatabase( self.vars.get('host'), self.vars['domain'], self.auth, self.vars.get("additional_filters", {}), self.vars.get("preload_cases", False), ) ) elif 'session' in ref: meta_keys = ['device_id', 'app_version', 'username', 'user_id'] exclude_keys = ['additional_filters', 'user_data'] sess = CommCareSession(None) # will not passing a CCPlatform cause problems later? for k, v in self.vars.iteritems(): if k not in meta_keys and k not in exclude_keys: # com.xhaus.jyson.JysonCodec returns data as byte strings # in unknown encoding (possibly ISO-8859-1) sess.setDatum(k, unicode(v, errors='replace')) clean_user_data = {} for k, v in self.vars.get('user_data', {}).iteritems(): clean_user_data[k] = unicode(v if v is not None else '', errors='replace') return from_bundle(sess.getSessionInstance(*([self.vars.get(k, '') for k in meta_keys] + \ [to_hashtable(clean_user_data)])))