diff --git a/res/ui/informations_tab.ui b/res/ui/informations_tab.ui index 95281ec61ec9124cd8efd5d8ef546cf2f5b2cac6..da2198252f2ae26d0adff941fa928e51534b1119 100644 --- a/res/ui/informations_tab.ui +++ b/res/ui/informations_tab.ui @@ -72,15 +72,15 @@ QGroupBox::title { </widget> </item> <item> - <widget class="QGroupBox" name="group_money"> + <widget class="QGroupBox" name="group_rules"> <property name="title"> - <string>Money</string> + <string>Rules</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout_6"> <item> - <widget class="QLabel" name="label_money"> + <widget class="QLabel" name="label_rules"> <property name="text"> - <string>label_money</string> + <string>label_rules</string> </property> <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> @@ -91,15 +91,15 @@ QGroupBox::title { </widget> </item> <item> - <widget class="QGroupBox" name="group_rules"> + <widget class="QGroupBox" name="group_money"> <property name="title"> - <string>Rules</string> + <string>Money</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QLabel" name="label_rules"> + <widget class="QLabel" name="label_money"> <property name="text"> - <string>label_rules</string> + <string>label_money</string> </property> <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py index e5c6bebf1691706ccc1bfdc21420fb35fe759d3a..71bf6f86fcf7a504636f0edbd9102b703e3e98f6 100644 --- a/src/cutecoin/gui/informations_tab.py +++ b/src/cutecoin/gui/informations_tab.py @@ -47,36 +47,68 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): logging.debug('community get_ud_block error : ' + str(e)) return False - # set infos in label - self.label_general.setText( - """ - <table cellpadding="5"> - <tr><td align="right"><b>{:}</b></div></td><td>{:} {:}</td></tr> - <tr><td align="right"><b>{:}</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> - <tr><td align="right"><b>{:2.2%} / {:} days</b></td><td>{:}</td></tr> - <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> - </table> - """.format( - round(self.get_referential_diff_value(block['dividend'])), - 'Universal Dividend UD(t) in', - self.get_referential_name(), - round(self.get_referential_value(block['monetaryMass'])), - 'Monetary Mass M(t) in', - self.get_referential_name(), - block['membersCount'], - 'Members N(t)', - round(self.get_referential_value(block['monetaryMass'] / block['membersCount'])), - 'Monetary Mass per member M(t)/N(t) in', - self.get_referential_name(), - block['dividend'] / (block_t_minus_1['monetaryMass'] / block['membersCount']), - params['dt'] / 86400, - 'Actual growth c = UD(t)/[M(t-1)/N(t)]', - datetime.datetime.fromtimestamp(block['medianTime'] + params['dt']).strftime("%d/%m/%Y %I:%M"), - 'Next UD date and time (t+1)' + if block: + # set infos in label + self.label_general.setText( + """ + <table cellpadding="5"> + <tr><td align="right"><b>{:}</b></div></td><td>{:} {:}</td></tr> + <tr><td align="right"><b>{:}</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> + <tr><td align="right"><b>{:2.2%} / {:} days</b></td><td>{:}</td></tr> + <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> + </table> + """.format( + round(self.get_referential_diff_value(block['dividend'])), + 'Universal Dividend UD(t) in', + self.get_referential_name(), + round(self.get_referential_value(block['monetaryMass'])), + 'Monetary Mass M(t) in', + self.get_referential_name(), + block['membersCount'], + 'Members N(t)', + round(self.get_referential_value(block['monetaryMass'] / block['membersCount'])), + 'Monetary Mass per member M(t)/N(t) in', + self.get_referential_name(), + block['dividend'] / (block_t_minus_1['monetaryMass'] / block['membersCount']), + params['dt'] / 86400, + 'Actual growth c = UD(t)/[M(t-1)/N(t)]', + datetime.datetime.fromtimestamp(block['medianTime'] + params['dt']).strftime("%d/%m/%Y %I:%M"), + 'Next UD date and time (t+1)' + ) ) - ) + else: + self.label_general.setText('No Universal Dividend created yet.') + + if block: + # set infos in label + self.label_rules.setText( + """ + <table cellpadding="5"> + <tr><td align="right"><b>{:}</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( + '{:2.0%} / {:} days'.format(params['c'], params['dt'] / 86400), + 'Fundamental growth (c) / Delta time (dt)', + 'UD(t+1) = MAX { UD(t) ; c * M(t) / N(t) }', + 'Universal Dividend (formula)', + '{:} = MAX {{ {:} {:} ; {:2.0%} * {:} {:} / {:} }}'.format( + math.ceil(max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])), + round(self.get_referential_diff_value(block['dividend'])), + self.get_referential_name(), + params['c'], + round(self.get_referential_value(block['monetaryMass'])), + self.get_referential_name(), + block['membersCount'] + ), + 'Universal Dividend (computed)' + ) + ) + else: + self.label_rules.setText('No Universal Dividend created yet.') # set infos in label self.label_money.setText( @@ -113,32 +145,6 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): ) ) - # set infos in label - self.label_rules.setText( - """ - <table cellpadding="5"> - <tr><td align="right"><b>{:}</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( - '{:2.0%} / {:} days'.format(params['c'], params['dt'] / 86400), - 'Fundamental growth (c) / Delta time (dt)', - 'UD(t+1) = MAX { UD(t) ; c * M(t) / N(t) }', - 'Universal Dividend (formula)', - '{:} = MAX {{ {:} {:} ; {:2.0%} * {:} {:} / {:} }}'.format( - math.ceil(max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])), - round(self.get_referential_diff_value(block['dividend'])), - self.get_referential_name(), - params['c'], - round(self.get_referential_value(block['monetaryMass'])), - self.get_referential_name(), - block['membersCount'] - ), - 'Universal Dividend (computed)' - ) - ) - # set infos in label self.label_wot.setText( """ diff --git a/src/cutecoin/gui/member.py b/src/cutecoin/gui/member.py index fdfd92acf8aedcbd8a417c9979b5f826b2b934fb..e1877caea6b9b75dfac0950472f94e3691932c7a 100644 --- a/src/cutecoin/gui/member.py +++ b/src/cutecoin/gui/member.py @@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QDialog from ..core.graph import Graph from ..gen_resources.member_uic import Ui_DialogMember - +from ..tools.exceptions import MembershipNotFoundError class MemberDialog(QDialog, Ui_DialogMember): """ @@ -23,10 +23,15 @@ class MemberDialog(QDialog, Ui_DialogMember): self.person = person self.label_uid.setText(person.uid) - join_date = self.person.get_join_date(self.community) - join_date = datetime.datetime.fromtimestamp(join_date).strftime("%d/%m/%Y %I:%M") + try: + join_date = self.person.get_join_date(self.community) + except MembershipNotFoundError: + join_date = None + if join_date is None: join_date = 'not a member' + else: + join_date = datetime.datetime.fromtimestamp(join_date).strftime("%d/%m/%Y %I:%M") # calculate path to account member graph = Graph(self.community) diff --git a/src/cutecoin/models/members.py b/src/cutecoin/models/members.py index 761c0bacdffeab172c54fd434f0e5488986b6630..7e648a1dbdd4717e51b904617978a9d9386d865f 100644 --- a/src/cutecoin/models/members.py +++ b/src/cutecoin/models/members.py @@ -41,7 +41,7 @@ class MembersFilterProxyModel(QSortFilterProxyModel): #logging.debug("{0} > {1}".format(current_time, expiration_data)) will_expire_soon = (current_time > expiration_data*1000 - warning_expiration_time*1000) if role == Qt.DisplayRole: - if source_index.column() == self.sourceModel().columns_ids.index('renew'): + if source_index.column() == self.sourceModel().columns_ids.index('renewed'): date = QDateTime.fromTime_t(source_data) return date.date() if source_index.column() == self.sourceModel().columns_ids.index('expiration'): @@ -71,9 +71,9 @@ class MembersTableModel(QAbstractTableModel): self.columns_titles = { 'uid': 'UID', 'pubkey': 'Pubkey', - 'renew': 'Last renew date', + 'renewed': 'Renewed', 'expiration': 'Expiration'} - self.columns_ids = ('uid', 'pubkey', 'renew', 'expiration') + self.columns_ids = ('uid', 'pubkey', 'renewed', 'expiration') @property def pubkeys(self):