Пример #1
0
    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]))