Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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
Пример #4
0
 def send_money_to_node(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.send_money_to_identity(person)
Пример #5
0
 def sign_node(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.certify_identity(person)
Пример #6
0
 def identity_informations(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.identity_informations(person)
Пример #7
0
 def send_money_to_node(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.send_money_to_identity(person)
Пример #8
0
 def sign_node(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.certify_identity(person)
Пример #9
0
 def identity_informations(self, metadata):
     person = Person.from_metadata(metadata)
     self.parent.identity_informations(person)