def update_data(self): old_keys = set(self.db.keys()) new_keys = set() for candidate in CurrentVote.get_candidates(): try: alias = Address.select().where(Address.address == candidate.address).first().alias except AttributeError: alias = 'unknown' if candidate.start_block == 0 and candidate.end_block == MAX_END_BLOCK: vote_count = CurrentVote.select().where( CurrentVote.address == candidate.address, CurrentVote.start_block == 0, CurrentVote.end_block == MAX_END_BLOCK).count() already_voted = CurrentVote.select().where( CurrentVote.address == candidate.address, CurrentVote.start_block == 0, CurrentVote.end_block == MAX_END_BLOCK, CurrentVote.given_from == Profile.get_active().address).count() > 0 if candidate.perm_type == Permission.ADMIN: required = math.ceil(Permission.num_guardians() * ADMIN_CONSENUS_ADMIN) else: required = math.ceil(Permission.num_guardians() * ADMIN_CONSENUS_MINE) key = (candidate.address, candidate.perm_type) new_keys.add(key) self.db[key] = [alias, candidate.address.address, candidate.perm_type, "{} of {}".format(vote_count, required), already_voted] deleted_keys = old_keys - new_keys for key in deleted_keys: del self.db[key]
def data(self, idx: QModelIndex, role=None): if role == Qt.TextAlignmentRole and idx.column() in (3, 4, 5): return Qt.AlignCenter if not idx.isValid(): return None perm_obj = self._data[idx.row()] if role == Qt.EditRole and idx.column() in (1, 5): return perm_obj.address_id if role != Qt.DisplayRole: return None if idx.column() == 0: return perm_obj.address.alias if idx.column() == 1: return perm_obj.address_id if idx.column() == 2: if self._perm_type == Permission.MINE: last_mined = perm_obj.address.get_last_mined() if last_mined: return timeago.format(last_mined, datetime.now()) if self._perm_type == Permission.ADMIN: last_voted = perm_obj.address.get_last_voted() if last_voted: return timeago.format(last_voted, datetime.now()) return 'Never' if idx.column() == 3: if self._perm_type == Permission.MINE: return "{} Blocks".format( perm_obj.address.get_mined_last_24_hours()) else: return "{} Votes".format( perm_obj.address.get_voted_last_24_hours()) if idx.column() == 4: if self._perm_type == Permission.MINE: return "{} of {}".format( perm_obj.address.num_validator_revokes(), math.ceil(Permission.num_guardians() * ADMIN_CONSENUS_MINE)) else: return "{} of {}".format( perm_obj.address.num_guardian_revokes(), math.ceil(Permission.num_guardians() * ADMIN_CONSENUS_ADMIN))
def run(self): with data_session_scope() as session: for reward in MiningReward.mined_last_24h(session): self.parent().last_24_h_mine_count[ reward.address] = reward.count for reward in MiningReward.last_mined(session): self.parent().last_mined[reward.address] = reward.last_mined for vote in Vote.voted_last_24h(session): self.parent().last_24_h_vote_count[ vote.from_address] = vote.count for vote in Vote.last_voted(session): self.parent().last_voted[vote.from_address] = vote.last_voted for pending_vote in PendingVote.num_revokes( session, self.parent()._perm_type): self.parent().count_revokes[ pending_vote.address_to] = pending_vote.count self.parent().num_guardians = Permission.num_guardians(session) if self.parent()._perm_type == enums.MINE: self.parent()._data = list(Permission.validators(session)) elif self.parent()._perm_type == enums.ADMIN: self.parent()._data = list(Permission.guardians(session)) self.parent()._alias_list = Alias.get_aliases(session) self.parent().already_revoked = PendingVote.already_revoked( session, self.parent()._perm_type)
def run(self): with data_session_scope() as session: self.parent().candidates = PendingVote.get_candidates(session) self.parent().aliases = Alias.get_aliases(session) self.parent().already_granted = PendingVote.already_granted( session) self.parent().num_guardians = Permission.num_guardians(session)
def permissions_changed(self): with data_session_scope() as session: num_validators = Permission.num_validators(session) self.lbl_num_validators.setText(str(num_validators)) num_guardians = Permission.num_guardians(session) self.lbl_num_guardians.setText(str(num_guardians)) num_candidates = PendingVote.num_candidates(session) self.lbl_num_candidates.setText(str(num_candidates))
def listpermissions(self): num_validators = Permission.num_validators() log.debug('set num validators %s' % num_validators) self.lbl_num_validators.setText(str(num_validators)) num_guardians = Permission.num_guardians() log.debug('set num guardians %s' % num_guardians) self.lbl_num_guardians.setText(str(num_guardians)) num_candidates = CurrentVote.num_candidates() log.debug('set num candidates %s' % num_candidates) self.lbl_num_candidates.setText(str(num_candidates))
def update_num_guardians(self): with data_session_scope() as session: self.num_guardians = Permission.num_guardians(session)