From da58e28e46fc2556aa363633527f16a3d5075e7a Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Fri, 21 Aug 2015 19:30:48 +0200 Subject: [PATCH] New API for referentials --- src/cutecoin/core/account.py | 110 ++------------------ src/cutecoin/core/money/__init__.py | 12 +++ src/cutecoin/core/money/quant_zerosum.py | 50 +++++++++ src/cutecoin/core/money/quantitative.py | 44 ++++++++ src/cutecoin/core/money/relative.py | 58 +++++++++++ src/cutecoin/core/money/relative_zerosum.py | 52 +++++++++ src/cutecoin/gui/informations_tab.py | 108 +++++-------------- src/cutecoin/gui/mainwindow.py | 6 +- src/cutecoin/gui/transactions_tab.py | 18 ++-- src/cutecoin/gui/wallets_tab.py | 29 +----- src/cutecoin/models/txhistory.py | 15 +-- src/cutecoin/models/wallets.py | 13 +-- 12 files changed, 269 insertions(+), 246 deletions(-) create mode 100644 src/cutecoin/core/money/__init__.py create mode 100644 src/cutecoin/core/money/quant_zerosum.py create mode 100644 src/cutecoin/core/money/quantitative.py create mode 100644 src/cutecoin/core/money/relative.py create mode 100644 src/cutecoin/core/money/relative_zerosum.py diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py index 4efdaf9a..b26ad98b 100644 --- a/src/cutecoin/core/account.py +++ b/src/cutecoin/core/account.py @@ -12,9 +12,10 @@ import logging import time import asyncio -from PyQt5.QtCore import QObject, pyqtSignal, QCoreApplication, QT_TRANSLATE_NOOP +from PyQt5.QtCore import QObject, pyqtSignal, QCoreApplication from PyQt5.QtNetwork import QNetworkReply +from . import money from .wallet import Wallet from .community import Community from .registry import LocalState @@ -23,91 +24,12 @@ 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 - - :param int units: Value - :param cutecoin.core.community.Community community: Community instance - :return: int - """ - return int(units) - - -def relative(units, community): - """ - Return relaive value of units - - :param int units: Value - :param cutecoin.core.community.Community community: Community instance - :return: float - """ - if community.dividend > 0: - return units / float(community.dividend) - else: - return 0 - - -def quantitative_zerosum(units, community): - """ - Return quantitative value of units minus the average value - - :param int units: Value - :param cutecoin.core.community.Community community: Community instance - :return: int - """ - 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 - - -def relative_zerosum(units, community): - """ - Return relative value of units minus the average value - - :param int units: Value - :param cutecoin.core.community.Community community: Community instance - :return: float - """ - 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 - - class Account(QObject): """ An account is specific to a key. Each account has only one key, and a key can be locally referenced by only one account. """ - # referentials are defined here - # it is a list of tupple, each tupple contains : - # ( - # function used to calculate value, - # format string to display value, - # function used to calculate on differential value, - # format string to display differential value, - # translated name of referential, - # type relative "r" or quantitative "q" to help choose precision on display - # ) - referentials = ( - (quantitative, '{0}', quantitative, '{0}', QT_TRANSLATE_NOOP('Account', 'Units'), 'q'), - (relative, QT_TRANSLATE_NOOP('Account', 'UD {0}'), relative, QT_TRANSLATE_NOOP('Account', 'UD {0}'), - QT_TRANSLATE_NOOP('Account', 'UD'), 'r'), - (quantitative_zerosum, QT_TRANSLATE_NOOP('Account', 'Q0 {0}'), quantitative, '{0}', - QT_TRANSLATE_NOOP('Account', 'Quant Z-sum'), 'q'), - (relative_zerosum, QT_TRANSLATE_NOOP('Account', 'R0 {0}'), relative, QT_TRANSLATE_NOOP('Account', 'UD {0}'), - QT_TRANSLATE_NOOP('Account', 'Relat Z-sum'), 'r') - ) - loading_progressed = pyqtSignal(int, int) loading_finished = pyqtSignal(list) inner_data_changed = pyqtSignal(str) @@ -143,7 +65,7 @@ class Account(QObject): self.contacts = contacts self._refreshing = False self._identities_registry = identities_registry - self.referential = 0 + self._current_ref = 0 @classmethod def create(cls, name, identities_registry): @@ -272,7 +194,7 @@ class Account(QObject): w.refresh_transactions(community, received_list) def set_display_referential(self, index): - self.referential = index + self._current_ref = index def identity(self, community): """ @@ -287,28 +209,8 @@ class Account(QObject): return identity @property - def units_to_ref(self): - return Account.referentials[self.referential][0] - - @property - def units_to_diff_ref(self): - return Account.referentials[self.referential][2] - - def ref_name(self, currency): - text = QCoreApplication.translate('Account', - Account.referentials[self.referential][1]) - return text.format(currency) - - def diff_ref_name(self, currency): - text = QCoreApplication.translate('Account', Account.referentials[self.referential][3]) - return text.format(currency) - - def ref_type(self): - """ - Return type of referential ('q' or 'r', for quantitative or relative) - :return: str - """ - return Account.referentials[self.referential][5] + def current_ref(self): + return money.Referentials[self._current_ref] def set_walletpool_size(self, size, password): """ diff --git a/src/cutecoin/core/money/__init__.py b/src/cutecoin/core/money/__init__.py new file mode 100644 index 00000000..7f550e49 --- /dev/null +++ b/src/cutecoin/core/money/__init__.py @@ -0,0 +1,12 @@ +from enum import Enum + +class RefType(Enum): + q = 0 + r = 1 + +from .quantitative import Quantitative +from .relative import Relative +from .quant_zerosum import QuantitativeZSum +from .relative_zerosum import RelativeZSum + +Referentials = (Quantitative, Relative, QuantitativeZSum, RelativeZSum) diff --git a/src/cutecoin/core/money/quant_zerosum.py b/src/cutecoin/core/money/quant_zerosum.py new file mode 100644 index 00000000..e71f5e90 --- /dev/null +++ b/src/cutecoin/core/money/quant_zerosum.py @@ -0,0 +1,50 @@ +from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP +from . import Quantitative + + +class QuantitativeZSum: + _NAME_STR_ = QT_TRANSLATE_NOOP('QuantitativeZSum', 'Quant Z-sum') + _REF_STR_ = QT_TRANSLATE_NOOP('QuantitativeZSum', "{0} Q0 {1}") + _UNITS_STR_ = QT_TRANSLATE_NOOP('QuantitativeZSum', "Q0 {0}") + + def __init__(self, amount, community, app): + self.amount = amount + self.community = community + self.app = app + + @classmethod + def translated_name(cls): + return QCoreApplication.translate('QuantitativeZSum', QuantitativeZSum._NAME_STR_) + + @classmethod + def units(cls, currency): + return QCoreApplication.translate("QuantitativeZSum", QuantitativeZSum._UNITS_STR_).format(currency) + + @classmethod + def diff_units(cls, currency): + return QuantitativeZSum.units(currency) + + def compute(self): + """ + Return quantitative value of amount minus the average value + + :param int amount: Value + :param cutecoin.core.community.Community community: Community instance + :return: int + """ + ud_block = self.community.get_ud_block() + if ud_block and ud_block['membersCount'] > 0: + average = self.community.monetary_mass / ud_block['membersCount'] + else: + average = 0 + return self.amount - average + + def differential(self): + return Quantitative(self.amount, self.community, self.app).compute() + + def localized(self, pretty_print=False): + value = self.compute() + return QCoreApplication.translate("Quantitative", Quantitative._REF_STR_).format(value, self.community.currency) + + def diff_localized(self, pretty_print=False): + return Quantitative(self.amount, self.community, self.app).amount_to_str(pretty_print) \ No newline at end of file diff --git a/src/cutecoin/core/money/quantitative.py b/src/cutecoin/core/money/quantitative.py new file mode 100644 index 00000000..c104b4ba --- /dev/null +++ b/src/cutecoin/core/money/quantitative.py @@ -0,0 +1,44 @@ +from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP, QObject, QLocale + + +class Quantitative(QObject): + _NAME_STR_ = QT_TRANSLATE_NOOP('Quantitative', 'Units') + _REF_STR_ = QT_TRANSLATE_NOOP('Quantitative', "{0} {1}") + _UNITS_STR_ = QT_TRANSLATE_NOOP('Quantitative', "{0}") + + def __init__(self, amount, community, app): + self.amount = amount + self.community = community + self.app = app + + @classmethod + def translated_name(cls): + return QCoreApplication.translate('Quantitative', 'UD') + + @classmethod + def units(cls, currency): + return QCoreApplication.translate("Quantitative", Quantitative._UNITS_STR_).format(currency) + + @classmethod + def diff_units(cls, currency): + return Quantitative.units(currency) + + def compute(self): + """ + Return quantitative value of amount + + :param int amount: Value + :param cutecoin.core.community.Community community: Community instance + :return: int + """ + return int(self.amount) + + def differential(self): + return self.compute() + + def localized(self, pretty_print=False): + return QCoreApplication.translate("Quantitative", Quantitative._REF_STR_).format(self.amount, self.currency) + + def diff_localized(self, pretty_print=False): + strvalue = QLocale().toString(float(self.amount), 'f', 0) + return QCoreApplication.translate("Quantitative", Quantitative._REF_STR_).format(strvalue, self.currency) diff --git a/src/cutecoin/core/money/relative.py b/src/cutecoin/core/money/relative.py new file mode 100644 index 00000000..1b184b17 --- /dev/null +++ b/src/cutecoin/core/money/relative.py @@ -0,0 +1,58 @@ +from PyQt5.QtCore import QObject, QCoreApplication, QT_TRANSLATE_NOOP, QLocale + + +class Relative(QObject): + _NAME_STR_ = QT_TRANSLATE_NOOP('Relative', 'UD') + _REF_STR_ = QT_TRANSLATE_NOOP('Relative', "{0} UD {1}") + _UNITS_STR_ = QT_TRANSLATE_NOOP('Relative', "UD {0}") + + def __init__(self, amount, community, app): + self.amount = amount + self.community = community + self.app = app + + @classmethod + def translated_name(cls): + return QCoreApplication.translate('Relative', Relative._NAME_STR_) + + @classmethod + def units(self, currency): + return QCoreApplication.translate("Relative", Relative._UNITS_STR_).format(currency) + + @classmethod + def diff_units(self, currency): + return self.units(currency) + + def compute(self): + """ + Return relaive value of amount + type + :param int amount: Value + :param cutecoin.core.community.Community community: Community instance + :return: float + """ + if self.community.dividend > 0: + return self.amount / float(self.community.dividend) + else: + return 0 + + def differential(self): + return self.compute() + + def localized(self, pretty_print=False): + value = self.compute() + if pretty_print: + pass + else: + strvalue = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma']) + return QCoreApplication.translate("Relative", Relative._REF_STR_).format(strvalue, + self.community.currency) + + def diff_localized(self, pretty_print=False): + value = self.differential() + if pretty_print: + pass + else: + strvalue = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma']) + return QCoreApplication.translate("Relative", Relative._REF_STR_).format(strvalue, + self.community.currency) diff --git a/src/cutecoin/core/money/relative_zerosum.py b/src/cutecoin/core/money/relative_zerosum.py new file mode 100644 index 00000000..7487ef54 --- /dev/null +++ b/src/cutecoin/core/money/relative_zerosum.py @@ -0,0 +1,52 @@ +from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP +from . import relative + + +class RelativeZSum: + _NAME_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', 'Relat Z-sum') + _REF_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', "{0} R0 {1}") + _UNITS_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', "R0 {0}") + + def __init__(self, amount, community, app): + self.amount = amount + self.community = community + self.app = app + + @classmethod + def translated_name(cls): + return QCoreApplication.translate('RelativeZSum', RelativeZSum._NAME_STR_) + + @classmethod + def units(cls, currency): + return QCoreApplication.translate("RelativeZSum", RelativeZSum._UNITS_STR_).format(currency) + + @classmethod + def diff_units(cls, currency): + return RelativeZSum.units(currency) + + def value(self): + """ + Return relative value of amount minus the average value + + :param int amount: Value + :param cutecoin.core.community.Community community: Community instance + :return: float + """ + ud_block = self.community.get_ud_block() + if ud_block and ud_block['membersCount'] > 0: + median = self.community.monetary_mass / ud_block['membersCount'] + relative_value = self.amount / float(self.community.dividend) + relative_median = median / self.community.dividend + else: + relative_median = 0 + return relative_value - relative_median + + def differential(self): + return relative.compute(self.amount, self.community) + + def localized(self, pretty_print=False): + value = self.compute(self.amount, self.community) + return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_).format(value, self.community) + + def diff_localized(self, pretty_print=False): + return relative.amount_to_str(self.amount, self.community, pretty_print) \ No newline at end of file diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py index a96464e3..5d494e1a 100644 --- a/src/cutecoin/gui/informations_tab.py +++ b/src/cutecoin/gui/informations_tab.py @@ -57,74 +57,30 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): return False if block_ud: - ud = self.get_referential_diff_value(block_ud['dividend']) - # if referential type is quantitative... - if self.account.ref_type() == 'q': - # display int values - # use the float type of 64bits, to avoid display a 32bit signed integer... - localized_ud = QLocale().toString(float(ud), 'f', 0) - # display int values - localized_ud_plus_1 = QLocale().toString( - float( - self.get_referential_diff_value( - self.community.computed_dividend - ) - ), - 'f', - 0 - ) - localized_mass = QLocale().toString( - float(self.get_referential_diff_value(block_ud['monetaryMass'])), 'f', 0 - ) - if block_ud_minus_1: - localized_mass_minus_1_per_member = QLocale().toString( - float( - self.get_referential_diff_value(float(0) if block_ud['membersCount'] == 0 else - block_ud_minus_1['monetaryMass'] / block_ud['membersCount'] - ) - ), 'f', 0 - ) - localized_mass_minus_1 = QLocale().toString( - float(self.get_referential_diff_value(block_ud_minus_1['monetaryMass'])), 'f', 0 - ) - else: - localized_mass_minus_1_per_member = QLocale().toString( - float(0), 'f', 0 - ) - localized_mass_minus_1 = QLocale().toString( - float(0), 'f', 0 - ) + # display float values + localized_ud = self.account.current_ref(block_ud['dividend'], self.community, self.app).diff_localized() + + # display float values + localized_ud_plus_1 = self.account.current_ref(self.community.computed_dividend, + self.community, self.app).diff_localized() + + localized_mass = self.account.current_ref(block_ud['monetaryMass'], + self.community, self.app) + if block_ud_minus_1: + mass_minus_1 = (float(0) if block_ud['membersCount'] == 0 else + block_ud_minus_1['monetaryMass'] / block_ud['membersCount']) + localized_mass_minus_1_per_member = self.account.current_ref(mass_minus_1, + self.community, self.app).diff_localized() + localized_mass_minus_1 = self.account.current_ref(block_ud_minus_1['monetaryMass'], + self.community, self.app).diff_localized() + else: - # display float values - localized_ud = QLocale().toString(float(ud), 'f', self.app.preferences['digits_after_comma']) - # display float values - localized_ud_plus_1 = QLocale().toString( - float( - self.get_referential_diff_value( - self.community.computed_dividend - ) - ), - 'f', - self.app.preferences['digits_after_comma'] + localized_mass_minus_1_per_member = QLocale().toString( + float(0), 'f', self.app.preferences['digits_after_comma'] ) - localized_mass = QLocale().toString( - float(self.get_referential_diff_value(block_ud['monetaryMass'])), 'f', self.app.preferences['digits_after_comma'] + localized_mass_minus_1 = QLocale().toString( + float(0), 'f', self.app.preferences['digits_after_comma'] ) - if block_ud_minus_1: - localized_mass_minus_1_per_member = QLocale().toString( - float(self.get_referential_diff_value(float(0) if block_ud['membersCount'] == 0 else - block_ud_minus_1['monetaryMass'] / block_ud['membersCount'])), 'f', self.app.preferences['digits_after_comma'] - ) - localized_mass_minus_1 = QLocale().toString( - float(self.get_referential_diff_value(block_ud_minus_1['monetaryMass'])), 'f', self.app.preferences['digits_after_comma'] - ) - else: - localized_mass_minus_1_per_member = QLocale().toString( - float(0), 'f', self.app.preferences['digits_after_comma'] - ) - localized_mass_minus_1 = QLocale().toString( - float(0), 'f', self.app.preferences['digits_after_comma'] - ) # set infos in label self.label_general.setText( @@ -141,15 +97,15 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): """).format( localized_ud, self.tr('Universal Dividend UD(t) in'), - self.get_referential_diff_name(), + self.account.current_ref.diff_units(self.community.currency), localized_mass_minus_1, self.tr('Monetary Mass M(t-1) in'), - self.get_referential_diff_name(), + self.account.current_ref.diff_units(self.community.currency), block_ud['membersCount'], self.tr('Members N(t)'), localized_mass_minus_1_per_member, self.tr('Monetary Mass per member M(t-1)/N(t) in'), - self.get_referential_diff_name(), + self.account.current_ref.diff_units(self.community.currency), float(0) if block_ud['membersCount'] == 0 or block_ud_minus_1['monetaryMass'] == 0 else block_ud['dividend'] / (block_ud_minus_1['monetaryMass'] / block_ud['membersCount']), @@ -189,10 +145,10 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): self.tr('{:} = MAX {{ {:} {:} ; {:2.0%} × {:} {:} / {:} }}').format( localized_ud_plus_1, localized_ud, - self.get_referential_diff_name(), + self.account.current_ref.diff_units(self.community.currency), params['c'], localized_mass, - self.get_referential_diff_name(), + self.account.current_ref.diff_units(self.community.currency), block_ud['membersCount'] ), self.tr('Universal Dividend (computed)') @@ -262,15 +218,3 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): self.tr('Maximum distance between each WoT member and a newcomer'), ) ) - - def get_referential_value(self, value): - return self.account.units_to_ref(value, self.community) - - def get_referential_diff_value(self, value): - return self.account.units_to_diff_ref(value, self.community) - - def get_referential_name(self): - return self.account.ref_name(self.community.short_currency) - - def get_referential_diff_name(self): - return self.account.diff_ref_name(self.community.short_currency) diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py index b685ad51..a893c9db 100644 --- a/src/cutecoin/gui/mainwindow.py +++ b/src/cutecoin/gui/mainwindow.py @@ -21,7 +21,7 @@ from .certification import CertificationDialog from .password_asker import PasswordAskerDialog from .preferences import PreferencesDialog from .homescreen import HomeScreenWidget -from ..core.account import Account +from ..core import money from ..__init__ import __version__ from . import toast @@ -301,8 +301,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.combo_referential.blockSignals(True) self.combo_referential.clear() - for ref in self.app.current_account.referentials: - self.combo_referential.addItem(QCoreApplication.translate('Account', ref[4])) + for ref in money.Referentials: + self.combo_referential.addItem(ref.translated_name()) self.combo_referential.setEnabled(True) self.combo_referential.blockSignals(False) diff --git a/src/cutecoin/gui/transactions_tab.py b/src/cutecoin/gui/transactions_tab.py index be4b11b4..2758daa9 100644 --- a/src/cutecoin/gui/transactions_tab.py +++ b/src/cutecoin/gui/transactions_tab.py @@ -101,7 +101,7 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget): def refresh_balance(self): # if referential is "units" - if self.app.current_account.referential == 0: + if self.app.current_account._current_ref == 0: self.label_balance.show() self.label_deposit.show() self.label_payment.show() @@ -112,25 +112,21 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget): proxy = self.table_history.model() balance = proxy.deposits - proxy.payments - ref = self.app.current_account.units_to_diff_ref - deposits = ref(proxy.deposits, self.community) - localized_deposits = QLocale().toString(deposits) - localized_payments = QLocale().toString( - self.app.current_account.units_to_diff_ref(proxy.payments, self.community)) - localized_balance = QLocale().toString( - self.app.current_account.units_to_diff_ref(balance, self.community)) + localized_deposits = self.app.current_account.current_ref(proxy.deposits, self.community, self.app).diff_localized() + localized_payments = self.app.current_account.current_ref(proxy.payments, self.community, self.app).diff_localized() + localized_balance = self.app.current_account.current_ref(balance, self.community, self.app).diff_localized() self.label_deposit.setText(QCoreApplication.translate("TransactionsTabWidget", "<b>Deposits</b> {:} {:}").format( localized_deposits, - self.app.current_account.ref_name(self.community.short_currency) + self.app.current_account.current_ref.units(self.community.short_currency) )) self.label_payment.setText(QCoreApplication.translate("TransactionsTabWidget", "<b>Payments</b> {:} {:}").format( localized_payments, - self.app.current_account.ref_name(self.community.short_currency) + self.app.current_account.current_ref.units(self.community.short_currency) )) self.label_balance.setText(QCoreApplication.translate("TransactionsTabWidget", "<b>Balance</b> {:} {:}").format( localized_balance, - self.app.current_account.ref_name(self.community.short_currency) + self.app.current_account.current_ref.units(self.community.short_currency) )) def history_context_menu(self, point): diff --git a/src/cutecoin/gui/wallets_tab.py b/src/cutecoin/gui/wallets_tab.py index 881c18ee..77a12f9d 100644 --- a/src/cutecoin/gui/wallets_tab.py +++ b/src/cutecoin/gui/wallets_tab.py @@ -140,26 +140,17 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): amount = self.account.amount(self.community) maximum = self.community.monetary_mass # if referential type is quantitative... - if self.account.ref_type() == 'q': # display int values - localized_amount = QLocale().toString(float(self.get_referential_value(amount)), 'f', 0) - localized_minimum = QLocale().toString(float(self.get_referential_value(0)), 'f', 0) - localized_maximum = QLocale().toString(float(self.get_referential_value(maximum)), 'f', 0) - else: - # display float values - localized_amount = QLocale().toString(float(self.get_referential_value(amount)), 'f', - self.app.preferences['digits_after_comma']) - localized_minimum = QLocale().toString(float(self.get_referential_value(0)), 'f', - self.app.preferences['digits_after_comma']) - localized_maximum = QLocale().toString(float(self.get_referential_value(maximum)), 'f', - self.app.preferences['digits_after_comma']) + localized_amount = self.account.current_ref(amount, self.community, self.app).localized() + localized_minimum = self.account.current_ref(maximum, self.community, self.app).localized() + localized_maximum = self.account.current_ref(0, self.community, self.app).localized() # set infos in label self.label_balance.setText( self.tr("{:} {:}") .format( localized_amount, - self.get_referential_name() + self.account.current_ref.units(self.community.currency) ) ) self.label_balance_range.setText( @@ -167,20 +158,10 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): .format( localized_minimum, localized_maximum, - self.get_referential_name() + self.account.current_ref.units(self.community.currency) ) ) - - def get_referential_value(self, value): - return self.account.units_to_ref(value, self.community) - - def get_referential_diff_value(self, value): - return self.account.units_to_diff_ref(value, self.community) - - def get_referential_name(self): - return self.account.ref_name(self.community.short_currency) - def wallet_context_menu(self, point): index = self.table_wallets.indexAt(point) model = self.table_wallets.model() diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 6b07f369..e6b954b9 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -6,6 +6,7 @@ Created on 5 févr. 2014 import datetime import logging +from ..core import money from ..core.transfer import Transfer from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \ QDateTime, QLocale, QModelIndex @@ -111,15 +112,7 @@ class TxFilterProxyModel(QSortFilterProxyModel): if source_index.column() == model.columns_types.index('payment') or \ source_index.column() == model.columns_types.index('deposit'): if source_data is not "": - amount_ref = self.account.units_to_diff_ref(source_data, - self.community) - # if referential type is quantitative... - if self.account.ref_type() == 'q': - # display int values - return QLocale().toString(float(amount_ref), 'f', 0) - else: - # display float values - return QLocale().toString(float(amount_ref), 'f', self.app.preferences['digits_after_comma']) + return self.account.current_ref(source_data, self.community, self.app).diff_localized() if role == Qt.FontRole: font = QFont() @@ -172,7 +165,7 @@ class HistoryTableModel(QAbstractTableModel): super().__init__(parent) self.app = app self.community = community - self.account.referential + self.account._current_ref self.transfers_data = [] self.refresh_transfers() @@ -278,7 +271,7 @@ class HistoryTableModel(QAbstractTableModel): if self.columns_types[section] == 'payment' or self.columns_types[section] == 'deposit': return '{:}\n({:})'.format( self.column_headers[section], - self.account.diff_ref_name(self.community.short_currency) + self.account.current_ref.diff_units(self.community.short_currency) ) return self.column_headers[section] diff --git a/src/cutecoin/models/wallets.py b/src/cutecoin/models/wallets.py index f94ffedb..48a939a1 100644 --- a/src/cutecoin/models/wallets.py +++ b/src/cutecoin/models/wallets.py @@ -42,16 +42,7 @@ class WalletsFilterProxyModel(QSortFilterProxyModel): source_data = pubkey return source_data if source_index.column() == self.sourceModel().columns_types.index('amount'): - amount_ref = self.account.units_to_ref(source_data, self.community) - # if referential type is quantitative... - if self.account.ref_type() == 'q': - # display int values - return QLocale().toString(float(amount_ref), 'f', 0) - else: - # display float values - return QLocale().toString(float(amount_ref), 'f', - self.app.preferences['digits_after_comma']) - + return self.account.current_ref(source_data, self.community, self.app).localized() if role == Qt.TextAlignmentRole: if source_index.column() == self.sourceModel().columns_types.index('amount'): return Qt.AlignRight | Qt.AlignVCenter @@ -121,7 +112,7 @@ class WalletsTableModel(QAbstractTableModel): if self.columns_types[section] == 'amount': return '{:}\n({:})'.format( self.columns_headers[section], - self.account.ref_name(self.community.short_currency) + self.account.current_ref.units(self.community.short_currency) ) return self.columns_headers[section] -- GitLab