Skip to content

Commit c250513

Browse files
committed
Return Safe blockchain version if not found on database
1 parent 2004358 commit c250513

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

safe_transaction_service/history/services/safe_service.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,16 @@ def get_safe_info_from_blockchain(self, safe_address: ChecksumAddress) -> SafeIn
211211
safe = Safe(safe_address, self.ethereum_client)
212212
safe_info = safe.retrieve_all_info()
213213
# Return same master copy information than the db method
214-
return replace(
215-
safe_info,
216-
version=SafeMasterCopy.objects.get_version_for_address(
217-
safe_info.master_copy
218-
),
214+
db_version = SafeMasterCopy.objects.get_version_for_address(
215+
safe_info.master_copy
219216
)
217+
if db_version:
218+
return replace(
219+
safe_info,
220+
version=db_version,
221+
)
222+
else:
223+
return safe_info
220224
except OSError as exc:
221225
raise NodeConnectionException from exc
222226
except CannotRetrieveSafeInfoException as exc:

safe_transaction_service/history/tests/test_safe_service.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,12 @@ def test_get_safe_info_from_blockchain(self):
191191
self.compatibility_fallback_handler_V1_4_1.address,
192192
)
193193
self.assertEqual(safe_info.guard, NULL_ADDRESS)
194-
self.assertEqual(safe_info.version, None) # No SafeMasterCopy
194+
self.assertEqual(
195+
safe_info.version, "1.4.1"
196+
) # No SafeMasterCopy, so fallback to blockchain version
197+
self.assertIsNone(
198+
SafeMasterCopy.objects.get_version_for_address(safe_info.master_copy)
199+
)
195200

196201
version = "4.8.15162342"
197202
SafeMasterCopyFactory(address=safe_info.master_copy, version=version)

0 commit comments

Comments
 (0)