def loadLessonsFromPaths(paths): hasErrors = False for path in paths: for folder in os.listdir(path): if os.path.isdir(os.path.join(path, folder)): groupFiles = [os.path.join(path, folder, f) for f in ["group.html", "group.md"]] for groupFile in groupFiles: if os.path.exists(groupFile): groups[folder.replace("_", " ")] = groupFile break for subfolder in os.listdir(os.path.join(path, folder)): if os.path.isdir(os.path.join(path, folder, subfolder)): try: f = os.path.join(path, folder, subfolder, "__init__.py") if os.path.exists(f): m = imp.load_source("{}.{}".format(folder, subfolder), f) addLessonModule(m) except Exception as e: QgsMessageLog.logMessage("Can not load lesson from {}:\n{}".format(f, str(e)), "Lessons") hasErrors = True if isYamlLessonFolder(os.path.join(path, folder), subfolder): lesson = lessonFromYamlFile(os.path.join(path, folder, subfolder, "lesson.yaml")) if lesson: _addLesson(lesson) else: hasErrors = True return hasErrors
def removeLessonsFolder(folder, pluginName): packages = filter(lambda x: isPackage(folder, x), os.listdir(folder)) for p in packages: tokens = folder.split(os.sep) moduleTokens = tokens[tokens.index(pluginName):] + [p] moduleName = ".".join(moduleTokens) try: m = __import__(moduleName, fromlist="dummy") removeLessonModule(m) except: pass folders = filter(lambda x: isYamlLessonFolder(folder, x), os.listdir(folder)) for f in folders: lesson = lessonFromYamlFile(os.path.join(folder, f, "lesson.yaml")) if lesson: _removeLesson(lesson)
def removeLessonsFolder(folder, pluginName): packages = [x for x in os.listdir(folder) if isPackage(folder, x)] for p in packages: try: tokens = folder.split(os.sep) moduleTokens = tokens[tokens.index(pluginName):] + [p] moduleName = ".".join(moduleTokens) m = __import__(moduleName, fromlist="dummy") removeLessonModule(m) except Exception as e: QgsMessageLog.logMessage("Can not remove lessons folder {}:\n{}".format(folder, str(e)), "Lessons") folders = [x for x in os.listdir(folder) if isYamlLessonFolder(folder, x)] for f in folders: lesson = lessonFromYamlFile(os.path.join(folder, f, "lesson.yaml")) if lesson: _removeLesson(lesson)