本文整理匯總了Python中olympia.addons.indexers.AddonIndexer.extract_document方法的典型用法代碼示例。如果您正苦於以下問題:Python AddonIndexer.extract_document方法的具體用法?Python AddonIndexer.extract_document怎麽用?Python AddonIndexer.extract_document使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類olympia.addons.indexers.AddonIndexer
的用法示例。
在下文中一共展示了AddonIndexer.extract_document方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: TestAddonIndexer
# 需要導入模塊: from olympia.addons.indexers import AddonIndexer [as 別名]
# 或者: from olympia.addons.indexers.AddonIndexer import extract_document [as 別名]
#.........這裏部分代碼省略.........
"""Make sure that the `index` setting is a true/false boolean.
Old versions of ElasticSearch allowed 'no' and 'yes' strings,
this changed with ElasticSearch 5.x.
"""
doc_name = self.indexer.get_doctype_name()
assert doc_name
mapping_properties = self.indexer.get_mapping()[doc_name]['properties']
assert all(
isinstance(prop['index'], bool)
for prop in mapping_properties.values()
if 'index' in prop)
# Make sure our version_mapping is setup correctly too.
props = mapping_properties['current_version']['properties']
assert all(
isinstance(prop['index'], bool)
for prop in props.values() if 'index' in prop)
# As well as for current_version.files
assert all(
isinstance(prop['index'], bool)
for prop in props['files']['properties'].values()
if 'index' in prop)
def _extract(self):
qs = Addon.unfiltered.filter(id__in=[self.addon.pk])
for t in self.transforms:
qs = qs.transform(t)
self.addon = list(qs)[0]
return self.indexer.extract_document(self.addon)
def test_extract_attributes(self):
extracted = self._extract()
# Like test_mapping() above, but for the extraction process:
# Make sure the method does not return fields we did not expect to be
# present, or omitted fields we want.
assert set(extracted.keys()) == set(
self.expected_fields(include_nullable=False))
# Check base fields values. Other tests below check the dynamic ones.
for field_name in self.simple_fields:
assert extracted[field_name] == getattr(self.addon, field_name)
assert extracted['app'] == [FIREFOX.id]
assert extracted['boost'] == self.addon.average_daily_users ** .2 * 4
assert extracted['category'] == [1, 22, 71] # From fixture.
assert extracted['current_version']
assert extracted['listed_authors'] == [
{'name': u'55021 التطب', 'id': 55021, 'username': '55021',
'is_public': True}]
assert extracted['platforms'] == [PLATFORM_ALL.id]
assert extracted['ratings'] == {
'average': self.addon.average_rating,
'count': self.addon.total_ratings,
'text_count': self.addon.text_ratings_count,
}
assert extracted['tags'] == []
assert extracted['has_eula'] is True
assert extracted['has_privacy_policy'] is True
assert extracted['is_featured'] is False
assert extracted['colors'] is None
示例2: TestAddonIndexer
# 需要導入模塊: from olympia.addons.indexers import AddonIndexer [as 別名]
# 或者: from olympia.addons.indexers.AddonIndexer import extract_document [as 別名]
#.........這裏部分代碼省略.........
'app', 'appversion', 'boost', 'category', 'current_beta_version',
'current_version', 'description', 'has_eula', 'has_privacy_policy',
'has_theme_rereview', 'has_version', 'listed_authors', 'name',
'name_sort', 'platforms', 'previews', 'public_stats', 'ratings',
'summary', 'tags',
]
# Fields that need to be present in the mapping, but might be skipped
# for extraction because they can be null.
nullable_fields = ['persona']
# For each translated field that needs to be indexed, we store one
# version for each language-specific analyzer we have.
_indexed_translated_fields = ('name', 'description', 'summary')
analyzer_fields = list(chain.from_iterable(
[['%s_%s' % (field, analyzer) for analyzer in SEARCH_ANALYZER_MAP]
for field in _indexed_translated_fields]))
# It'd be annoying to hardcode `analyzer_fields`, so we generate it,
# but to make sure the test is correct we still do a simple check of
# the length to make sure we properly flattened the list.
assert len(analyzer_fields) == (len(SEARCH_ANALYZER_MAP) *
len(_indexed_translated_fields))
# Each translated field that we want to return to the API.
raw_translated_fields = [
'%s_translations' % field for field in
['name', 'description', 'homepage', 'summary', 'support_email',
'support_url']]
# Return a list with the base fields and the dynamic ones added.
fields = (cls.simple_fields + complex_fields + analyzer_fields +
raw_translated_fields)
if include_nullable:
fields += nullable_fields
return fields
def test_mapping(self):
doc_name = self.indexer.get_doctype_name()
assert doc_name
mapping_properties = self.indexer.get_mapping()[doc_name]['properties']
# Make sure the get_mapping() method does not return fields we did
# not expect to be present, or omitted fields we want.
assert set(mapping_properties.keys()) == set(self.expected_fields())
# Make sure default_locale and translated fields are not indexed.
assert mapping_properties['default_locale']['index'] == 'no'
name_translations = mapping_properties['name_translations']
assert name_translations['properties']['lang']['index'] == 'no'
assert name_translations['properties']['string']['index'] == 'no'
# Make sure nothing inside 'persona' is indexed, it's only there to be
# returned back to the API directly.
for field in mapping_properties['persona']['properties'].values():
assert field['index'] == 'no'
# Make sure current_version mapping is set.
assert mapping_properties['current_version']['properties']
version_mapping = mapping_properties['current_version']['properties']
expected_version_keys = (
'id', 'compatible_apps', 'files', 'reviewed', 'version')
assert set(version_mapping.keys()) == set(expected_version_keys)
# Make sure files mapping is set inside current_version.
files_mapping = version_mapping['files']['properties']
expected_file_keys = ('id', 'created', 'filename', 'hash', 'platform',
'size', 'status')
assert set(files_mapping.keys()) == set(expected_file_keys)
def _extract(self):
qs = Addon.unfiltered.filter(id__in=[self.addon.pk]).no_cache()
for t in self.transforms:
qs = qs.transform(t)
self.addon = list(qs)[0]
return self.indexer.extract_document(self.addon)
def test_extract_attributes(self):
extracted = self._extract()
# Like test_mapping() above, but for the extraction process:
# Make sure the method does not return fields we did not expect to be
# present, or omitted fields we want.
assert set(extracted.keys()) == set(
self.expected_fields(include_nullable=False))
# Check base fields values. Other tests below check the dynamic ones.
for field_name in self.simple_fields:
assert extracted[field_name] == getattr(self.addon, field_name)
assert extracted['app'] == [FIREFOX.id]
assert extracted['appversion'] == {
FIREFOX.id: {
'min': 2000000200100L,
'max': 4000000200100L,
'max_human': '4.0',
'min_human': '2.0',
}
}
示例3: TestAddonIndexer
# 需要導入模塊: from olympia.addons.indexers import AddonIndexer [as 別名]
# 或者: from olympia.addons.indexers.AddonIndexer import extract_document [as 別名]
#.........這裏部分代碼省略.........
"""Make sure that the `index` setting is a true/false boolean.
Old versions of ElasticSearch allowed 'no' and 'yes' strings,
this changed with ElasticSearch 5.x.
"""
doc_name = self.indexer.get_doctype_name()
assert doc_name
mapping_properties = self.indexer.get_mapping()[doc_name]['properties']
assert all(
isinstance(prop['index'], bool)
for prop in mapping_properties.values()
if 'index' in prop)
# Make sure our version_mapping is setup correctly too.
props = mapping_properties['current_version']['properties']
assert all(
isinstance(prop['index'], bool)
for prop in props.values() if 'index' in prop)
# As well as for current_version.files
assert all(
isinstance(prop['index'], bool)
for prop in props['files']['properties'].values()
if 'index' in prop)
def _extract(self):
qs = Addon.unfiltered.filter(id__in=[self.addon.pk]).no_cache()
for t in self.transforms:
qs = qs.transform(t)
self.addon = list(qs)[0]
return self.indexer.extract_document(self.addon)
def test_extract_attributes(self):
extracted = self._extract()
# Like test_mapping() above, but for the extraction process:
# Make sure the method does not return fields we did not expect to be
# present, or omitted fields we want.
assert set(extracted.keys()) == set(
self.expected_fields(include_nullable=False))
# Check base fields values. Other tests below check the dynamic ones.
for field_name in self.simple_fields:
assert extracted[field_name] == getattr(self.addon, field_name)
assert extracted['app'] == [FIREFOX.id]
assert extracted['boost'] == self.addon.average_daily_users ** .2 * 4
assert extracted['category'] == [1, 22, 71] # From fixture.
assert extracted['current_beta_version'] is None
assert extracted['current_version']
assert extracted['has_theme_rereview'] is None
assert extracted['latest_unlisted_version'] is None
assert extracted['listed_authors'] == [
{'name': u'55021 التطب', 'id': 55021, 'username': '55021',
'is_public': True}]
assert extracted['platforms'] == [PLATFORM_ALL.id]
assert extracted['ratings'] == {
'average': self.addon.average_rating,
'count': self.addon.total_ratings,
'text_count': self.addon.text_ratings_count,
}
assert extracted['tags'] == []
assert extracted['has_eula'] is True