From efc94d069332183df929a0aec52b6f86dd3e745d Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Tue, 18 Feb 2014 08:48:42 +0100
Subject: [PATCH] Issuance transactions are now available !

---
 src/cutecoin/core/config.py                       |  3 +++
 src/cutecoin/models/account/__init__.py           | 11 ++++++-----
 src/cutecoin/models/coin/__init__.py              | 15 ++++++++-------
 src/cutecoin/models/transaction/__init__.py       | 14 +++++++-------
 src/cutecoin/models/transaction/factory.py        |  2 +-
 .../models/transaction/issuancesListModel.py      |  2 +-
 6 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/src/cutecoin/core/config.py b/src/cutecoin/core/config.py
index 177904f9..c1e4595c 100644
--- a/src/cutecoin/core/config.py
+++ b/src/cutecoin/core/config.py
@@ -8,6 +8,7 @@ import logging
 from optparse import OptionParser
 import os.path
 import gnupg
+import ucoinpy as ucoin
 
 
 home = os.path.expanduser("~")
@@ -39,6 +40,8 @@ def parseArguments(argv):
     else:
         logging.getLogger().propagate = False
 
+
+    ucoin.settings['gpg'] = gnupg.GPG()
     logger = logging.getLogger("gnupg")
     logger.setLevel(logging.INFO)
 
diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py
index 393bed91..0141967e 100644
--- a/src/cutecoin/models/account/__init__.py
+++ b/src/cutecoin/models/account/__init__.py
@@ -71,7 +71,7 @@ class Account(object):
         for community in self.communities.communitiesList:
             transactionsData = community.ucoinRequest(ucoin.hdc.transactions.Recipient(self.keyFingerprint()))
             for trxData in transactionsData:
-                received.append(trxFactory.createTransaction(trxData['sender'], trxData['number']))
+                received.append(factory.createTransaction(trxData['value']['transaction']['sender'], trxData['value']['transaction']['number'], community))
         return received
 
     def transactionsSent(self):
@@ -81,7 +81,7 @@ class Account(object):
             for trxData in transactionsData:
                 # Small bug in ucoinpy library
                 if not isinstance(trxData, str):
-                    sent.append(trxFactory.createTransaction(trxData['sender'], trxData['number']))
+                    sent.append(factory.createTransaction(trxData['value']['transaction']['sender'], trxData['value']['transaction']['number'], community))
         return sent
 
     def lastIssuances(self, community):
@@ -89,7 +89,8 @@ class Account(object):
         if community in self.communities.communitiesList:
             issuancesData = community.ucoinRequest(ucoin.hdc.transactions.sender.Issuance(self.keyFingerprint()))
             for issuance in issuancesData:
-                issuances.append(trxFactory.createTransaction(issuance['sender'], issuance['number']))
+                logging.debug(issuance)
+                issuances.append(factory.createTransaction(issuance['value']['transaction']['sender'], issuance['value']['transaction']['number'], community))
         return issuances
 
     def issuedLastDividend(self, community):
@@ -106,8 +107,8 @@ class Account(object):
 
     def issueDividend(self, community, coins):
         if community in self.communities.communitiesList:
-            ucoin.settings['gpg'] = gnupg.GPG()
-            issuance = ucoin.wrappers.transactions.Issue(self.keyFingerprint(), community.amendmentNumber(), coins)
+            logging.debug(coins)
+            issuance = ucoin.wrappers.transactions.Issue(self.keyFingerprint(), community.amendmentNumber(), coins, keyId=self.pgpKeyId)
             return issuance()
 
     def jsonify(self):
diff --git a/src/cutecoin/models/coin/__init__.py b/src/cutecoin/models/coin/__init__.py
index ade69e4b..1cfc8c70 100644
--- a/src/cutecoin/models/coin/__init__.py
+++ b/src/cutecoin/models/coin/__init__.py
@@ -6,6 +6,7 @@ Created on 2 févr. 2014
 
 import re
 import math
