Feat: Questionnary is ok
This commit is contained in:
parent
7d2cde304d
commit
33117cde71
@ -8,113 +8,130 @@ from PyInquirer import prompt, print_json
|
||||
|
||||
from .config import config
|
||||
|
||||
|
||||
class PromptAbortException(EOFError):
|
||||
def __init__(self, message, errors=None):
|
||||
|
||||
# Call the base class constructor with the parameters it needs
|
||||
super(PromptAbortException, self).__init__("Abort questionnary", errors)
|
||||
|
||||
|
||||
def get_tribes(answers):
|
||||
""" List tribes based on subdirectory of config["source"] which have an "eleves.csv" file inside """
|
||||
return [
|
||||
p.name for p in Path(config["source"]).iterdir() if (p / "eleves.csv").exists()
|
||||
]
|
||||
|
||||
|
||||
def prepare_csv():
|
||||
items = new_eval()
|
||||
|
||||
|
||||
def new_eval(answers={}):
|
||||
click.echo(f"Préparation d'un nouveau devoir")
|
||||
|
||||
eval_questions = [
|
||||
{"type": "input", "name": "evalname", "message": "Nom de l'évaluation",},
|
||||
{
|
||||
"type": "input",
|
||||
"name": "evalname",
|
||||
"message": "Nom de l'évaluation",
|
||||
},
|
||||
{
|
||||
"type": "input",
|
||||
"type": "list",
|
||||
"name": "tribe",
|
||||
"message": "Classe concernée",
|
||||
"choices": get_tribes,
|
||||
},
|
||||
{
|
||||
"type": "input",
|
||||
"name": "date",
|
||||
"message": "Date du devoir",
|
||||
"filter": lambda val: datetime.strptime(val, "%y%m%d")
|
||||
"message": "Date du devoir (%y%m%d)",
|
||||
"default": datetime.today().strftime("%y%m%d"),
|
||||
"filter": lambda val: datetime.strptime(val, "%y%m%d"),
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"name": "term",
|
||||
"message": "Trimestre",
|
||||
"choices": ["1", "2", "3"],
|
||||
},
|
||||
]
|
||||
|
||||
eval_ans = prompt(eval_questions)
|
||||
|
||||
items = []
|
||||
add_exo = True
|
||||
while add_exo:
|
||||
ex_items = new_exercice(eval_ans)
|
||||
items += ex_items
|
||||
add_exo = prompt(
|
||||
[
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "add_exo",
|
||||
"message": "Ajouter un autre exercice",
|
||||
"default": True,
|
||||
}
|
||||
]
|
||||
)["add_exo"]
|
||||
return items
|
||||
|
||||
|
||||
def new_exercice(answers={}):
|
||||
exercise_questions = [
|
||||
{
|
||||
"type": "input",
|
||||
"name": "exercisename",
|
||||
"message": "Nom de l'exercice"
|
||||
},
|
||||
{"type": "input", "name": "exercisename", "message": "Nom de l'exercice"},
|
||||
]
|
||||
|
||||
click.echo(f"Nouvel exercice")
|
||||
exercise_ans = prompt(exercise_questions, answers=answers)
|
||||
|
||||
items = []
|
||||
|
||||
add_item = True
|
||||
while add_item:
|
||||
try:
|
||||
item_ans = new_item(exercise_ans)
|
||||
except PromptAbortException:
|
||||
click.echo("Création de l'item annulée")
|
||||
else:
|
||||
items.append(item_ans)
|
||||
add_item = prompt(
|
||||
[
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "add_item",
|
||||
"message": f"Ajouter un autre item pour l'exercice {exercise_ans['exercisename']}",
|
||||
"default": True,
|
||||
}
|
||||
]
|
||||
)["add_item"]
|
||||
|
||||
return items
|
||||
|
||||
|
||||
def new_item(answers={}):
|
||||
item_questions = [
|
||||
{
|
||||
"type": "input",
|
||||
"name": "itemname",
|
||||
"message": "Nom de l'item",
|
||||
},
|
||||
{
|
||||
"type": "input",
|
||||
"name": "comment",
|
||||
"message": "Description",
|
||||
},
|
||||
{"type": "input", "name": "itemname", "message": "Nom de l'item",},
|
||||
{"type": "input", "name": "comment", "message": "Description",},
|
||||
{
|
||||
"type": "list",
|
||||
"name": "competence",
|
||||
"message": "Competence",
|
||||
"choices": ["Cher", "Rep", "Mod", "Rai", "Cal", "Com"],
|
||||
},
|
||||
{
|
||||
"type": "input",
|
||||
"name": "domain",
|
||||
"message": "Domaine",
|
||||
},
|
||||
{"type": "input", "name": "domain", "message": "Domaine",},
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "is_leveled",
|
||||
"message": "Évaluation par niveau",
|
||||
"default": True
|
||||
},
|
||||
{
|
||||
"type": "input",
|
||||
"name": "scorerate",
|
||||
"message": "Bareme"
|
||||
"default": True,
|
||||
},
|
||||
{"type": "input", "name": "scorerate", "message": "Bareme"},
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "correct",
|
||||
"message": "Tout est correct?",
|
||||
"default": True
|
||||
},
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "add_item",
|
||||
"message": "Ajouter un autre item",
|
||||
"default": True,
|
||||
},
|
||||
]
|
||||
|
||||
eval_ans = prompt(eval_questions)
|
||||
|
||||
|
||||
items = []
|
||||
add_exo = True
|
||||
while add_exo:
|
||||
click.echo(f"Nouvel exercice")
|
||||
exercise_ans = prompt(exercise_questions)
|
||||
|
||||
add_item = True
|
||||
while add_item:
|
||||
click.echo(f"Nouvelle question pour l'exercice {exercise_ans['exercisename']}")
|
||||
item_ans = prompt(item_questions)
|
||||
click.echo(f"Nouvelle question pour l'exercice {answers['exercisename']}")
|
||||
item_ans = prompt(item_questions, answers=answers)
|
||||
if item_ans["correct"]:
|
||||
add_item = item_ans["add_item"]
|
||||
item_ans.update(eval_ans)
|
||||
item_ans.update(exercise_ans)
|
||||
items.append(item_ans)
|
||||
|
||||
add_exo = prompt([{
|
||||
"type": "confirm",
|
||||
"name": "add_exo",
|
||||
"message": "Ajouter un autre exercice",
|
||||
"default": True
|
||||
}])["add_exo"]
|
||||
|
||||
return items
|
||||
return item_ans
|
||||
raise PromptAbortException("Abort item creation")
|
||||
|
Loading…
Reference in New Issue
Block a user