Skip to content
Snippets Groups Projects
Commit 2ad7d0c8 authored by inso's avatar inso
Browse files

Merge branch 'dev' into network

parents 49863187 63139fa8
Branches
Tags
No related merge requests found
......@@ -52,6 +52,5 @@ deploy:
draft: true
prerelease: true
on:
branch: master # release from master branch only
appveyor_repo_tag: true # deploy on tag push only
This diff is collapsed.
......@@ -40,6 +40,7 @@ class Application(QObject):
:param argv: The argv parameters of the call
"""
super().__init__()
self.qapp = qapp
self.accounts = {}
self.current_account = None
self.loop = loop
......@@ -56,8 +57,10 @@ class Application(QObject):
}
self.load()
self.switch_language()
translator = QTranslator(qapp)
def switch_language(self):
translator = QTranslator(self.qapp)
logging.debug("Loading translations")
locale = self.preferences['lang']
QLocale.setDefault(QLocale(locale))
......
......@@ -9,6 +9,7 @@ import hashlib
import re
import time
import asyncio
import math
from PyQt5.QtCore import QObject, pyqtSignal
from requests.exceptions import RequestException
......@@ -131,6 +132,30 @@ class Community(QObject):
else:
return 1
@property
def computed_dividend(self):
"""
Get the computed community universal dividend.
Calculation based on t = last UD block time and on values from the that block :
UD(computed) = CEIL(MAX(UD(t) ; c * M(t) / N(t)))
:return: The computed UD or 1 if no UD was generated.
"""
block = self.get_ud_block()
if block:
return math.ceil(
max(
self.dividend(),
float(0) if block['membersCount'] != 0 else
self.parameters['c'] * block['monetaryMass'] / block['membersCount']
)
)
else:
return 1
def get_ud_block(self, x=0):
"""
Get a block with universal dividend
......
......@@ -89,7 +89,7 @@ class BmaAccess(QObject):
if isinstance(first, dict):
for key in first:
if isinstance(second, dict):
if second.has_key(key):
if key in second:
sec = second[key]
else:
# there are key in the first, that is not presented in the second
......@@ -159,8 +159,8 @@ class BmaAccess(QObject):
if 'value' not in self._data[cache_key]:
self._data[cache_key]['value'] = {}
self._data[cache_key]['metadata']['block'] = self._network.latest_block
self._data[cache_key]['metadata']['block'] = self._network.latest_block
if not self._compare_json(self._data[cache_key]['value'], data):
self._data[cache_key]['value'] = data
return True
......
......@@ -150,7 +150,7 @@ class TxHistory():
tx_history = yield from community.bma_access.future_request(qtbma.tx.history.Blocks,
req_args={'pubkey': self.wallet.pubkey,
'from_':str(parsed_block),
'to_': str(parsed_block + 100)})
'to_': str(parsed_block + 99)})
if self._stop_coroutines:
return
......@@ -167,7 +167,7 @@ class TxHistory():
yield from self._parse_transaction(community, txdata, new_transfers, received_list, txid)
self.wallet.refresh_progressed.emit(parsed_block, current_block, self.wallet.pubkey)
parsed_block += 101
parsed_block += 100
if current_block > self.latest_block:
self.available_sources = yield from self.wallet.future_sources(community)
......
......@@ -38,38 +38,84 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
# try to request money variables from last ud block
try:
block = self.community.get_ud_block()
block_ud = self.community.get_ud_block()
except Exception as e:
logging.debug('community get_ud_block error : ' + str(e))
return False
try:
block_t_minus_1 = self.community.get_ud_block(1)
block_ud_minus_1 = self.community.get_ud_block(1)
except Exception as e:
logging.debug('community get_ud_block error : ' + str(e))
return False
if block:
ud = self.get_referential_diff_value(block['dividend'])
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)
localized_mass_per_member = QLocale().toString(
float(self.get_referential_diff_value(block['monetaryMass'] / block['membersCount'])), '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_monetary_mass = QLocale().toString(
float(self.get_referential_diff_value(block['monetaryMass'])), 'f', 0
localized_mass_minus_1 = QLocale().toString(
float(0), 'f', 0
)
else:
# display float values
localized_ud = QLocale().toString(ud, 'f', 6)
localized_mass_per_member = QLocale().toString(
float(0) if block['membersCount'] <= 0 else
self.get_referential_diff_value(block['monetaryMass'] / block['membersCount']), 'f', 6
# display float values
localized_ud_plus_1 = QLocale().toString(
float(
self.get_referential_diff_value(
self.community.computed_dividend
)
),
'f',
6
)
localized_monetary_mass = QLocale().toString(
self.get_referential_diff_value(block['monetaryMass']), 'f', 6
localized_mass = QLocale().toString(
float(self.get_referential_diff_value(block_ud['monetaryMass'])), 'f', 6
)
if block_ud_minus_1:
localized_mass_minus_1_per_member = QLocale().toString(
self.get_referential_diff_value(float(0) if block_ud['membersCount'] == 0 else
block_ud_minus_1['monetaryMass'] / block_ud['membersCount']), 'f', 6
)
localized_mass_minus_1 = QLocale().toString(
self.get_referential_diff_value(block_ud_minus_1['monetaryMass']), 'f', 6
)
else:
localized_mass_minus_1_per_member = QLocale().toString(
float(0), 'f', 6
)
localized_mass_minus_1 = QLocale().toString(
float(0), 'f', 6
)
# set infos in label
......@@ -82,26 +128,34 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
<tr><td align="right"><b>{:}</b></td><td>{:} {:}</td></tr>
<tr><td align="right"><b>{:2.2%} / {:} days</b></td><td>{:}</td></tr>
<tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
<tr><td align="right"><b>{:}</b></td><td>{:}</td></tr>
</table>
""").format(
localized_ud,
self.tr('Universal Dividend UD(t) in'),
self.get_referential_diff_name(),
localized_monetary_mass,
self.tr('Monetary Mass M(t) in'),
localized_mass_minus_1,
self.tr('Monetary Mass M(t-1) in'),
self.get_referential_diff_name(),
block['membersCount'],
block_ud['membersCount'],
self.tr('Members N(t)'),
localized_mass_per_member,
self.tr('Monetary Mass per member M(t)/N(t) in'),
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_t_minus_1['membersCount'] == 0 else
block['dividend'] / (block_t_minus_1['monetaryMass'] / block_t_minus_1['membersCount']),
float(0) if block_ud_minus_1['membersCount'] == 0 else
block_ud['dividend'] / (block_ud_minus_1['monetaryMass'] / block_ud_minus_1['membersCount']),
params['dt'] / 86400,
self.tr('Actual growth c = UD(t)/[M(t-1)/N(t-1)]'),
self.tr('Actual growth c = UD(t)/[M(t-1)/N(t)]'),
QLocale.toString(
QLocale(),
QDateTime.fromTime_t(block['medianTime'] + params['dt']),
QDateTime.fromTime_t(block_ud['medianTime']),
QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat)
),
self.tr('Last UD date and time (t)'),
QLocale.toString(
QLocale(),
QDateTime.fromTime_t(block_ud['medianTime'] + params['dt']),
QLocale.dateTimeFormat(QLocale(), QLocale.ShortFormat)
),
self.tr('Next UD date and time (t+1)')
......@@ -110,36 +164,7 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
else:
self.label_general.setText(self.tr('No Universal Dividend created yet.'))
if block:
# if referential type is quantitative...
if self.account.ref_type() == 'q':
# display int values
localized_ud_t1 = QLocale().toString(
float(
self.get_referential_diff_value(
math.ceil(
max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])
)
)
),
'f',
0
)
else:
# display float values
localized_ud_t1 = QLocale().toString(
float(
self.get_referential_diff_value(
math.ceil(
float(0) if block['membersCount'] == 0 else
max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])
)
)
),
'f',
6
)
if block_ud:
# set infos in label
self.label_rules.setText(
self.tr("""
......@@ -151,16 +176,16 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget):
""").format(
self.tr('{:2.0%} / {:} days').format(params['c'], params['dt'] / 86400),
self.tr('Fundamental growth (c) / Delta time (dt)'),
self.tr('UD(t+1) = MAX { UD(t) ; c &#215; M(t) / N(t) }'),
self.tr('UD(t+1) = MAX { UD(t) ; c &#215; M(t) / N(t+1) }'),
self.tr('Universal Dividend (formula)'),
self.tr('{:} = MAX {{ {:} {:} ; {:2.0%} &#215; {:} {:} / {:} }}').format(
localized_ud_t1,
localized_ud_plus_1,
localized_ud,
self.get_referential_diff_name(),
params['c'],
localized_monetary_mass,
localized_mass,
self.get_referential_diff_name(),
block['membersCount']
block_ud['membersCount']
),
self.tr('Universal Dividend (computed)')
)
......
......@@ -35,6 +35,7 @@ class TransactionsTabWidget(QWidget, Ui_transactionsTabWidget):
self.community = community
self.password_asker = password_asker
self.currency_tab = currency_tab
self.app.current_account.loading_finished.connect(self.stop_progress)
self.progressbar.hide()
self.refresh()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment