From 90bb7d9f5aca9a3e723dadb440ea1879dbc97087 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Mon, 21 Nov 2016 07:43:53 +0100
Subject: [PATCH] Fix identities refresh
---
src/sakia/data/processors/blockchain.py | 26 ++++++++++++-----------
src/sakia/data/processors/transactions.py | 15 ++++++++-----
src/sakia/services/identities.py | 18 +---------------
3 files changed, 25 insertions(+), 34 deletions(-)
diff --git a/src/sakia/data/processors/blockchain.py b/src/sakia/data/processors/blockchain.py
index 4acd2fea..867b07f7 100644
--- a/src/sakia/data/processors/blockchain.py
+++ b/src/sakia/data/processors/blockchain.py
@@ -155,18 +155,20 @@ class BlockchainProcessor:
:return: the list of block documents
:rtype: List[duniterpy.documents.Block]
"""
- from_block = min(numbers)
- to_block = max(numbers)
- count = to_block - from_block
-
- blocks_data = await self._bma_connector.get(currency, bma.blockchain.blocks, req_args={'count': count,
- 'from_': from_block})
- blocks = []
- for data in blocks_data:
- if data['number'] in numbers:
- blocks.append(Block.from_signed_raw(data["raw"] + data["signature"] + "\n"))
-
- return blocks
+ if numbers:
+ from_block = min(numbers)
+ to_block = max(numbers)
+ count = to_block - from_block
+
+ blocks_data = await self._bma_connector.get(currency, bma.blockchain.blocks, req_args={'count': count,
+ 'from_': from_block})
+ blocks = []
+ for data in blocks_data:
+ if data['number'] in numbers:
+ blocks.append(Block.from_signed_raw(data["raw"] + data["signature"] + "\n"))
+
+ return blocks
+ return []
async def initialize_blockchain(self, currency, log_stream):
"""
diff --git a/src/sakia/data/processors/transactions.py b/src/sakia/data/processors/transactions.py
index b5f90499..21288340 100644
--- a/src/sakia/data/processors/transactions.py
+++ b/src/sakia/data/processors/transactions.py
@@ -1,13 +1,10 @@
import attr
-import re
from ..entities import Transaction
from .nodes import NodesProcessor
from . import tx_lifecycle
from ..connectors import BmaConnector
-from duniterpy.api import bma, errors
-from duniterpy.documents import Block, BMAEndpoint
-import asyncio
-import time
+from duniterpy.api import bma
+from duniterpy.documents import Block
@attr.s
@@ -122,3 +119,11 @@ class TransactionsProcessor:
self.run_state_transitions(tx, ([r.status for r in responses], block_doc))
self.run_state_transitions(tx, ([r.status for r in responses],))
return result
+
+ def initialize_transactions(self, currency, pubkey):
+ """
+ Request transactions from the network to initialize data for a given pubkey
+ :param str currency:
+ :param str pubkey:
+ """
+ history = await self._bma_connector.get()
\ No newline at end of file
diff --git a/src/sakia/services/identities.py b/src/sakia/services/identities.py
index f9e42f26..d83926ed 100644
--- a/src/sakia/services/identities.py
+++ b/src/sakia/services/identities.py
@@ -50,22 +50,6 @@ class IdentitiesService(QObject):
blockchain_time = self._blockchain_processor.time(self.currency)
return blockchain_time - cert_time < parameters.sig_window * parameters.avg_gen_time
- async def cert_issuance_delay(self, identity):
- """
- Get the remaining time before being able to issue new certification.
- :param sakia.data.entities.Identity identity: the identity
- :return: the remaining time
- """
- if not identity.written_on:
- await self.update_certified_by(identity)
- if len(certified) > 0:
- latest_time = max([c['cert_time'] for c in certified if c['cert_time']])
- sig_period = await self._blockchain_processor.parameters(self.currency).sig_period
- current_time = await self._blockchain_processor.time(self.currency)
- if current_time - latest_time < sig_period:
- return sig_period - (current_time - latest_time)
- return 0
-
async def load_memberships(self, identity):
"""
Request the identity data and save it to written identities
@@ -271,7 +255,7 @@ class IdentitiesService(QObject):
# requirements requests
for identity in set(need_refresh):
refresh_futures.append(self.refresh_requirements(identity))
- await asyncio.gather(refresh_futures)
+ await asyncio.gather(*refresh_futures)
async def requirements(self, currency, pubkey, uid):
"""
--
GitLab