示例#1
0
    def register_node(self,
                      name: str,
                      node_type: Node_type,
                      node_type_id=0,
                      root="") -> Node:
        """ add a node with a node_type
            *args:
                node_type: Node_type
         """
        def register_root(node: Node, root=""):
            if root is None:
                pass
                #print(f"node: {node.name}, doesn't have root")
            elif root in node.roots:
                pass
                #print(f"root {root} allready exists in node")
                # #PROVISIIIIOOONALLLLLL!!!!!
                # node.roots.append(root)
                # node.save()
            else:
                node.roots.append(root)
                node.save()
            return root

        #IF Node_type is not specify: DO nothing
        if node_type == None and node_type_id == 0:
            print("specify the node_type")
            return
        elif node_type_id == 0:
            pass
        elif node_type == None:
            node_type = Node_type.objects(id=node_type_id).first()

        node = Node.objects(name=name).first()
        if node != None:
            print(f"node {node.name}, all ready exists")
            root = register_root(node=node, root=root)
            return node
        else:
            pass

        node = Node()
        node.name = name
        node.node_type_id = node_type.id
        root = register_root(node=node, root=root)
        node.save()

        node_type.nodes.append(node.id)
        node_type.save()
        return node
示例#2
0
 def get_nodes_with_roots(self, node_type: Node_type, root1: Space,
                          root2: Space):
     """ 
     this method will return the allowed nodes, due to the rule
     that the nodes have to be more than one root
         *args:
             node_type: Node_type
             root1: Space.id
             root2: Space.id
         return:
             list(node_id): list(int)
     """
     print("entry to roots")
     nodes = Node.objects().all() \
         .filter(node_type_id=node_type.id)\
         .filter(roots__1__exists =True)\
         .filter(roots = root2.id)\
         .filter(roots = root1.id)
     print("it works!!!!!!!!! to find the root")
     #.filter(roots__1__exists =True)\
     return list(nodes)
示例#3
0
 def get_node(self, node_id: str) -> Node:
     node = Node.objects(id=node_id).first()
     return node