diff --git a/src/cutecoin/core/graph.py b/src/cutecoin/core/graph.py index 12364759e7019222d1c30ae3d15b3e3099091c26..0285b8aa9cbc14dd34defc70b58cadacea2c1b9f 100644 --- a/src/cutecoin/core/graph.py +++ b/src/cutecoin/core/graph.py @@ -52,6 +52,13 @@ class Graph(dict): return path def explore_to_find_member(self, person, nodes=None, done=None): + """ + Scan graph recursively to find person + :param Person person: Person instance to find + :param list nodes: Optional, default=None, List of nodes around the person + :param list done: Optional, default=None, List of node already scanned + :return: + """ # functions keywords args are persistent... Need to reset it with None trick nodes = nodes or (list() and (nodes is None)) done = done or (list() and (done is None)) @@ -80,6 +87,13 @@ class Graph(dict): return True def find_shortest_path(self, start, end, path=list()): + """ + Find recursively the shortest path between two nodes + :param dict start: + :param dict end: + :param list path: + :return: + """ path = path + [start] if start['id'] == end['id']: return path @@ -94,9 +108,16 @@ class Graph(dict): shortest = newpath return shortest - def add_certifier_list(self, certifiers, person, person_account): + def add_certifier_list(self, certifier_list, person, person_account): + """ + Add list of certifiers to graph + :param list certifier_list: List of certifiers from api + :param Person person: Person instance which is certified + :param Person person_account: Account person instance + :return: + """ #Â add certifiers of uid - for certifier in tuple(certifiers): + for certifier in tuple(certifier_list): # add only valid certification... if (time.time() - certifier['cert_time']['medianTime']) > self.signature_validity: continue @@ -141,6 +162,13 @@ class Graph(dict): self[person.pubkey]['nodes'].append(self[certifier['pubkey']]) def add_certified_list(self, certified_list, person, person_account): + """ + Add list of certified from api to graph + :param list certified_list: List of certified from api + :param Person person: Person instance which is certifier + :param Person person_account: Account person instance + :return: + """ # add certified by uid for certified in tuple(certified_list): # add only valid certification... @@ -196,6 +224,14 @@ class Graph(dict): self[person.pubkey]['nodes'].append(self[certified['pubkey']]) def add_person(self, person, status=0, arcs=None, nodes=None): + """ + Add person as a new node in graph + :param Person person: Person instance + :param int status: Node status (see cutecoin.gui.views.wot) + :param list arcs: List of arcs (certified by person) + :param list nodes: List of nodes around person + :return: + """ # functions keywords args are persistent... Need to reset it with None trick arcs = arcs or (list() and (arcs is None)) nodes = nodes or (list() and (nodes is None)) diff --git a/src/cutecoin/gui/community_tab.py b/src/cutecoin/gui/community_tab.py index 8d00628740fcd628563fd4cad339b8e2b6a3f036..87181ff13a2127096be9da58e3c8396340d51416 100644 --- a/src/cutecoin/gui/community_tab.py +++ b/src/cutecoin/gui/community_tab.py @@ -65,6 +65,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): member = Person.lookup(pubkey, self.community) menu = QMenu(self) + informations = QAction("Informations", self) + informations.triggered.connect(self.menu_informations) + informations.setData(member) + add_contact = QAction("Add as contact", self) add_contact.triggered.connect(self.menu_add_as_contact) add_contact.setData(member) @@ -81,6 +85,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): view_wot.triggered.connect(self.view_wot) view_wot.setData(member) + menu.addAction(informations) menu.addAction(add_contact) menu.addAction(send_money) menu.addAction(certify) @@ -89,6 +94,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): # Show the context menu. menu.exec_(QCursor.pos()) + def menu_informations(self): + person = self.sender().data() + self.member_informations(person) + def menu_add_as_contact(self): person = self.sender().data() self.add_member_as_contact(person) @@ -101,7 +110,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): person = self.sender().data() self.certify_member(person) - def show_member(self, person): + def member_informations(self, person): dialog = MemberDialog(self.account, self.community, person) dialog.exec_() diff --git a/src/cutecoin/gui/wot_tab.py b/src/cutecoin/gui/wot_tab.py index aa2b540921f5ac2ef716dfc7f997c11d2d3299f1..adedd1a1baa95fbf85a012d2c86ce8c246e6c76d 100644 --- a/src/cutecoin/gui/wot_tab.py +++ b/src/cutecoin/gui/wot_tab.py @@ -39,7 +39,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): self.graphicsView.scene().node_signed.connect(self.sign_node) self.graphicsView.scene().node_transaction.connect(self.send_money_to_node) self.graphicsView.scene().node_contact.connect(self.add_node_as_contact) - self.graphicsView.scene().node_member.connect(self.show_member) + self.graphicsView.scene().node_member.connect(self.member_informations) self.account = account self.community = community @@ -141,9 +141,9 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): metadata ) - def show_member(self, metadata): + def member_informations(self, metadata): person = get_person_from_metadata(metadata) - self.parent.show_member(person) + self.parent.member_informations(person) def sign_node(self, metadata): person = get_person_from_metadata(metadata)