From cbfc3f0af2b52ad5a1bf70cd8f539b7e69796c97 Mon Sep 17 00:00:00 2001 From: Vincent Texier <vit@free.fr> Date: Sat, 20 Dec 2014 18:44:25 +0100 Subject: [PATCH] Wot view : implement search function todo: arc expire date and color based on currency certifications config --- src/cutecoin/wot/qt/form.py | 67 +++++++++++++++++++------------------ src/cutecoin/wot/qt/view.py | 12 +------ 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/src/cutecoin/wot/qt/form.py b/src/cutecoin/wot/qt/form.py index 1e2cab67..b9c0adc3 100644 --- a/src/cutecoin/wot/qt/form.py +++ b/src/cutecoin/wot/qt/form.py @@ -2,15 +2,13 @@ import time import datetime -import hashlib from PyQt5.QtWidgets import QWidget - from cutecoin.gen_resources.wot_form_uic import Ui_Form -import cutecoin.wot.mapi as mapi from cutecoin.wot.qt.view import NODE_STATUS_HIGHLIGHTED, NODE_STATUS_SELECTED, ARC_STATUS_STRONG, ARC_STATUS_WEAK from ucoinpy.api import bma + class Form(QWidget, Ui_Form): def __init__(self, account, community, parent=None): """ @@ -35,9 +33,8 @@ class Form(QWidget, Ui_Form): self.account = account self.community = community - - self.nodes = [] - self.graph = {} + #Â nodes list for menu from search + self.nodes = list() self.signature_validity = 86400 * 365 self.ARC_STATUS_STRONG_time = self.signature_validity - (86400 * 165) self.draw_graph(self.account.pubkey) @@ -48,19 +45,17 @@ class Form(QWidget, Ui_Form): :param public_key: Public key of the identity """ - self.graph = dict() + graph = dict() #Â add wallet node node_status = (NODE_STATUS_HIGHLIGHTED and (public_key == self.account.pubkey)) or 0 node_status += NODE_STATUS_SELECTED certifiers = self.community.request(bma.wot.CertifiersOf, {'search': public_key}) - self.graph[public_key] = {'arcs': [], 'text': certifiers['uid'], 'tooltip': public_key, 'status': node_status} + graph[public_key] = {'arcs': [], 'text': certifiers['uid'], 'tooltip': public_key, 'status': node_status} #Â add certifiers of uid #for certifier in self.community.request(mapi.get_sig_to(public_key): for certifier in certifiers['certifications']: - if certifier['pubkey'] in self.graph.keys(): - continue if (time.time() - certifier['cert_time']['medianTime']) > self.ARC_STATUS_STRONG_time: arc_status = ARC_STATUS_WEAK else: @@ -72,19 +67,18 @@ class Form(QWidget, Ui_Form): certifier['cert_time']['medianTime'] + self.signature_validity ).strftime("%Y/%m/%d") } - node_status = (NODE_STATUS_HIGHLIGHTED and (certifier['pubkey'] == self.account.pubkey)) or 0 - self.graph[certifier['pubkey']] = { - 'arcs': [arc], - 'text': certifier['uid'], - 'tooltip': public_key, - 'status': node_status - } + if certifier['pubkey'] not in graph.keys(): + node_status = (NODE_STATUS_HIGHLIGHTED and (certifier['pubkey'] == self.account.pubkey)) or 0 + graph[certifier['pubkey']] = { + 'arcs': [arc], + 'text': certifier['uid'], + 'tooltip': certifier['pubkey'], + 'status': node_status + } # add certified by uid #for certified in mapi.get_sig_from(public_key): for certified in self.community.request(bma.wot.CertifiedBy, {'search': public_key})['certifications']: - if certified['pubkey'] in self.graph.keys(): - continue if (time.time() - certified['cert_time']['medianTime']) > self.ARC_STATUS_STRONG_time: arc_status = ARC_STATUS_WEAK else: @@ -96,17 +90,18 @@ class Form(QWidget, Ui_Form): certified['cert_time']['medianTime'] + self.signature_validity ).strftime("%Y/%m/%d") } - node_status = (NODE_STATUS_HIGHLIGHTED and (certified['pubkey'] == self.account.pubkey)) or 0 - self.graph[certified['pubkey']] = { - 'arcs': [], - 'text': certified['uid'], - 'tooltip': public_key, - 'status': node_status - } - self.graph[public_key]['arcs'].append(arc) + graph[public_key]['arcs'].append(arc) + if certified['pubkey'] not in graph.keys(): + node_status = (NODE_STATUS_HIGHLIGHTED and (certified['pubkey'] == self.account.pubkey)) or 0 + graph[certified['pubkey']] = { + 'arcs': list(), + 'text': certified['uid'], + 'tooltip': certified['pubkey'], + 'status': node_status + } # draw graph in qt scene - self.graphicsView.scene().update_wot(self.graph) + self.graphicsView.scene().update_wot(graph) def reset(self): """ @@ -128,12 +123,20 @@ class Form(QWidget, Ui_Form): """ if len(text) < 2: return False - self.nodes = mapi.search(text) - if self.nodes: + + response = self.community.request(bma.wot.Lookup, {'search': text}) + nodes = {} + for identity in response['results']: + if identity['uids'][0]['others']: + nodes[identity['pubkey']] = identity['uids'][0]['uid'] + + if nodes: + self.nodes = list() self.comboBoxSearch.clear() self.comboBoxSearch.lineEdit().setText(text) - for node in self.nodes: - self.comboBoxSearch.addItem(node['uid']) + for pubkey, uid in nodes.items(): + self.nodes.append({'pubkey': pubkey, 'uid': uid}) + self.comboBoxSearch.addItem(uid) self.comboBoxSearch.showPopup() def select_node(self, index): diff --git a/src/cutecoin/wot/qt/view.py b/src/cutecoin/wot/qt/view.py index 16c34fe5..9aa5a4e5 100644 --- a/src/cutecoin/wot/qt/view.py +++ b/src/cutecoin/wot/qt/view.py @@ -119,8 +119,6 @@ class Scene(QGraphicsScene): root_node = self.add_node(selected_id, selected_node, (0, 0)) - done = [selected_id] - #Â add certified by selected node y = 0 x = 200 @@ -134,23 +132,15 @@ class Scene(QGraphicsScene): for _id, items in nodes: node = self.add_node(_id, items['node'], (x, y)) self.add_arc(root_node, node, items['arc']) - graph.pop(_id) y += 50 - done.append(_id) #Â add certifiers of selected node y = 0 x = -200 - # capture nodes for sorting by text - nodes = dict() - for _id, certifier_node in graph.items(): - nodes[_id] = certifier_node # sort by text - nodes = ((k, v) for (k, v) in sorted(nodes.items(), key=lambda kv: kv[1]['text'].lower())) + nodes = ((k, v) for (k, v) in sorted(graph.items(), key=lambda kv: kv[1]['text'].lower()) if selected_id in (arc['id'] for arc in v['arcs'])) # add nodes and arcs for _id, certifier_node in nodes: - if _id in done: - continue node = self.add_node(_id, certifier_node, (x, y)) for arc in certifier_node['arcs']: if arc['id'] == selected_id: -- GitLab