def draw_graph(self, metadata): """ Draw community graph centered on the identity :param dict metadata: Graph node metadata of the identity """ logging.debug("Draw graph - " + metadata['text']) self._current_metadata = metadata # create Person from node metadata person = Person.from_metadata(metadata) person_account = Person.from_metadata({'text': self.account.name, 'id': self.account.pubkey}) certifier_list = person.certifiers_of(self.community) certified_list = person.certified_by(self.community) # create empty graph instance graph = Graph(self.community) # add wallet node node_status = 0 if person.pubkey == person_account.pubkey: node_status += NODE_STATUS_HIGHLIGHTED if person.is_member(self.community) is False: node_status += NODE_STATUS_OUT node_status += NODE_STATUS_SELECTED graph.add_person(person, node_status) # populate graph with certifiers-of graph.add_certifier_list(certifier_list, person, person_account) # populate graph with certified-by graph.add_certified_list(certified_list, person, person_account) # draw graph in qt scene self.graphicsView.scene().update_wot(graph.get()) # if selected member is not the account member... if person.pubkey != person_account.pubkey: # add path from selected member to account member path = graph.get_shortest_path_between_members(person, person_account) if path: self.graphicsView.scene().update_path(path)
def draw_graph(self, metadata): """ Draw community graph centered on the identity :param dict metadata: Graph node metadata of the identity """ logging.debug("Draw graph - " + metadata["text"]) self._current_metadata = metadata # create Person from node metadata person = Person.from_metadata(metadata) person_account = Person.from_metadata({"text": self.account.name, "id": self.account.pubkey}) certifier_list = person.certifiers_of(self.community) certified_list = person.certified_by(self.community) # create empty graph instance graph = Graph(self.community) # add wallet node node_status = 0 if person.pubkey == person_account.pubkey: node_status += NODE_STATUS_HIGHLIGHTED if person.is_member(self.community) is False: node_status += NODE_STATUS_OUT node_status += NODE_STATUS_SELECTED graph.add_person(person, node_status) # populate graph with certifiers-of graph.add_certifier_list(certifier_list, person, person_account) # populate graph with certified-by graph.add_certified_list(certified_list, person, person_account) # draw graph in qt scene self.graphicsView.scene().update_wot(graph.get()) # if selected member is not the account member... if person.pubkey != person_account.pubkey: # add path from selected member to account member path = graph.get_shortest_path_between_members(person, person_account) if path: self.graphicsView.scene().update_path(path)
def explore_to_find_member(self, person, connected=None, done=None): """ Scan graph recursively to find person :param Person person: Person instance to find :param list connected: Optional, default=None, Pubkey list of the connected nodes around the current scanned node :param list done: Optional, default=None, List of node already scanned :return: """ # functions keywords args are persistent... Need to reset it with None trick connected = connected or (list() and (connected is None)) done = done or (list() and (done is None)) logging.debug("search %s in " % person.uid) logging.debug([self._graph[pubkey]['text'] for pubkey in connected]) # for each pubkey connected... for pubkey in tuple(connected): # capture node connected node = self._graph[pubkey] if node['id'] in tuple(done): continue person_selected = Person.from_metadata(node) certifier_list = person_selected.certifiers_of(self.community) self.add_certifier_list(certifier_list, person_selected, person) if person.pubkey in tuple(self._graph.keys()): return False certified_list = person_selected.certified_by(self.community) self.add_certified_list(certified_list, person_selected, person) if person.pubkey in tuple(self._graph.keys()): return False if node['id'] not in tuple(done): done.append(node['id']) if len(done) >= len(self._graph): return True result = self.explore_to_find_member(person, self._graph[person_selected.pubkey]['connected'], done) if not result: return False return True
def send_money_to_node(self, metadata): person = Person.from_metadata(metadata) self.parent.send_money_to_identity(person)
def sign_node(self, metadata): person = Person.from_metadata(metadata) self.parent.certify_identity(person)
def identity_informations(self, metadata): person = Person.from_metadata(metadata) self.parent.identity_informations(person)