def parse_distant_repository_file(self, handle): dom = parse(handle) self.parse_description(dom) self.set_type("distant") xml_groups = dom.getElementsByTagName("exercises_groups")[0] for xml_group in xml_groups.getElementsByTagName("exercises_group"): group = ExerciseRepositoryGroup() group.parse_description(xml_group) self.add_group(group) xml_exercises = xml_group.getElementsByTagName("exercises")[0] for xml_exercise in xml_exercises.getElementsByTagName("exercise"): exercise = ExerciseRepositoryExercise() exercise.parse_description(xml_exercise) group.add_exercise(exercise)
def init_from_path(self, path): # Read repositories from xml description file repoDescriptionPath = os.path.join(path, "repository.xml") if os.path.isfile(repoDescriptionPath): f = open(repoDescriptionPath, 'r') dom = parse(f) self.parse_description(dom) else: self.set_id(os.path.basename(path)) self.set_name(os.path.basename(path)) groupPathList = os.listdir(self.get_local_path()) for groupPath in groupPathList: path = os.path.join(self.get_local_path(), groupPath) if os.path.isdir(path): group = ExerciseRepositoryGroup() group.init_from_path(path) group.set_system(self.system) self.add_group(group)