Skip to content
Snippets Groups Projects
XML_Moodle.py 1.72 KiB
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
from utils import strip_tags, mlang_2_multiling
class Quizz:
	def __init__(self, file_name):
		self.file_name = file_name
		self.tree = ET.parse(self.file_name)
		self.questions = []
		self.parse()

	def get_tree(self):
		return self.tree

	def parse(self):
		questions = self.tree.findall("question")
		for q in questions:
			if q.attrib["type"] == "category":
				c = q.find("category/text").text.replace("$course$/top/","").replace("/",":").replace("::","/")
			else:
				self.questions.append(Question(q,c))

	def __str__(self):
		res = ""
		for q in self.questions:
			res += str(q)
		return res

class Question:
	def __init__(self,xmlQ,c):
		self.q = mlang_2_multiling(strip_tags(xmlQ.find("questiontext/text").text))
		self.category = c
	def __str__(self):
		return """\\element{"""+self.category+"""}{
	\\begin{questionmult}{Def}\\nbpoints{0,5}
		"""+self.q+"""
		\\begin{choices}
			\\correctchoice{L'utilisation d'un traitement de texte en cours de langue.}\bareme{b=0.25}
			\\correctchoice{L'évaluation de l'interface d'un concordancier en vue de son utilisation en classe d'anglais.}\bareme{b=0.15}
			\\correctchoice{L'utilisation d'un glossaire en ligne sur l'informatique en cours de FLE.}\bareme{b=0.15}
			\\wrongchoice{L'utilisation d'un dictionnaire en cours d'anglais.}\bareme{b=0,m=-0.25}
			\\wrongchoice{La création d'un glossaire en ligne sur l'informatique.}\bareme{b=0}
		\\end{choices}
		\\explain{La création d'un lexique ne relève pas intrinsèquement de l'ALAO, encore faut-il que son usage soit lié à l'apprentissage d'une langue.}
	\\end{questionmult}
}\n\n"""

if __name__ == "__main__":
	quizz = Quizz("quiz-GI-4-SID-S1-top-20201204-1620.xml")
	print(quizz)