Use account and reduce code + raise exception on claim not found

This commit is contained in:
hackrush 2018-09-20 02:28:50 +05:30 committed by Lex Berezhny
parent f5789775a2
commit 790991ecad
2 changed files with 13 additions and 10 deletions

View file

@ -2326,18 +2326,20 @@ class Daemon(AuthJSONRPCServer):
@requires(WALLET_COMPONENT, conditions=[WALLET_IS_UNLOCKED])
@defer.inlineCallbacks
def jsonrpc_claim_abandon(self, claim_id=None, txid=None, nout=None):
def jsonrpc_claim_abandon(self, claim_id=None, txid=None, nout=None, account_id=None):
"""
Abandon a name and reclaim credits from the claim
Usage:
claim_abandon [<claim_id> | --claim_id=<claim_id>]
[<txid> | --txid=<txid>] [<nout> | --nout=<nout>]
[--account_id=<account_id>]
Options:
--claim_id=<claim_id> : (str) claim_id of the claim to abandon
--txid=<txid> : (str) txid of the claim to abandon
--nout=<nout> : (int) nout of the claim to abandon
--account_id=<account_id> : (str) id of the account to use
Returns:
(dict) Dictionary containing result of the claim
@ -2346,6 +2348,10 @@ class Daemon(AuthJSONRPCServer):
txid : (str) txid of resulting transaction
}
"""
account = self.default_account
if account_id is not None:
account = self.get_account_or_error("account_id", account_id, lbc_only=True)
if claim_id is None and txid is None and nout is None:
raise Exception('Must specify claim_id, or txid and nout')
if txid is None and nout is not None:
@ -2353,7 +2359,7 @@ class Daemon(AuthJSONRPCServer):
if nout is None and txid is not None:
raise Exception('Must specify nout')
tx = yield self.wallet_manager.abandon_claim(claim_id, txid, nout)
tx = yield self.wallet_manager.abandon_claim(claim_id, txid, nout, account)
self.analytics_manager.send_claim_action('abandon')
defer.returnValue({
"success": True,

View file

@ -262,14 +262,11 @@ class LbryWalletManager(BaseWalletManager):
return tx
@defer.inlineCallbacks
def abandon_claim(self, claim_id, txid, nout):
account = self.default_account
if claim_id is not None:
claim = yield account.get_claim(claim_id=claim_id)
elif txid is not None and nout is not None:
claim = yield account.get_claim(txid=txid, nout=nout)
else:
raise Exception('Must specify claim_id, or txid and nout')
def abandon_claim(self, claim_id, txid, nout, account):
claim = yield account.get_claim(claim_id=claim_id, txid=txid, nout=nout)
if not claim:
raise Exception('No claim found for the specified claim_id or txid:nout')
tx = yield Transaction.abandon(claim, [account], account)
yield account.ledger.broadcast(tx)
# TODO: release reserved tx outputs in case anything fails by this point