diff --git a/src/cutecoin/gui/addCommunityDialog.py b/src/cutecoin/gui/addCommunityDialog.py index 49570e4d3161530bfbf0477f7221d7c059f86563..c9dc14df7f3699576c9d45fb2b71b3fe2a650b54 100644 --- a/src/cutecoin/gui/addCommunityDialog.py +++ b/src/cutecoin/gui/addCommunityDialog.py @@ -35,7 +35,7 @@ class AddCommunityDialog(QDialog, Ui_AddCommunityDialog): port = self.portBox.value() try: community = self.account.communities.addCommunity(MainNode(server, port), self.account.keyFingerprint()) - self.account.wallets.addWallet(community.currency) + self.account.wallets.addWallet(community) self.communityView.setModel( CommunityTreeModel(community) ) except NotMemberOfCommunityError as e: QErrorMessage(self).showMessage(e.message) diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py index 5a47522e9918b1e7261b6fdb801b343079fceef3..22bf3c8ce9a8b4d62baddd1f45fc61a749220e0b 100644 --- a/src/cutecoin/models/account/__init__.py +++ b/src/cutecoin/models/account/__init__.py @@ -69,8 +69,7 @@ class Account(object): def jsonify(self): data = {'name' : self.name, 'pgpKeyId' : self.pgpKeyId, - 'communities' : self.communities.jsonify(), - 'wallets' : self.wallets.jsonify()} + 'communities' : self.communities.jsonify(self.wallets)} return data diff --git a/src/cutecoin/models/account/communities/__init__.py b/src/cutecoin/models/account/communities/__init__.py index 52c22af79634da6358e34dc982d7ebc5705d584b..574a84d24facc0acdd65e1b3875e5f76bd130aca 100644 --- a/src/cutecoin/models/account/communities/__init__.py +++ b/src/cutecoin/models/account/communities/__init__.py @@ -37,13 +37,13 @@ class Communities(object): raise NotMemberOfCommunityError(keyFingerprint, community.currency + "-" + community.amendmentId()) - def jsonify(self): + def jsonify(self, wallets): ''' Return the list of communities in a key:value form. ''' data = [] for community in self.communitiesList: - data.append(community.jsonify()) + data.append(community.jsonify(wallets)) return data diff --git a/src/cutecoin/models/account/factory.py b/src/cutecoin/models/account/factory.py index f37a46edb6e3ec93c9f7a524db15c61046b4abc4..ba2c91fd1026ed48601ea773e8ff4f340fea42b8 100644 --- a/src/cutecoin/models/account/factory.py +++ b/src/cutecoin/models/account/factory.py @@ -28,9 +28,8 @@ def loadAccount(jsonData): account.pgpKeyId = jsonData['pgpKeyId'] account.name = jsonData['name'] account.communities = Communities() - for communityData in jsonData['communities']: - account.communities.communitiesList.append(communityFactory.loadCommunity(communityData)) account.wallets = Wallets() - for walletData in jsonData['wallets']: - account.wallets.walletsList.append(walletFactory.loadWallet(walletData)) + + for communityData in jsonData['communities']: + account.communities.communitiesList.append(communityFactory.loadCommunity(communityData, account)) return account \ No newline at end of file diff --git a/src/cutecoin/models/account/wallets/__init__.py b/src/cutecoin/models/account/wallets/__init__.py index f3b15fe173055cc4dda855e09824dafb30e00a35..eb13798ca33622528ca49b47c6e6d254bc599a94 100644 --- a/src/cutecoin/models/account/wallets/__init__.py +++ b/src/cutecoin/models/account/wallets/__init__.py @@ -37,12 +37,13 @@ class Wallets(object): return w return None - def jsonify(self): + def jsonify(self, community): ''' Return the list of wallets in a key:value form. ''' + communityWallets = [w for w in self.walletsList if w.community == community] data = [] - for wallet in self.walletsList: + for wallet in communityWallets: data.append(wallet.jsonify()) return data diff --git a/src/cutecoin/models/community/__init__.py b/src/cutecoin/models/community/__init__.py index 996efcfc5ea1aaa03f7ea88f254146366d438745..2825d08f6016f95d5256c80b52e9360b4cc92a50 100644 --- a/src/cutecoin/models/community/__init__.py +++ b/src/cutecoin/models/community/__init__.py @@ -67,8 +67,9 @@ class Community(object): data.append(node.jsonify()) return data - def jsonify(self): + def jsonify(self, wallets): data = {'nodes' : self.jsonifyNodesList(), - 'currency' : self.currency} + 'currency' : self.currency, + 'wallets' : wallets.jsonify(self)} return data diff --git a/src/cutecoin/models/community/factory.py b/src/cutecoin/models/community/factory.py index 46118c0835f867ce56a12e1d4bf6902fc827ea1d..3576db728362c84a329015996535c8283b65a88b 100644 --- a/src/cutecoin/models/community/factory.py +++ b/src/cutecoin/models/community/factory.py @@ -5,6 +5,7 @@ Created on 11 févr. 2014 ''' from cutecoin.models.community import Community from cutecoin.models.node import MainNode +from cutecoin.models.wallet import factory import ucoinpy as ucoin def createCommunity(mainNode): @@ -15,10 +16,12 @@ def createCommunity(mainNode): return community -def loadCommunity(jsonData): +def loadCommunity(jsonData, account): community = Community() for nodeData in jsonData['nodes']: community.knownNodes.append(MainNode(nodeData['server'], nodeData['port'])) community.currency = jsonData['currency'] + for walletsData in jsonData['wallets']: + account.wallets.walletsList.append(factory.loadWallet(walletsData, community)) return community diff --git a/src/cutecoin/models/wallet/__init__.py b/src/cutecoin/models/wallet/__init__.py index cd54073b456d25536577e2e92865eebbe1e8f0af..ad1e17fab73edc8ffe81e601688a44111250023e 100644 --- a/src/cutecoin/models/wallet/__init__.py +++ b/src/cutecoin/models/wallet/__init__.py @@ -20,11 +20,12 @@ class Wallet(object): Constructor ''' self.coins = [] - self.currency = "" + self.community = None + self.name = "Main Wallet" def __eq__(self, other): - return ( self.currency == other.currency ) + return ( self.community == other.community ) def value(self): value = 0 @@ -32,8 +33,8 @@ class Wallet(object): value += coin.value() return value - def refreshCoins(self, community, pgpFingerprint): - dataList = community.ucoinRequest(lambda : ucoin.hdc.coins.List, ctor_args={'pgp_fingerprint':pgpFingerprint}) + def refreshCoins(self, pgpFingerprint): + dataList = self.community.ucoinRequest(lambda : ucoin.hdc.coins.List, ctor_args={'pgp_fingerprint':pgpFingerprint}) for issaunces in dataList['coins']: issuer = issaunces['issuer'] for coinsIds in issaunces['ids']: @@ -42,7 +43,7 @@ class Wallet(object): self.coins.append(coin) def getText(self): - return str(self.value()) + " " + self.currency + return self.name + " : " + str(self.value()) + " " + self.community.currency def jsonifyCoinsList(self): data = [] @@ -52,6 +53,6 @@ class Wallet(object): def jsonify(self): return {'coins': self.jsonifyCoinsList(), - 'currency': self.currency} + 'name': self.name} diff --git a/src/cutecoin/models/wallet/factory.py b/src/cutecoin/models/wallet/factory.py index bb64558fb348c61a4931e91cca18e4a4e00ad6bd..eb0316a1671738bc4f7e66b2fa96bbf1b3612052 100644 --- a/src/cutecoin/models/wallet/factory.py +++ b/src/cutecoin/models/wallet/factory.py @@ -6,16 +6,16 @@ Created on 11 févr. 2014 from cutecoin.models.wallet import Wallet from cutecoin.models.coin import Coin -def createWallet(currency): +def createWallet(community): wallet = Wallet() - wallet.currency = currency + wallet.community = community return wallet -def loadWallet(jsonData): +def loadWallet(jsonData, community): wallet = Wallet() for coinData in jsonData['coins']: wallet.coins.append(Coin(coinData['coin'])) - wallet.currency = jsonData['currency'] + wallet.community = community return wallet