Feat: prompts and write prompt_exam

This commit is contained in:
Bertrand Benjamin 2020-10-04 16:11:55 +02:00
parent 6d93ef62d7
commit 49cc52f7d1
3 changed files with 100 additions and 7 deletions

View File

@ -0,0 +1,9 @@
#!/usr/bin/env python
# encoding: utf-8
import yaml
CONFIGPATH = "recoconfig.yml"
with open(CONFIGPATH, "r") as config:
config = yaml.load(config, Loader=yaml.FullLoader)

View File

@ -0,0 +1,70 @@
#!/usr/bin/env python
# encoding: utf-8
from PyInquirer import prompt, print_json
from datetime import datetime
from functools import wraps
from .getconfig import config
def prompt_until_validate(func):
@wraps(func)
def wrapper(*args, **kwrd):
ans = func(*args, **kwrd)
question = [
{"type": "confirm", "name": "confirm", "message": "C'est bon?(enter)"}
]
while not prompt(question)["confirm"]:
ans = func(ans)
return ans
return wrapper
@prompt_until_validate
def prompt_exam(default={}):
""" Prompt questions to edit an exam """
questions = [
{
"type": "list",
"name": "_tribe",
"message": "Nom de la classe",
"choices": [t["name"] for t in config["tribes"]],
"default": default.get("tribe", ""),
},
{
"type": "input",
"name": "type",
"message": "Type d'évaluation",
"default": default.get("type", "DS"),
},
{
"type": "input",
"name": "_date",
"message": "Date (%y%m%d)",
"validate": lambda x: (len(x) == 6) and x.isdigit(),
"default": default.get("_date", datetime.today().strftime("%y%m%d")),
},
{
"type": "input",
"name": "ExQty",
"message": "Nombre d'exercice",
"validate": lambda x: x.isdigit(),
"default": default.get("ExQty", "1"),
},
]
exam = prompt(questions)
exam["tribe"] = [t for t in config["tribes"] if exam["_tribe"] == t["name"]][0]
exam["date"] = datetime.strptime(exam["_date"], "%y%m%d")
return exam
def prompt_exercise(number=1):
pass
def prompt_question():
pass

View File

@ -3,15 +3,12 @@
import click
from pathlib import Path
import yaml
import sys
import papermill as pm
from datetime import datetime
CONFIGPATH = "recoconfig.yml"
with open(CONFIGPATH, "r") as config:
config = yaml.load(config, Loader=yaml.FullLoader)
from .getconfig import config
from .prompts import prompt_exam
@click.group()
@ -26,6 +23,21 @@ def print_config():
click.echo(config)
@cli.command()
def setup():
"""Setup the environnement using recoconfig.yml"""
for tribe in config["tribes"]:
Path(tribe["name"]).mkdir(exist_ok=True)
if not Path(tribe["students"]).exists():
print(f"The file {tribe['students']} does not exists")
@cli.command()
def new_exam():
""" Create new exam csv file """
exam = prompt_exam()
@cli.command()
@click.argument("csv_file")
def report(csv_file):
@ -60,7 +72,10 @@ def report(csv_file):
str(template),
str(dest / f"{assessment}.ipynb"),
parameters=dict(
tribe=tribe, assessment=assessment, date=f"{date:%d/%m/%y}", csv_file=str(csv_file.absolute())
tribe=tribe,
assessment=assessment,
date=f"{date:%d/%m/%y}",
csv_file=str(csv_file.absolute()),
),
)
@ -78,4 +93,3 @@ def report(csv_file):
# str(dest / f"{st}.ipynb"),
# parameters=dict(tribe=tribe, student=st, source=str(tribe_dir.absolute())),
# )