Exemplo n.º 1
0
    def _build_instances(self):
        prompt_select_instances = [
            Instance(id=prop.itemset.instance_id,
                     src=prop.itemset.instance_uri)
            for prop in self.module.search_config.properties
            if prop.itemset.instance_id
        ]

        query_xpaths = [
            QuerySessionXPath(
                self.module.search_config.case_session_var).instance()
        ]
        query_xpaths.extend(
            [datum.ref for datum in self._get_remote_request_query_datums()])
        query_xpaths.extend([
            self.module.search_config.get_relevant(),
            self.module.search_config.search_filter
        ])
        query_xpaths.extend([
            prop.default_value for prop in self.module.search_config.properties
        ])
        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.app, query_xpaths)
        # we use the module's case list/details view to select the datum so also
        # need these instances to be available
        instances |= get_instances_for_module(self.app, self.module,
                                              self.detail_section_elements)

        # sorted list to prevent intermittent test failures
        return sorted(set(list(instances) + prompt_select_instances),
                      key=lambda i: i.id)
Exemplo n.º 2
0
    def build_instances(self):
        prompt_select_instances = [
            Instance(id=prop.itemset.instance_id,
                     src=prop.itemset.instance_uri)
            for prop in self.module.search_config.properties
            if prop.itemset.instance_id
        ]

        xpaths = {QuerySessionXPath(self.case_session_var).instance()}
        xpaths.update(datum.ref for datum in self._remote_request_query_datums)
        xpaths.add(self.get_post_relevant())
        xpaths = xpaths.union(self._get_multi_select_xpaths())
        xpaths.add(self.module.search_config.search_filter)
        xpaths.update(prop.default_value
                      for prop in self.module.search_config.properties)
        xpaths.update(prop.required
                      for prop in self.module.search_config.properties)
        # we use the module's case list/details view to select the datum so also
        # need these instances to be available
        xpaths.update(self._get_xpaths_for_module())
        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.app, xpaths)

        # exclude remote instances
        instances = [
            instance for instance in instances if 'remote' not in instance.src
        ]

        # sorted list to prevent intermittent test failures
        return sorted(set(list(instances) + prompt_select_instances),
                      key=lambda i: i.id)
Exemplo n.º 3
0
    def build_instances(self):
        query_xpaths = [QuerySessionXPath(self.case_session_var).instance()]
        query_xpaths.extend(
            [datum.ref for datum in self._remote_request_query_datums])
        query_xpaths.append(self.get_post_relevant())
        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.app, query_xpaths)

        # sorted list to prevent intermittent test failures
        return sorted(instances, key=lambda i: i.id)
Exemplo n.º 4
0
    def _build_instances(self):
        query_xpaths = [
            datum.ref for datum in self._get_remote_request_query_datums()
        ]
        claim_relevant_xpaths = [self.module.search_config.relevant]

        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.domain, query_xpaths + claim_relevant_xpaths)
        # sorted list to prevent intermittent test failures
        return sorted(list(instances), key=lambda i: i.id)
Exemplo n.º 5
0
    def _build_instances(self):
        query_xpaths = [datum.ref for datum in self._get_remote_request_query_datums()]
        claim_relevant_xpaths = [self.module.search_config.relevant]

        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.domain,
            query_xpaths + claim_relevant_xpaths
        )
        # sorted list to prevent intermittent test failures
        return sorted(list(instances), key=lambda i: i.id)
Exemplo n.º 6
0
    def _build_instances(self):
        query_xpaths = [
            datum.ref for datum in self._get_remote_request_query_datums()
        ]
        claim_relevant_xpaths = [self.module.search_config.relevant]

        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.app, query_xpaths + claim_relevant_xpaths)
        # we use the module's case list/details view to select the datum so also
        # need these instances to be available
        instances |= get_instances_for_module(self.app, self.module)
        # sorted list to prevent intermittent test failures
        return sorted(list(instances), key=lambda i: i.id)
Exemplo n.º 7
0
    def _build_instances(self):
        query_xpaths = [datum.ref for datum in self._get_remote_request_query_datums()]
        claim_relevant_xpaths = [self.module.search_config.relevant]

        instances, unknown_instances = get_all_instances_referenced_in_xpaths(
            self.domain,
            query_xpaths + claim_relevant_xpaths
        )
        # we use the module's case list/details view to select the datum so also
        # need these instances to be available
        instances |= get_instances_for_module(self.app, self.module)
        # sorted list to prevent intermittent test failures
        return sorted(list(instances), key=lambda i: i.id)
Exemplo n.º 8
0
def get_instances_for_module(app, module, detail_section_elements):
    """
    This method is used by CloudCare when filtering cases.
    """
    modules = list(app.get_modules())
    helper = DetailsHelper(app, modules)
    details = detail_section_elements
    detail_mapping = {detail.id: detail for detail in details}
    details_by_id = detail_mapping
    detail_ids = [
        helper.get_detail_id_safe(module, detail_type)
        for detail_type, detail, enabled in module.get_details() if enabled
    ]
    detail_ids = [_f for _f in detail_ids if _f]
    xpaths = set()

    for detail_id in detail_ids:
        xpaths.update(details_by_id[detail_id].get_all_xpaths())

    instances, _ = get_all_instances_referenced_in_xpaths(app, xpaths)
    return instances
Exemplo n.º 9
0
def get_instances_for_module(app, module, additional_xpaths=None):
    """
    This method is used by CloudCare when filtering cases.
    """
    modules = list(app.get_modules())
    helper = DetailsHelper(app, modules)
    details = DetailContributor(None, app, modules).get_section_elements()
    detail_mapping = {detail.id: detail for detail in details}
    details_by_id = detail_mapping
    detail_ids = [helper.get_detail_id_safe(module, detail_type)
                  for detail_type, detail, enabled in module.get_details()
                  if enabled]
    detail_ids = filter(None, detail_ids)
    xpaths = set()

    if additional_xpaths:
        xpaths.update(additional_xpaths)

    for detail_id in detail_ids:
        xpaths.update(details_by_id[detail_id].get_all_xpaths())

    instances, _ = get_all_instances_referenced_in_xpaths(app.domain, xpaths)
    return instances
Exemplo n.º 10
0
def get_instances_for_module(app, module, additional_xpaths=None):
    """
    This method is used by CloudCare when filtering cases.
    """
    modules = list(app.get_modules())
    helper = DetailsHelper(app, modules)
    details = DetailContributor(None, app, modules).get_section_elements()
    detail_mapping = {detail.id: detail for detail in details}
    details_by_id = detail_mapping
    detail_ids = [helper.get_detail_id_safe(module, detail_type)
                  for detail_type, detail, enabled in module.get_details()
                  if enabled]
    detail_ids = [_f for _f in detail_ids if _f]
    xpaths = set()

    if additional_xpaths:
        xpaths.update(additional_xpaths)

    for detail_id in detail_ids:
        xpaths.update(details_by_id[detail_id].get_all_xpaths())

    instances, _ = get_all_instances_referenced_in_xpaths(app.domain, xpaths)
    return instances