tsave payment requests in requests_dir - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit d41785c7838b019dbab47ad7bf4f7d87086f549d DIR parent 832369d7c444270bbd562798a438e6c460c1c85c HTML Author: ThomasV <thomasv@gitorious> Date: Tue, 2 Jun 2015 09:18:39 +0200 save payment requests in requests_dir Diffstat: M gui/qt/main_window.py | 5 +++-- M lib/commands.py | 10 ++++------ M lib/wallet.py | 51 +++++++++++++++++++++----------- 3 files changed, 41 insertions(+), 25 deletions(-) --- DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py t@@ -714,13 +714,14 @@ class ElectrumWindow(QMainWindow): return i = self.expires_combo.currentIndex() expiration = map(lambda x: x[1], expiration_values)[i] - self.wallet.save_payment_request(addr, amount, message, expiration) + self.wallet.save_payment_request(self.config, addr, amount, message, expiration) self.update_receive_tab() self.update_address_tab() self.save_request_button.setEnabled(False) def export_payment_request(self, addr): - pr = self.wallet.make_bip70_request(self.config, addr) + r = self.wallet.get_payment_request(addr) + pr = self.wallet.make_bip70_request(self.config, r) name = 'request.bip70' fileName = self.getSaveFileName(_("Select where to save your payment request"), name, "*.bip70") if fileName: DIR diff --git a/lib/commands.py b/lib/commands.py t@@ -522,13 +522,10 @@ class Commands: @command('w') def addrequest(self, amount, reason='', expiration=60*60): - """Create a payment request""" - addr = self.wallet.get_unused_address(None) - if addr is None: - return False + """Create a payment request. """ amount = int(Decimal(amount)*COIN) - self.wallet.save_payment_request(addr, amount, reason, expiration) - return addr + key = self.wallet.add_payment_request(self.config, amount, reason, expiration) + return self.wallet.get_payment_request(key) if key else False @command('w') def removerequest(self, address): t@@ -577,6 +574,7 @@ command_options = { 'account': (None, "--account", "Account"), 'reason': (None, "--reason", "Description of the request"), 'expiration': (None, "--expiration", "Time in seconds"), + 'request_dir': (None, "--request_dir", "Directory where request are written"), } DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -1231,25 +1231,10 @@ class Abstract_Wallet(object): if not self.history.get(addr) and addr not in self.receive_requests.keys(): return addr - def remove_payment_request(self, addr): - if addr not in self.receive_requests: - return False - self.receive_requests.pop(addr) - self.storage.put('receive_requests2', self.receive_requests) - return True - def save_payment_request(self, addr, amount, message, expiration): - self.set_label(addr, message) - if addr in self.receive_requests: - self.receive_requests[addr]['amount'] = amount - else: - now = int(time.time()) - self.receive_requests[addr] = {'time':now, 'amount':amount, 'expiration':expiration} - self.storage.put('receive_requests2', self.receive_requests, True) - - def make_bip70_request(self, config, addr): + def make_bip70_request(self, config, req): from paymentrequest import make_payment_request - req = self.receive_requests[addr] + addr = req['address'] time = req['time'] amount = req['amount'] expiration = req['expiration'] t@@ -1260,6 +1245,38 @@ class Abstract_Wallet(object): cert_path = config.get('ssl_cert_path') return make_payment_request(outputs, message, time, time + expiration, key_path, cert_path) + def get_payment_request(self, key): + return self.receive_requests.get(key) + + def save_payment_request(self, config, addr, amount, message, expiration): + #if addr in self.receive_requests: + # self.receive_requests[addr]['amount'] = amount + self.set_label(addr, message) + now = int(time.time()) + r = {'time':now, 'amount':amount, 'expiration':expiration, 'address':addr} + if config.get('requests_dir'): + pr = self.make_bip70_request(config, r) + path = os.path.join(config.get('www_dir'), addr + '.bip70') + with open(path, 'w') as f: + f.write(pr) + r['url'] = 'bitcoin:?r=file://' + path + self.receive_requests[addr] = r + self.storage.put('receive_requests2', self.receive_requests) + + def add_payment_request(self, config, amount, message, expiration): + addr = self.get_unused_address(None) + if addr is None: + return False + self.save_payment_request(config, addr, amount, message, expiration) + return addr + + def remove_payment_request(self, addr): + if addr not in self.receive_requests: + return False + self.receive_requests.pop(addr) + self.storage.put('receive_requests2', self.receive_requests) + return True + class Imported_Wallet(Abstract_Wallet): wallet_type = 'imported'