示例#1
0
 def search(self, query: SearchQuery) -> SearchResult:
     """Search indexes in catalogs `adhocracy` and `system`."""
     elements = self._search_elements(query)
     frequency_of = self._get_frequency_of(elements, query)
     group_by = self._get_group_by(elements, query)
     sorted_elements = self._sort_elements(elements, query)
     count = len(sorted_elements)
     elements_slice = self._get_slice(sorted_elements, query)
     resolved = self._resolve(elements_slice, query)
     result = search_result._replace(elements=resolved, count=count, group_by=group_by, frequency_of=frequency_of)
     return result
示例#2
0
    def test_get_omit_valid_back_references(self, inst, context, sheet_catalogs,
                                            mock_node_unique_references):
        from adhocracy_core.interfaces import search_result
        node = mock_node_unique_references
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result
        appstruct = inst.get(add_back_references=False)

        assert not sheet_catalogs.search.called
        assert appstruct['references'] == []
示例#3
0
    def test_get_omit_valid_back_references(self, inst, context, sheet_catalogs,
                                            mock_node_unique_references):
        from adhocracy_core.interfaces import search_result
        node = mock_node_unique_references
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result
        appstruct = inst.get(add_back_references=False)

        assert not sheet_catalogs.search.called
        assert appstruct['references'] == []
示例#4
0
 def search(self, query: SearchQuery) -> SearchResult:
     """Search indexes in catalogs `adhocracy` and `system`."""
     elements = self._search_elements(query)
     frequency_of = self._get_frequency_of(elements, query)
     group_by = self._get_group_by(elements, query)
     sorted_elements = self._sort_elements(elements, query)
     count = len(sorted_elements)
     elements_slice = self._get_slice(sorted_elements, query)
     resolved = self._resolve(elements_slice, query)
     result = search_result._replace(elements=resolved,
                                     count=count,
                                     group_by=group_by,
                                     frequency_of=frequency_of)
     return result
示例#5
0
    def test_get_back_reference(self, inst, context, sheet_catalogs,
                                mock_node_single_reference):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import Reference
        node = mock_node_single_reference
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result
        appstruct = inst.get()

        reference = Reference(None, ISheet, '', context)
        assert sheet_catalogs.search.call_args[0][0].references == [reference]
        assert appstruct['reference'] == source
示例#6
0
    def test_get_back_reference(self, inst, context, sheet_catalogs,
                                mock_node_single_reference):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import Reference
        node = mock_node_single_reference
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result
        appstruct = inst.get()

        reference = Reference(None, ISheet, '', context)
        assert sheet_catalogs.search.call_args[0][0].references == [reference]
        assert appstruct['reference'] == source
示例#7
0
 def _get_reference_appstruct(self, query: SearchQuery) -> dict:
     if not self._catalogs:
         return {}  # ease testing
     default_query = self._get_references_query({})
     if query == default_query:  # performance tweak
         target_isheet = query.interfaces
         children = self.context.values()
         elements = [x for x in children if target_isheet.providedBy(x)]
         result = search_result._replace(elements=elements,
                                         count=len(elements))
     else:
         result = self._catalogs.search(query)
     appstruct = {'elements': result.elements,
                  'count': result.count,
                  'frequency_of': result.frequency_of,
                  'group_by': result.group_by,
                  }
     return appstruct
示例#8
0
 def _get_reference_appstruct(self, query: SearchQuery) -> dict:
     if not self._catalogs:
         return {}  # ease testing
     default_query = self._get_references_query({})
     if query == default_query:  # performance tweak
         target_isheet = query.interfaces
         children = self.context.values()
         elements = [x for x in children if target_isheet.providedBy(x)]
         result = search_result._replace(elements=elements,
                                         count=len(elements))
     else:
         result = self._catalogs.search(query)
     appstruct = {
         'elements': result.elements,
         'count': result.count,
         'frequency_of': result.frequency_of,
         'group_by': result.group_by,
     }
     return appstruct
示例#9
0
    def test_get_references(self, inst, context, sheet_catalogs,
                            mock_node_unique_references):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import search_query
        from adhocracy_core.interfaces import Reference
        node = mock_node_unique_references
        inst.schema.children.append(node)
        target = testing.DummyResource()
        result = search_result._replace(elements=[target])
        sheet_catalogs.search.return_value = result

        appstruct = inst.get()

        reference = Reference(context, ISheet, 'references', None)
        query = search_query._replace(references=[reference],
                                      resolve=True,
                                      sort_by='reference'
                                      )
        assert sheet_catalogs.search.call_args[0][0] == query
示例#10
0
    def test_get_references(self, inst, context, sheet_catalogs,
                            mock_node_unique_references):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import search_query
        from adhocracy_core.interfaces import Reference
        node = mock_node_unique_references
        inst.schema.children.append(node)
        target = testing.DummyResource()
        result = search_result._replace(elements=[target])
        sheet_catalogs.search.return_value = result

        appstruct = inst.get()

        reference = Reference(context, ISheet, 'references', None)
        query = search_query._replace(references=[reference],
                                      resolve=True,
                                      sort_by='reference'
                                      )
        assert sheet_catalogs.search.call_args[0][0] == query
示例#11
0
    def test_get_valid_back_references(self, inst, context, sheet_catalogs,
                                       mock_node_unique_references):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import search_query
        from adhocracy_core.interfaces import Reference
        node = mock_node_unique_references
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result

        appstruct = inst.get()

        reference = Reference(None, ISheet, '', context)
        query = search_query._replace(references=[reference],
                                      resolve=True,
                                      )
        sheet_catalogs.search.call_args[0] == query
        assert appstruct['references'] == [source]
示例#12
0
    def test_get_valid_back_references(self, inst, context, sheet_catalogs,
                                       mock_node_unique_references):
        from adhocracy_core.interfaces import ISheet
        from adhocracy_core.interfaces import search_result
        from adhocracy_core.interfaces import search_query
        from adhocracy_core.interfaces import Reference
        node = mock_node_unique_references
        node.backref = True
        inst.schema.children.append(node)
        source = testing.DummyResource()
        result = search_result._replace(elements=[source])
        sheet_catalogs.search.return_value = result

        appstruct = inst.get()

        reference = Reference(None, ISheet, '', context)
        query = search_query._replace(
            references=[reference],
            resolve=True,
        )
        sheet_catalogs.search.call_args[0] == query
        assert appstruct['references'] == [source]
示例#13
0
def search_result() -> SearchResult:
    """Return search result."""
    from adhocracy_core.interfaces import search_result
    return search_result._replace(elements=[])
示例#14
0
def search_result() -> SearchResult:
    """Return search result."""
    from adhocracy_core.interfaces import search_result
    return search_result._replace(elements=[])