diff --git a/hive/indexer/follow.py b/hive/indexer/follow.py index 9c77b26d8bff250a6c2b50ae180c94f39569f3d4..f2c727a5b359427a37566a4927f85de7f3a20f11 100644 --- a/hive/indexer/follow.py +++ b/hive/indexer/follow.py @@ -101,21 +101,22 @@ class Follow(DbAdapterHolder): or not 'following' in op): return None + # follower/following is empty + if not op['follower'] or not op['following']: + return None + op['following'] = op['following'] if isinstance(op['following'], list) else [op['following']] - - # additional layer of protection against putting complex data types as user names - # we expecting follower and following entries to be strings - # in older hivemind this check was done in Accounts.exists - # now following can be list of names so we need to check if all entries are strings - for following in op['following']: - if not isinstance(following, str): - return None - - if not isinstance(op['follower'], str): + + # mimic original behaviour + # if following name does not exist do not process it: basically equal to drop op for single following entry + + op['following'] = [op for op in op['following'] if Accounts.exists(op)] + + # if follower name does not exist drop op + if not Accounts.exists(op['follower']): return None - # follower/following is empty - if not op['follower'] or not op['following']: + if op['follower'] in op['following'] or op['follower'] != account: return None what = first(op['what']) or '' @@ -127,16 +128,6 @@ class Follow(DbAdapterHolder): if what not in defs: return None - all_accounts = list(op['following']) - all_accounts.append(op['follower']) - if (op['follower'] in op['following'] - or op['follower'] != account): - return None - - non_existent_names = Accounts.check_names(all_accounts) - if non_existent_names: - log.warning("Follow op validation, following names does not exists in database: {}".format(non_existent_names)) - return dict(flr=escape_characters(op['follower']), flg=[escape_characters(following) for following in op['following']], state=defs[what], diff --git a/mock_data/block_data/follow_op/mock_block_data_follow.json b/mock_data/block_data/follow_op/mock_block_data_follow.json index e0089d8a89030b9f22721ff85ae7546709a2e4d6..0acf603a28b770b6a58880b067eceff7ad6929cf 100644 --- a/mock_data/block_data/follow_op/mock_block_data_follow.json +++ b/mock_data/block_data/follow_op/mock_block_data_follow.json @@ -352,7 +352,7 @@ "tester1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", \"tester4\"],\"what\":[\"blogo-doggo\"]}]" + "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", \"gtg\"],\"what\":[\"blogo-doggo\"]}]" } }, { @@ -363,7 +363,7 @@ "te'%@ter1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":\"te'%@ter1\",\"following\":[\"tester3\", \"tester4\"],\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":\"te'%@ter1\",\"following\":[\"gtg\", \"tester4\"],\"what\":[\"blog\"]}]" } }, { @@ -374,7 +374,7 @@ "{\"tester1\":\"tester1\"}" ], "id": "follow", - "json": "[\"follow\",{\"follower\":{\"tester1\":\"tester1\"},\"following\":{\"tester3\":\"tester4\"},\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":{\"tester1\":\"tester1\"},\"following\":{\"gtg\":\"gtg\"},\"what\":[\"blog\"]}]" } }, { @@ -385,7 +385,7 @@ "tester1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":{\"tester3\":\"tester4\"},\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":{\"gtg\":\"gtg\"},\"what\":[\"blog\"]}]" } }, { @@ -396,7 +396,7 @@ "tester1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", [\"tester4\"]],\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", [\"gtg\"]],\"what\":[\"blog\"]}]" } }, { @@ -407,7 +407,7 @@ "tester1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":[\"tester1\"],\"following\":[\"tester3\", [\"tester4\"]],\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":[\"tester1\"],\"following\":[\"tester3\", [\"gtg\"]],\"what\":[\"blog\"]}]" } }, { @@ -418,7 +418,7 @@ "[\"tester1\"]" ], "id": "follow", - "json": "[\"follow\",{\"follower\":[\"tester1\"],\"following\":[\"tester3\", {\"tester4\":\"tester5\"}],\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":[\"tester1\"],\"following\":[\"tester3\", {\"gtg\":\"gtg\"}],\"what\":[\"blog\"]}]" } }, { @@ -429,7 +429,7 @@ "tester1" ], "id": "follow", - "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", {\"tester4\":\"tester5\"}],\"what\":[\"blog\"]}]" + "json": "[\"follow\",{\"follower\":\"tester1\",\"following\":[\"tester3\", {\"gtg\":\"gtg\"}],\"what\":[\"blog\"]}]" } } ]