def get_parent_node_id(cid):
        if not msc.MSC.row_with_cid_exists(cid, 1):
            return None

        colnames = ["id", "parent_id"]
        results = msc.MSC.get_collection(colnames, cid)

        if msc.has_one_row(results):
            return results[0][1]  # get parent_id
    def create_and_link_parent_node(self):
        colnames = ["id", "parent_id"]
        results = msc.MSC.get_collection(colnames, self.cid)

        # create TreeNode object for the parent and link it to the current node
        if msc.has_one_row(results):
            cid, parent_id = results[0]
            parent_node = TreeNode(int(parent_id))
            parent_node.add_child(self)
    def get_node_info_with_cid(cid, level=0):
        """ result is determined by TreeNode._node_format """
        if TreeNode._node_format == 1:
            return "{}{}".format("    " * level, cid)
        elif TreeNode._node_format == 2:
            # query to get node's data
            results = msc.MSC.get_collection(TreeNode.get_node_headers(), cid)

            if msc.has_one_row(results):
                for row in results:
                    cl_id, parent_id, is_category, name = row
                    ##return "{}{} {} {} {}".format("    " * level, cl_id, parent_id, is_category, name.encode('utf-8'))
                    ##return TreeNode.get_node_format_data( [cl_id, parent_id, is_category, name.encode('utf-8')] )
                    return TreeNode.get_node_format_data([cl_id, parent_id, is_category, name])