From 3ce022b44d9441080814cb21fd840dcc054186fc Mon Sep 17 00:00:00 2001 From: Vincent Texier <vit@free.fr> Date: Wed, 8 Jul 2015 13:28:12 +0200 Subject: [PATCH] Fix bugs in calculation of referentials and informations --- src/cutecoin/core/account.py | 40 ++++++++++------------------ src/cutecoin/core/community.py | 4 +-- src/cutecoin/gui/informations_tab.py | 4 +-- src/cutecoin/gui/transfer.py | 4 +-- 4 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py index 7ba205ac..77fed996 100644 --- a/src/cutecoin/core/account.py +++ b/src/cutecoin/core/account.py @@ -24,6 +24,7 @@ from ..tools.exceptions import ContactAlreadyExists from ..core.net.api import bma as qtbma from ..core.net.api.bma import PROTOCOL_VERSION + def quantitative(units, community): """ Return quantitative value of units @@ -43,21 +44,7 @@ def relative(units, community): :param cutecoin.core.community.Community community: Community instance :return: float """ - # calculate ud(t+1) - ud_block = community.get_ud_block() - if ud_block: - ud = math.ceil( - max(community.dividend(), - float(0) if ud_block['membersCount'] == 0 else - community.parameters['c'] * community.monetary_mass / ud_block['membersCount'])) - - if ud == 0: - return float(0) - else: - relative_value = units / float(ud) - return relative_value - else: - return float(0) + return units / float(community.dividend) def quantitative_zerosum(units, community): @@ -68,8 +55,11 @@ def quantitative_zerosum(units, community): :param cutecoin.core.community.Community community: Community instance :return: int """ - # fixme: the value "community.nb_members" is not up to date, luckyly the good value is in "community.get_ud_block()['membersCount']" - average = community.monetary_mass / community.get_ud_block()['membersCount'] + ud_block = community.get_ud_block() + if ud_block and ud_block['membersCount'] > 0: + average = community.monetary_mass / ud_block['membersCount'] + else: + average = 0 return units - average @@ -81,15 +71,13 @@ def relative_zerosum(units, community): :param cutecoin.core.community.Community community: Community instance :return: float """ - # fixme: the value "community.nb_members" is not up to date, luckyly the good value is in "community.get_ud_block()['membersCount']" - median = community.monetary_mass / community.nb_members - # calculate ud(t+1) - ud = math.ceil( - max(community.dividend, - community.parameters['c'] * community.monetary_mass / community.get_ud_block()['membersCount']) - ) - relative_value = units / float(ud) - relative_median = median / ud + ud_block = community.get_ud_block() + if ud_block and ud_block['membersCount'] > 0: + median = community.monetary_mass / ud_block['membersCount'] + relative_value = units / float(community.dividend) + relative_median = median / community.dividend + else: + relative_median = 0 return relative_value - relative_median diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py index 367a97e2..089a23bf 100644 --- a/src/cutecoin/core/community.py +++ b/src/cutecoin/core/community.py @@ -119,7 +119,7 @@ class Community(QObject): u = ord('\u24B6') + ord(letter) - ord('A') return chr(u) - #@property + @property def dividend(self): """ Get the last generated community universal dividend. @@ -147,7 +147,7 @@ class Community(QObject): if block: return math.ceil( max( - self.dividend(), + self.dividend, float(0) if block['membersCount'] == 0 else self.parameters['c'] * block['monetaryMass'] / block['membersCount'] ) diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py index 16330677..efe63126 100644 --- a/src/cutecoin/gui/informations_tab.py +++ b/src/cutecoin/gui/informations_tab.py @@ -150,8 +150,8 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): localized_mass_minus_1_per_member, self.tr('Monetary Mass per member M(t-1)/N(t) in'), self.get_referential_diff_name(), - float(0) if block_ud_minus_1['membersCount'] == 0 else - block_ud['dividend'] / (block_ud_minus_1['monetaryMass'] / block_ud_minus_1['membersCount']), + float(0) if block_ud['membersCount'] == 0 else + block_ud['dividend'] / (block_ud_minus_1['monetaryMass'] / block_ud['membersCount']), params['dt'] / 86400, self.tr('Actual growth c = UD(t)/[M(t-1)/N(t)]'), diff --git a/src/cutecoin/gui/transfer.py b/src/cutecoin/gui/transfer.py index 4b0ce6dc..eb3a8cbd 100644 --- a/src/cutecoin/gui/transfer.py +++ b/src/cutecoin/gui/transfer.py @@ -35,7 +35,7 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): self.wallet = None self.community = self.account.communities[0] self.wallet = self.account.wallets[0] - self.dividend = self.community.dividend() + self.dividend = self.community.dividend regexp = QRegExp('^([ a-zA-Z0-9-_:/;*?\[\]\(\)\\\?!^+=@&~#{}|<>%.]{0,255})$') validator = QRegExpValidator(regexp) @@ -121,7 +121,7 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): def change_current_community(self, index): self.community = self.account.communities[index] - self.dividend = self.community.dividend() + self.dividend = self.community.dividend amount = self.wallet.value(self.community) ref_amount = self.account.units_to_ref(amount, self.community) ref_name = self.account.ref_name(self.community.currency) -- GitLab