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
def setStartNode(self, node: Node): """ Sets node as the start node and updates the GUI with it too """ if not node.isEnd: self.start.isStart = False node.isStart = True self.start.cell.draw(Cell.EMPTY) self.start = node node.cell.setStart()
def setEndNode(self, node: Node): """ Sets node as the end node and updates the GUI with it too """ if not node.isStart: self.end.isEnd = False node.isEnd = True self.end.cell.draw(Cell.EMPTY) self.end = node node.cell.setEnd()
def _setupGrid(self): """ Generates the grid of Cells along with the underlying Nodes that are used to visualize the selected algorithm """ # First, generate the grid for x in range(self.numRows): for y in range(self.numCols): # Make the visual Cell representing the Node at x, y, then add it visually at those coordinates cell = Cell(Node(x, y), self) self.ui.gridLayout.addWidget(cell, x, y) # Then reiterate and populate the neighbors, with diagonals enabled by default self.populateNeighbors()
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
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)
def get_node(self, node_id: str) -> Node: node = Node.objects(id=node_id).first() return node