<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_project(self, path):
 """ Adds a project. :param path: Project path. :type path: unicode :return: Method success. :rtype: bool """


        if not foundations.common.path_exists(path):
            return False

        path = os.path.normpath(path)
        if self.__model.get_project_nodes(path):
            self.__engine.notifications_manager.warnify(
                "{0} | '{1}' project is already opened!".format(self.__class__.__name__, path))
            return False

        LOGGER.info("{0} | Adding '{1}' project!".format(self.__class__.__name__, path))
        project_node = self.__model.register_project(path)
        if not project_node:
            return False

        self.__model.set_project_nodes(project_node)
        return True