diff --git a/src/sakia/data/processors/blockchain.py b/src/sakia/data/processors/blockchain.py index 4acd2fead212a85f6be32a44f6250283d47c3ac9..867b07f7cf415fbaf0608e5b33d63567ad66a86f 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 b5f9049962c4dbd10818891b87eca03696bf3743..212883409f02dff3e5fe83b702c6c80a88b11ca7 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 f9e42f26e91993ff76a09bce54632aacf4a23476..d83926ede9a766b5cbe91f66afe34e81e372e4b6 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): """