+import logging
 
 class Coin(object):
     '''
@@ -21,17 +22,17 @@ class Coin(object):
     @classmethod
     def fromId(cls, coin_id):
         # Regex to parse the coin id
-        regex = "/^([A-Z\d]{40})-(\d+)-(\d)-(\d+)-((A|F|D)-\d+))$/"
+        regex = "^([A-Z\d]{40})-(\d+)-(\d)-(\d+)-((A|F|D)-\d+)$"
         m = re.search(regex, coin_id)
-        issuer = m.group(0)
-        number = int(m.group(1))
-        base = int(m.group(2))
-        power = int(m.group(3))
-        origin = m.group(4)
+        issuer = m.group(1)
+        number = int(m.group(2))
+        base = int(m.group(3))
+        power = int(m.group(4))
+        origin = m.group(5)
         return cls(issuer, number, base, power, origin)
 
     def value(self):
-        return math.pow(self.base, self.power)
+        return self.base*math.pow(10, self.power)
 
     def getId(self):
         return self.issuer + "-" \
diff --git a/src/cutecoin/models/transaction/__init__.py b/src/cutecoin/models/transaction/__init__.py
index 5d69d5c2..6f5908b9 100644
--- a/src/cutecoin/models/transaction/__init__.py
+++ b/src/cutecoin/models/transaction/__init__.py
@@ -20,13 +20,13 @@ class Transaction(object):
 
     def value(self):
         value = 0
-        trxData = self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.pgpFingerprint + "-" + self.increment))
+        trxData = self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment)))
         for coin in trxData['transaction']['coins']:
-            value += Coin.fromId(coin[id]).value()
+            value += Coin.fromId(coin['id']).value()
         return value
 
     def currency(self):
-        trxData = self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.pgpFingerprint + "-" + self.increment))
+        trxData = self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment)))
         currency = trxData['transaction']['currency']
         return currency
 
@@ -43,10 +43,10 @@ class Transfer(Transaction):
         super(Transfer).__init__()
 
     def getReceivedText(self):
-        return str(self.value) + " " + self.currency + " from " + self.sender.name
+        return str(self.value()) + " " + self.currency() + " from " + self.sender.name
 
     def getSentText(self):
-        return str(self.value) + " " + self.currency + " from " + self.recipient.name
+        return str(self.value()) + " " + self.currency() + " from " + self.recipient.name
 
 
 class Issuance(Transaction):
@@ -57,10 +57,10 @@ class Issuance(Transaction):
         super(Issuance).__init__()
 
     def amendmentNumber(self):
-        self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.pgpFingerprint + "-" + self.increment))
+        self.community.ucoinRequest(ucoin.hdc.transactions.View(self.sender.fingerprint + "-" + str(self.increment)))
 
     def getText(self):
-        return str(self.value) + " " + self.currency
+        return str(self.value()) + " " + self.currency()
 
 
 
diff --git a/src/cutecoin/models/transaction/factory.py b/src/cutecoin/models/transaction/factory.py
index d36b11b2..e0f335fe 100644
--- a/src/cutecoin/models/transaction/factory.py
+++ b/src/cutecoin/models/transaction/factory.py
@@ -11,7 +11,7 @@ from cutecoin.models.transaction import Transfer, Issuance
 #TODO: Passer par des factory + pythonic
 def createTransaction(senderFingerprint, increment, community):
     transactionId = senderFingerprint + "-" + str(increment)
-    ucoinTransactionView = ucoin.hdc.transactions.View(transactionId)
+    ucoinTransactionView = community.ucoinRequest(ucoin.hdc.transactions.View(transactionId))
     ucoinTransaction = ucoinTransactionView['transaction']
     transaction = None
     if ucoinTransaction['type']  == 'TRANSFER':
diff --git a/src/cutecoin/models/transaction/issuancesListModel.py b/src/cutecoin/models/transaction/issuancesListModel.py
index 59118d14..d10ae4f3 100644
--- a/src/cutecoin/models/transaction/issuancesListModel.py
+++ b/src/cutecoin/models/transaction/issuancesListModel.py
@@ -24,7 +24,7 @@ class IssuancesListModel(QAbstractListModel):
 
         if role == Qt.DisplayRole:
             row=index.row()
-            value = self.issuances[row]
+            value = self.issuances[row].getText()
             return value
 
     def flags(self,index):
-- 
GitLab