From aa727cb9b19bbc67ab925b0340bfb96ea8e15f3d Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 26 Mar 2021 00:27:05 -0300 Subject: [PATCH] show channels regardless of no_source --- lbry/wallet/server/db/elasticsearch/constants.py | 2 +- lbry/wallet/server/db/elasticsearch/search.py | 6 ++++-- tests/integration/blockchain/test_claim_commands.py | 7 ++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lbry/wallet/server/db/elasticsearch/constants.py b/lbry/wallet/server/db/elasticsearch/constants.py index 12483ed10..cea87c225 100644 --- a/lbry/wallet/server/db/elasticsearch/constants.py +++ b/lbry/wallet/server/db/elasticsearch/constants.py @@ -42,7 +42,7 @@ FIELDS = {'is_controlling', 'last_take_over_height', 'claim_id', 'claim_name', ' 'claims_in_channel', 'channel_join', 'signature_valid', 'effective_amount', 'support_amount', 'trending_group', 'trending_mixed', 'trending_local', 'trending_global', 'channel_id', 'tx_id', 'tx_nout', 'signature', 'signature_digest', 'public_key_bytes', 'public_key_hash', 'public_key_id', '_id', 'tags', - 'reposted_claim_id', 'has_source'} + 'reposted_claim_id'} TEXT_FIELDS = {'author', 'canonical_url', 'channel_id', 'claim_name', 'description', 'claim_id', 'media_type', 'normalized', 'public_key_bytes', 'public_key_hash', 'short_url', 'signature', 'signature_digest', 'stream_type', 'title', 'tx_id', 'fee_currency', 'reposted_claim_id', 'tags'} diff --git a/lbry/wallet/server/db/elasticsearch/search.py b/lbry/wallet/server/db/elasticsearch/search.py index 55e1bd0dd..a5ef0b8d1 100644 --- a/lbry/wallet/server/db/elasticsearch/search.py +++ b/lbry/wallet/server/db/elasticsearch/search.py @@ -432,8 +432,10 @@ def expand_query(**kwargs): if 'has_source' in kwargs: query.setdefault('should', []) query["minimum_should_match"] = 1 - query['should'].append({"bool": {"must": [{"match": {"has_source": kwargs['has_source']}}, {"match": {"claim_type": CLAIM_TYPES['stream']}}]}}) - query['should'].append({"bool": {"must_not": [{"match": {"claim_type": CLAIM_TYPES['stream']}}]}}) + is_stream_or_repost = {"terms": {"claim_type": [CLAIM_TYPES['stream'], CLAIM_TYPES['repost']]}} + query['should'].append( + {"bool": {"must": [{"match": {"has_source": kwargs['has_source']}}, is_stream_or_repost]}}) + query['should'].append({"bool": {"must_not": [is_stream_or_repost]}}) if kwargs.get('text'): query['must'].append( {"simple_query_string": diff --git a/tests/integration/blockchain/test_claim_commands.py b/tests/integration/blockchain/test_claim_commands.py index a1981614f..975b20ce7 100644 --- a/tests/integration/blockchain/test_claim_commands.py +++ b/tests/integration/blockchain/test_claim_commands.py @@ -180,13 +180,14 @@ class ClaimSearchCommand(ClaimTestCase): await self.assertFindsClaims([three], claim_id=self.get_claim_id(three), text='*') async def test_source_filter(self): + channel = await self.channel_create('@abc') no_source = await self.stream_create('no-source', data=None) normal = await self.stream_create('normal', data=b'normal') normal_repost = await self.stream_repost(self.get_claim_id(normal), 'normal-repost') no_source_repost = await self.stream_repost(self.get_claim_id(no_source), 'no-source-repost') - await self.assertFindsClaims([no_source_repost, no_source], has_no_source=True) - await self.assertFindsClaims([normal_repost, normal], has_source=True) - await self.assertFindsClaims([no_source_repost, normal_repost, normal, no_source]) + await self.assertFindsClaims([no_source_repost, no_source, channel], has_no_source=True) + await self.assertFindsClaims([normal_repost, normal, channel], has_source=True) + await self.assertFindsClaims([no_source_repost, normal_repost, normal, no_source, channel]) async def test_pagination(self): await self.create_channel()