tMerge pull request #1943 from ser/payment-requests-subdirs - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit c7ff3ba705e4ca3acf29217ddb5e2ee4ceedea9d
 (DIR) parent 3127fbd0c2e9527d70ddef9333fe0021f75bd7c0
 (HTM) Author: ThomasV <thomasv@electrum.org>
       Date:   Sun,  2 Oct 2016 12:43:10 +0200
       
       Merge pull request #1943 from ser/payment-requests-subdirs
       
       Spread payment requests to subdirs
       Diffstat:
         M lib/wallet.py                       |      18 ++++++++++++------
         M lib/websockets.py                   |       2 +-
         M lib/www/index.html                  |       5 +++--
       
       3 files changed, 16 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1046,13 +1046,13 @@ class Abstract_Wallet(PrintError):
                rdir = config.get('requests_dir')
                if rdir:
                    key = out.get('id', addr)
       -            path = os.path.join(rdir, key)
       +            path = os.path.join(rdir, 'req', key[0], key[1], key)
                    if os.path.exists(path):
                        baseurl = 'file://' + rdir
                        rewrite = config.get('url_rewrite')
                        if rewrite:
                            baseurl = baseurl.replace(*rewrite)
       -                out['request_url'] = os.path.join(baseurl, key)
       +                out['request_url'] = os.path.join(baseurl, 'req', key[0], key[1], key, key)
                        out['URI'] += '&r=' + out['request_url']
                        out['index_url'] = os.path.join(baseurl, 'index.html') + '?id=' + key
                        websocket_server_announce = config.get('websocket_server_announce')
       t@@ -1122,12 +1122,18 @@ class Abstract_Wallet(PrintError):
                if rdir and amount is not None:
                    key = req.get('id', addr)
                    pr = paymentrequest.make_request(config, req)
       -            path = os.path.join(rdir, key)
       -            with open(path, 'w') as f:
       +            path = os.path.join(rdir, 'req', key[0], key[1], key)
       +            if not os.path.exists(path):
       +                try:
       +                    os.makedirs(path)
       +                except OSError as exc:
       +                    if exc.errno != errno.EEXIST:
       +                        raise
       +            with open(os.path.join(path, key), 'w') as f:
                        f.write(pr.SerializeToString())
                    # reload
                    req = self.get_payment_request(addr, config)
       -            with open(os.path.join(rdir, key + '.json'), 'w') as f:
       +            with open(os.path.join(path, key + '.json'), 'w') as f:
                        f.write(json.dumps(req))
                return req
        
       t@@ -1139,7 +1145,7 @@ class Abstract_Wallet(PrintError):
                if rdir:
                    key = r.get('id', addr)
                    for s in ['.json', '']:
       -                n = os.path.join(rdir, key + s)
       +                n = os.path.join(rdir, 'req', key[0], key[1], key, key + s)
                        if os.path.exists(n):
                            os.unlink(n)
                self.storage.put('payment_requests', self.receive_requests)
 (DIR) diff --git a/lib/websockets.py b/lib/websockets.py
       t@@ -63,7 +63,7 @@ class WsClientThread(util.DaemonThread):
            def make_request(self, request_id):
                # read json file
                rdir = self.config.get('requests_dir')
       -        n = os.path.join(rdir, request_id + '.json')
       +        n = os.path.join(rdir, 'req', request_id[0], request_id[1], request_id, request_id + '.json')
                with open(n) as f:
                    s = f.read()
                d = json.loads(s)
 (DIR) diff --git a/lib/www/index.html b/lib/www/index.html
       t@@ -25,7 +25,8 @@ function getUrlParameter(sParam)
        var id = getUrlParameter('id');
        
        if (id) {
       -    var jqxhr = $.getJSON(id + ".json", function() {
       +        var uri_path = location.pathname;
       +        var jqxhr = $.getJSON(uri_path.replace("index.html", "req/"+  id[0] + "/"+ id[1] + "/"+ id + "/"+ id + ".json"), function() {
                console.log("getJSON:success");
            })
                .done( function(data) {
       t@@ -60,7 +61,7 @@ if (id) {
                         }
                    });
        
       -            var wss_address = "wss://" + websocket_server + ":" + websocket_port +"/");
       +            var wss_address = "wss://" + websocket_server + ":" + websocket_port +"/";
                    console.log("Opening WSS: " + wss_address)
                    var ws = new WebSocket(wss_address);