recopytex/recopytex/scripts/prepare_csv.py

121 lines
2.9 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import click
from pathlib import Path
from datetime import datetime
from PyInquirer import prompt, print_json
from .config import config
def prepare_csv():
click.echo(f"Préparation d'un nouveau devoir")
eval_questions = [
{
"type": "input",
"name": "evalname",
"message": "Nom de l'évaluation",
},
{
"type": "input",
"name": "tribe",
"message": "Classe concernée",
},
{
"type": "input",
"name": "date",
"message": "Date du devoir",
"filter": lambda val: datetime.strptime(val, "%y%m%d")
},
{
"type": "list",
"name": "term",
"message": "Trimestre",
"choices": ["1", "2", "3"],
}
]
exercise_questions = [
{
"type": "input",
"name": "exercisename",
"message": "Nom de l'exercice"
},
]
item_questions = [
{
"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": "confirm",
"name": "is_leveled",
"message": "Évaluation par niveau",
"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)
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