#!/usr/bin/env python # encoding: utf-8 from PyInquirer import prompt 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?"}] while not prompt(question)["confirm"]: ans = func(ans) return ans return wrapper @prompt_until_validate def prompt_exam(**kwrd): """ Prompt questions to edit an exam """ questions = [ { "message": "Nom de la classe", "type": "list", "name": "_tribe", "choices": [t["name"] for t in config["tribes"]], "default": kwrd.get("tribe", ""), }, { "message": "Type d'évaluation", "type": "input", "name": "type", "default": kwrd.get("type", "DS"), }, { "message": "Date (%y%m%d)", "type": "input", "name": "_date", "validate": lambda x: (len(x) == 6) and x.isdigit(), "default": kwrd.get("_date", datetime.today().strftime("%y%m%d")), }, { "message": "Nombre d'exercice", "type": "input", "name": "ExQty", "validate": lambda x: x.isdigit(), "default": kwrd.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 @prompt_until_validate def prompt_exercise(number=1, **kwrd): questions = [ { "message": "Nom de l'exercice", "type": "input", "name": "name", "default": kwrd.get("name", f"Exercice {number}"), } ] exercise = prompt(questions) exercise["questions"] = [] append = [ { "message": "Ajouter un élément de notation", "type": "confirm", "name": "append", } ] while prompt(append)["append"]: exercise["questions"].append(prompt_question()) return exercise def prompt_question(): pass