diff --git a/lib/ucoin/__init__.py b/lib/ucoin/__init__.py index 0e26924dee6493e1619bed7d4e7a87f44bf65ff1..c4f2b0fd658048d2d2cd3ffd0cb87a02826d38da 100644 --- a/lib/ucoin/__init__.py +++ b/lib/ucoin/__init__.py @@ -209,3 +209,4 @@ from . import pks from . import hdc from . import wrappers from . import network +from . import registry diff --git a/lib/ucoin/registry/__init__.py b/lib/ucoin/registry/__init__.py index c3793a484c8e17ca6346c79e31664293d66c5187..1445f929afc55452260d1a982c3db0713398c742 100644 --- a/lib/ucoin/registry/__init__.py +++ b/lib/ucoin/registry/__init__.py @@ -36,3 +36,6 @@ class Amendment(Registry): def __get__(self, **kwargs): return self.requests_get('/amendment', **kwargs).json() + +from . import amendment +from . import community \ No newline at end of file diff --git a/src/cutecoin/core/config.py b/src/cutecoin/core/config.py index 4055be7554f0ebfb213fefccbf99c6d4c81d7827..e2b905173b06cb6440a067ae9112f58a9e1db65e 100644 --- a/src/cutecoin/core/config.py +++ b/src/cutecoin/core/config.py @@ -8,7 +8,7 @@ import logging from optparse import OptionParser import os.path import gnupg -import ucoinpy as ucoin +import ucoin home = os.path.expanduser("~") diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py index 9228e18efc2b9b3fea9657222b3408970f9f96e0..ad99bf5b734f6e1fceba144a8f077a48ffdada13 100644 --- a/src/cutecoin/models/account/__init__.py +++ b/src/cutecoin/models/account/__init__.py @@ -4,14 +4,14 @@ Created on 1 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin import gnupg import logging import json from cutecoin.models.account.wallets import Wallets from cutecoin.models.account.communities import Communities from cutecoin.models.community import Community -from cutecoin.models.transaction import factory +from cutecoin.models.transaction import Transaction from cutecoin.models.person import Person from cutecoin.core.exceptions import CommunityNotFoundError @@ -94,7 +94,7 @@ class Account(object): self.fingerprint())) for trx_data in transactions_data: received.append( - factory.create_transaction( + Transaction.create( trx_data['value']['transaction']['sender'], trx_data['value']['transaction']['number'], community)) @@ -111,50 +111,12 @@ class Account(object): # Small bug in ucoinpy library if not isinstance(trx_data, str): sent.append( - factory.create_transaction( + Transaction.create( trx_data['value']['transaction']['sender'], trx_data['value']['transaction']['number'], community)) return sent - def last_issuances(self, community): - issuances = [] - if community in self.communities.communities_list: - issuances_data = community.network.request( - ucoin.hdc.transactions.sender.Issuance( - self.fingerprint())) - for issuance in issuances_data: - logging.debug(issuance) - issuances.append( - factory.create_transaction( - issuance['value']['transaction']['sender'], - issuance['value']['transaction']['number'], - community)) - return issuances - - def issued_last_dividend(self, community): - current_amendment_number = community.amendment_number() - if community in self.communities.communities_list: - dividends_data = community.network.request( - ucoin.hdc.transactions.sender.issuance.Dividend( - self.fingerprint(), - current_amendment_number)) - for dividend in dividends_data: - # Small bug in ucoinpy library - if not isinstance(dividend, str): - return True - return False - - def issue_dividend(self, community, coins): - if community in self.communities.communities_list: - logging.debug(coins) - issuance = ucoin.wrappers.transactions.Issue( - self.fingerprint(), - community.amendment_number(), - coins, - keyid=self.keyid) - return issuance() - def transfer_coins(self, node, recipient, coins, message): transfer = ucoin.wrappers.transactions.RawTransfer( self.fingerprint(), @@ -166,10 +128,12 @@ class Account(object): port=node.port) return transfer() + #TODO: Adapt to new WHT def tht(self, community): if community in self.communities.communities_list: - tht = community.ucoinRequest(ucoin.ucg.tht(self.fingerprint())) - return tht['entries'] + #tht = community.ucoinRequest(ucoin.wallets.tht(self.fingerprint())) + #return tht['entries'] + return None return None def push_tht(self, community): @@ -201,10 +165,10 @@ class Account(object): 'signature': str(signature) } - community.network.post( - ucoin.ucg.THT( - pgp_fingerprint=self.fingerprint()), - dataPost) + #community.network.post( + # ucoin.ucg.THT( + # pgp_fingerprint=self.fingerprint()), + # dataPost) else: raise CommunityNotFoundError(self.keyid, community.amendment_id()) diff --git a/src/cutecoin/models/account/communities/__init__.py b/src/cutecoin/models/account/communities/__init__.py index 62f205e9658bbff03aef61e7fdb32bec6e28e182..201265d88bc295c0a925b9f5db8b7382a8a88e04 100644 --- a/src/cutecoin/models/account/communities/__init__.py +++ b/src/cutecoin/models/account/communities/__init__.py @@ -5,7 +5,7 @@ Created on 5 févr. 2014 ''' from cutecoin.models.community import Community from cutecoin.core.exceptions import NotMemberOfCommunityError -import ucoinpy as ucoin +import ucoin import logging diff --git a/src/cutecoin/models/community/__init__.py b/src/cutecoin/models/community/__init__.py index ed9a30c362908c23c5c9478d65cd7cf7b22ec525..83a2d88b6b59413bc99accdbde53618ef41721ce 100644 --- a/src/cutecoin/models/community/__init__.py +++ b/src/cutecoin/models/community/__init__.py @@ -4,7 +4,7 @@ Created on 1 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin import hashlib import json import logging @@ -26,7 +26,7 @@ class Community(object): An account is a member of a community if he is a member of the current amendment. ''' self.network = network - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) self.currency = current_amendment['currency'] @classmethod @@ -58,29 +58,29 @@ class Community(object): return self.currency def __eq__(self, other): - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) current_amendment_hash = hashlib.sha1( current_amendment['raw'].encode('utf-8')).hexdigest().upper() - other_amendment = other.network.request(ucoin.hdc.amendments.Current()) + other_amendment = other.network.request(ucoin.hdc.amendments.Promoted()) other_amendment_hash = hashlib.sha1( other_amendment['raw'].encode('utf-8')).hexdigest().upper() return (other_amendment_hash == current_amendment_hash) def dividend(self): - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) return int(current_amendment['dividend']) def coin_minimal_power(self): - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) if 'coinMinimalPower' in current_amendment.keys(): return int(current_amendment['coinMinimalPower']) else: return 0 def amendment_id(self): - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) current_amendment_hash = hashlib.sha1( current_amendment['raw'].encode('utf-8')).hexdigest().upper() amendment_id = str( @@ -89,7 +89,7 @@ class Community(object): return amendment_id def amendment_number(self): - current_amendment = self.network.request(ucoin.hdc.amendments.Current()) + current_amendment = self.network.request(ucoin.hdc.amendments.Promoted()) return int(current_amendment['number']) def person_quality(self, fingerprint): @@ -105,7 +105,7 @@ class Community(object): Listing members of a community ''' fingerprints = self.network.request( - ucoin.hdc.amendments.view.Members( + ucoin.registry.community.Members( amendment_id=self.amendment_id())) members = [] for f in fingerprints: @@ -117,7 +117,7 @@ class Community(object): Listing members of a community ''' fingerprints = self.network.request( - ucoin.hdc.amendments.view.Voters( + ucoin.registry.community.Voters( amendment_id=self.amendment_id())) voters = [] for f in fingerprints: diff --git a/src/cutecoin/models/community/network.py b/src/cutecoin/models/community/network.py index e8425b969528a0e56df44706596faca92204a576..a2e87e22e669c016ad6f8b2c613370c599f3c859 100644 --- a/src/cutecoin/models/community/network.py +++ b/src/cutecoin/models/community/network.py @@ -4,7 +4,7 @@ Created on 27 mars 2014 @author: inso ''' from cutecoin.models.node import Node -import ucoinpy as ucoin +import ucoin import logging class CommunityNetwork(object): @@ -60,6 +60,14 @@ class CommunityNetwork(object): self.trusts()[0])) return nodes + def trusts(self): + return [node for node in self.nodes if node.trust] + + def hosters(self): + return [node for node in self.nodes if node.hoster] + +#TODO: Manager in Wallets +""" def pull_tht(self, fingerprint): tht = self.network.request(ucoin.ucg.THT(fingerprint)) nodes = [] @@ -87,9 +95,4 @@ class CommunityNetwork(object): self._search_node_by_fingerprint( node_fg, self.trusts()[0])) - - def trusts(self): - return [node for node in self.nodes if node.trust] - - def hosters(self): - return [node for node in self.nodes if node.hoster] +""" diff --git a/src/cutecoin/models/node/__init__.py b/src/cutecoin/models/node/__init__.py index fdac61d8dd5390d16c0887717439614e3193da7b..2de0ebf3ace538f33347d2809ad4dfccc32b3ef9 100644 --- a/src/cutecoin/models/node/__init__.py +++ b/src/cutecoin/models/node/__init__.py @@ -4,7 +4,7 @@ Created on 1 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin class Node(object): @@ -38,19 +38,19 @@ class Node(object): ucoin.settings['port'] = self.port peers = [] - for peer in ucoin.ucg.peering.peers.DownStream().get()['peers']: + for peer in ucoin.network.peering.peers.DownStream().get()['peers']: node = Node(peer['ipv4'], peer['port']) peers.append(node) return peers def peering(self): - request = ucoin.ucg.peering.Peer() + request = ucoin.network.Peering() self.use(request) return request.get() def peers(self): - request = ucoin.ucg.peering.Peers() + request = ucoin.network.peering.Peers() self.use(request) return request.get() diff --git a/src/cutecoin/models/person/__init__.py b/src/cutecoin/models/person/__init__.py index 5d6ad21ed8e51356d517325e13378034320538a4..cd6ff8b658ec1cf473c0b9166929ce44fef57ae7 100644 --- a/src/cutecoin/models/person/__init__.py +++ b/src/cutecoin/models/person/__init__.py @@ -4,7 +4,7 @@ Created on 11 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin from cutecoin.core.exceptions import PersonNotFoundError diff --git a/src/cutecoin/models/transaction/__init__.py b/src/cutecoin/models/transaction/__init__.py index 43f173d0c1c59a45803b014ea916d9a6724f47a4..60b369f8d4cdb6e9b55576ca5885d0394750a1db 100644 --- a/src/cutecoin/models/transaction/__init__.py +++ b/src/cutecoin/models/transaction/__init__.py @@ -4,8 +4,9 @@ Created on 1 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin from cutecoin.models.coin import Coin +from cutecoin.models.person import Person class Transaction(object): @@ -15,56 +16,40 @@ class Transaction(object): At the moment the difference is not made ''' - def __init__(self): - self.increment = 0 - self.community = "" - self.sender = None - self.recipient = None + def __init__(self, sender, tx_number, community, recipient): + self.tx_number = tx_number + self.community = community + self.sender = sender + self.recipient = recipient + + @classmethod + def create(cls, pgp_fingerprint, tx_number, community): + transaction_view = community.network.request( + ucoin.hdc.transactions.sender.View(pgp_fingerprint, tx_number)) + transaction_data = transaction_view['transaction'] + + sender = Person.lookup(pgp_fingerprint, community) + recipient = Person.lookup( + transaction_data['recipient'], + community) + + return cls(Transaction(sender, tx_number, community, recipient)) def value(self): value = 0 trx_data = self.community.network.request( - ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment))) + ucoin.hdc.transactions.sender.View(self.sender.fingerprint, + self.tx_number)) for coin in trx_data['transaction']['coins']: value += Coin.from_id(coin['id']).value() return value def currency(self): trx_data = self.community.network.request( - ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment))) + ucoin.hdc.transactions.sender.View(self.sender.fingerprint, + self.tx_number)) currency = trx_data['transaction']['currency'] return currency def transaction_id(self): return self.sender_fingerprint + "-" + self.increment - - -class Transfer(Transaction): - - ''' - A received transaction - ''' - - def __init__(self): - super(Transfer).__init__() - - def get_text(self): - return str(self.value()) + " " + self.currency() + \ - " from " + self.sender.name - - -class Issuance(Transaction): - - ''' - An issuance - ''' - - def __init__(self): - super(Issuance).__init__() - - def amendment_number(self): - self.community.network.request( - ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment))) - - def get_text(self): - return str(self.value()) + " " + self.currency() diff --git a/src/cutecoin/models/transaction/factory.py b/src/cutecoin/models/transaction/factory.py deleted file mode 100644 index f5f40ece19e8d7631d90328b70ec8e6edf88566b..0000000000000000000000000000000000000000 --- a/src/cutecoin/models/transaction/factory.py +++ /dev/null @@ -1,33 +0,0 @@ -''' -Created on 12 févr. 2014 - -@author: inso -''' -import ucoinpy as ucoin - -from cutecoin.models.person import Person -from cutecoin.models.transaction import Transfer, Issuance - -# TODO: Passer par des factory + pythonic - - -def create_transaction(sender_fingerprint, increment, community): - transaction_id = sender_fingerprint + "-" + str(increment) - transaction_view = community.network.request( - ucoin.hdc.transactions.View(transaction_id)) - transaction_data = transaction_view['transaction'] - transaction = None - if transaction_data['type'] == 'TRANSFER': - transaction = Transfer() - elif transaction_data['type'] == 'ISSUANCE': - transaction = Issuance() - - if transaction is not None: - transaction.increment = increment - transaction.community = community - transaction.sender = Person.lookup(sender_fingerprint, community) - transaction.recipient = Person.lookup( - transaction_data['recipient'], - community) - - return transaction diff --git a/src/cutecoin/models/transaction/receivedListModel.py b/src/cutecoin/models/transaction/receivedListModel.py index c46930d23dcb00896a9713954834efd7e7c5cd30..a40d3acdfe9f9715a99d6298b616ca5b87a66623 100644 --- a/src/cutecoin/models/transaction/receivedListModel.py +++ b/src/cutecoin/models/transaction/receivedListModel.py @@ -4,7 +4,7 @@ Created on 5 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin import logging from PyQt5.QtCore import QAbstractListModel, Qt diff --git a/src/cutecoin/models/transaction/sentListModel.py b/src/cutecoin/models/transaction/sentListModel.py index 27a1c00d45eac409280fc8ef3b964fcea74ab99e..dc767c2aab3f69e16980fe6e46997378e1d52ed2 100644 --- a/src/cutecoin/models/transaction/sentListModel.py +++ b/src/cutecoin/models/transaction/sentListModel.py @@ -4,7 +4,7 @@ Created on 5 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin import logging from PyQt5.QtCore import QAbstractListModel, Qt diff --git a/src/cutecoin/models/wallet/__init__.py b/src/cutecoin/models/wallet/__init__.py index 20da778f787bf0421a66efd41b5ecb19e667b629..8eeca0ea94418c19d4b0c494a9f7a216d17ea309 100644 --- a/src/cutecoin/models/wallet/__init__.py +++ b/src/cutecoin/models/wallet/__init__.py @@ -4,7 +4,7 @@ Created on 1 févr. 2014 @author: inso ''' -import ucoinpy as ucoin +import ucoin import gnupg from cutecoin.models.coin import Coin