Skip to content
Snippets Groups Projects
Commit 2928a2bb authored by Vincent Texier's avatar Vincent Texier
Browse files

Add member informations menu in member table context menu

parent 61d86c38
No related branches found
No related tags found
No related merge requests found
...@@ -52,6 +52,13 @@ class Graph(dict): ...@@ -52,6 +52,13 @@ class Graph(dict):
return path return path
def explore_to_find_member(self, person, nodes=None, done=None): 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 # functions keywords args are persistent... Need to reset it with None trick
nodes = nodes or (list() and (nodes is None)) nodes = nodes or (list() and (nodes is None))
done = done or (list() and (done is None)) done = done or (list() and (done is None))
...@@ -80,6 +87,13 @@ class Graph(dict): ...@@ -80,6 +87,13 @@ class Graph(dict):
return True return True
def find_shortest_path(self, start, end, path=list()): 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] path = path + [start]
if start['id'] == end['id']: if start['id'] == end['id']:
return path return path
...@@ -94,9 +108,16 @@ class Graph(dict): ...@@ -94,9 +108,16 @@ class Graph(dict):
shortest = newpath shortest = newpath
return shortest 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 # add certifiers of uid
for certifier in tuple(certifiers): for certifier in tuple(certifier_list):
# add only valid certification... # add only valid certification...
if (time.time() - certifier['cert_time']['medianTime']) > self.signature_validity: if (time.time() - certifier['cert_time']['medianTime']) > self.signature_validity:
continue continue
...@@ -141,6 +162,13 @@ class Graph(dict): ...@@ -141,6 +162,13 @@ class Graph(dict):
self[person.pubkey]['nodes'].append(self[certifier['pubkey']]) self[person.pubkey]['nodes'].append(self[certifier['pubkey']])
def add_certified_list(self, certified_list, person, person_account): 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 # add certified by uid
for certified in tuple(certified_list): for certified in tuple(certified_list):
# add only valid certification... # add only valid certification...
...@@ -196,6 +224,14 @@ class Graph(dict): ...@@ -196,6 +224,14 @@ class Graph(dict):
self[person.pubkey]['nodes'].append(self[certified['pubkey']]) self[person.pubkey]['nodes'].append(self[certified['pubkey']])
def add_person(self, person, status=0, arcs=None, nodes=None): 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 # functions keywords args are persistent... Need to reset it with None trick
arcs = arcs or (list() and (arcs is None)) arcs = arcs or (list() and (arcs is None))
nodes = nodes or (list() and (nodes is None)) nodes = nodes or (list() and (nodes is None))
......
...@@ -65,6 +65,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): ...@@ -65,6 +65,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
member = Person.lookup(pubkey, self.community) member = Person.lookup(pubkey, self.community)
menu = QMenu(self) 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 = QAction("Add as contact", self)
add_contact.triggered.connect(self.menu_add_as_contact) add_contact.triggered.connect(self.menu_add_as_contact)
add_contact.setData(member) add_contact.setData(member)
...@@ -81,6 +85,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): ...@@ -81,6 +85,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
view_wot.triggered.connect(self.view_wot) view_wot.triggered.connect(self.view_wot)
view_wot.setData(member) view_wot.setData(member)
menu.addAction(informations)
menu.addAction(add_contact) menu.addAction(add_contact)
menu.addAction(send_money) menu.addAction(send_money)
menu.addAction(certify) menu.addAction(certify)
...@@ -89,6 +94,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): ...@@ -89,6 +94,10 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
# Show the context menu. # Show the context menu.
menu.exec_(QCursor.pos()) menu.exec_(QCursor.pos())
def menu_informations(self):
person = self.sender().data()
self.member_informations(person)
def menu_add_as_contact(self): def menu_add_as_contact(self):
person = self.sender().data() person = self.sender().data()
self.add_member_as_contact(person) self.add_member_as_contact(person)
...@@ -101,7 +110,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget): ...@@ -101,7 +110,7 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
person = self.sender().data() person = self.sender().data()
self.certify_member(person) self.certify_member(person)
def show_member(self, person): def member_informations(self, person):
dialog = MemberDialog(self.account, self.community, person) dialog = MemberDialog(self.account, self.community, person)
dialog.exec_() dialog.exec_()
......
...@@ -39,7 +39,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): ...@@ -39,7 +39,7 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
self.graphicsView.scene().node_signed.connect(self.sign_node) self.graphicsView.scene().node_signed.connect(self.sign_node)
self.graphicsView.scene().node_transaction.connect(self.send_money_to_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_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.account = account
self.community = community self.community = community
...@@ -141,9 +141,9 @@ class WotTabWidget(QWidget, Ui_WotTabWidget): ...@@ -141,9 +141,9 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
metadata metadata
) )
def show_member(self, metadata): def member_informations(self, metadata):
person = get_person_from_metadata(metadata) person = get_person_from_metadata(metadata)
self.parent.show_member(person) self.parent.member_informations(person)
def sign_node(self, metadata): def sign_node(self, metadata):
person = get_person_from_metadata(metadata) person = get_person_from_metadata(metadata)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment