From 80f6f9aa5c5acf5372c903bf44b38c6133624c93 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Fri, 5 Apr 2024 16:00:34 +0000 Subject: [PATCH] mmgen-xmrwallet: ignore already imported wallet outputs files --- mmgen/autosign.py | 18 +++++++++++++----- mmgen/data/release_date | 2 +- mmgen/data/version | 2 +- mmgen/xmrwallet.py | 3 +++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mmgen/autosign.py b/mmgen/autosign.py index 42375110..2c6bb3a2 100755 --- a/mmgen/autosign.py +++ b/mmgen/autosign.py @@ -270,6 +270,17 @@ class Signable: clean_all = True summary_footer = '\n' + @property + def unsigned(self): + import json + unsigned = super().unsigned + def gen(): + for f in unsigned: + with open(f) as fh: + if not json.load(fh)['MoneroMMGenWalletOutputsFile']['data']['imported']: + yield f + return tuple(gen()) + async def sign(self,f): from .xmrwallet import MoneroWalletOps,xmrwallet_uargs wallet_idx = MoneroWalletOps.wallet.get_idx_from_fn(f) @@ -281,11 +292,8 @@ class Signable: spec = None ), ) obj = await m.main(f, wallet_idx, restart_daemon=self.need_daemon_restart(m,wallet_idx)) - if obj.data.sign: - obj.write() - self.action_desc = 'imported and signed' - else: - self.action_desc = 'imported' + obj.write() + self.action_desc = 'imported and signed' if obj.data.sign else 'imported' return obj class message(base): diff --git a/mmgen/data/release_date b/mmgen/data/release_date index 99bfe3fc..7038bcd5 100644 --- a/mmgen/data/release_date +++ b/mmgen/data/release_date @@ -1 +1 @@ -March 2024 +April 2024 diff --git a/mmgen/data/version b/mmgen/data/version index 791a6653..b2bfbe03 100644 --- a/mmgen/data/version +++ b/mmgen/data/version @@ -1 +1 @@ -14.1.dev25 +14.1.dev26 diff --git a/mmgen/xmrwallet.py b/mmgen/xmrwallet.py index 032c57eb..0933350b 100755 --- a/mmgen/xmrwallet.py +++ b/mmgen/xmrwallet.py @@ -500,6 +500,7 @@ class MoneroWalletOutputsFile: 'outputs_data_hex', 'signed_key_images', 'sign', + 'imported', ]) def __init__(self,cfg): @@ -1964,6 +1965,8 @@ class MoneroWalletOps: data = data) idata = m.data.signed_key_images or [] bmsg(f' {len(idata)} key image{suf(idata)} signed') + else: + m.data = m.data._replace(imported=True) return m class import_key_images(wallet):