Compare commits

..

No commits in common. "a4f83d140ff45323be7f455790cd13bfbc18e409" and "8e0121e8a8cc3be80fa1d7b527326e3966beffb2" have entirely different histories.

3 changed files with 17 additions and 40 deletions

2
.gitignore vendored
View File

@ -26,4 +26,4 @@ test/
.venv/ .venv/
venv/ venv/
video/ video/
.vim

View File

@ -2,16 +2,7 @@ docutils==0.16
gitdb==4.0.5 gitdb==4.0.5
GitPython==3.1.7 GitPython==3.1.7
greenlet==0.4.16 greenlet==0.4.16
invoke==1.4.1
jedi==0.17.2
Jinja2==2.11.2
MarkupSafe==1.1.1
msgpack==1.0.0 msgpack==1.0.0
mypytex==0.4
parso==0.7.1
prompt-toolkit==3.0.6
pynvim==0.4.1 pynvim==0.4.1
restructuredtext-lint==1.3.1 restructuredtext-lint==1.3.1
smmap==3.0.4 smmap==3.0.4
Unidecode==1.1.1
wcwidth==0.2.5

View File

@ -12,23 +12,21 @@ import locale
locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8") locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
TRIBES = [ TRIBES = [
{"name": "Terminale Technologique", "directory": "TST"}, {"name": "Première Technologique", "directory": "1ST"},
{"name": "Terminale Terminale spé sti2d", "directory": "TST_sti2d"},
{"name": "Science numérique et technologique", "directory": "SNT"}, {"name": "Science numérique et technologique", "directory": "SNT"},
{"name": "Terminale L-ES", "directory": "TESL"},
{"name": "Terminale sti2d", "directory": "Tsti2d"},
] ]
AUTHOR = "Benjamin Bertrand" AUTHOR = "Benjamin Bertrand"
def is_tribe(tribe): def is_tribe(tribe):
return tribe in [t["directory"] for t in TRIBES] return tribe in [t["directory"] for t in TRIBES]
def get_sequences(tribe): def get_sequences(tribe):
p = Path(tribe) p = Path(tribe)
return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())] return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())]
def get_tags(tribe=""): def get_tags(tribe=""):
p = Path(tribe) p = Path(tribe)
tags = set() tags = set()
@ -38,16 +36,14 @@ def get_tags(tribe=""):
line = index.readline() line = index.readline()
while line: while line:
if line.startswith(":tags"): if line.startswith(":tags"):
tags.update(line[7:].replace("\n", "").split(", ")) tags.update(line[7:].replace("\n", "").split(', '))
break break
line = index.readline() line = index.readline()
return {t.lower() for t in tags} return {t.lower() for t in tags}
def next_weekday(date, day=0): def next_weekday(date, day=0):
return date + datetime.timedelta(days=(day-date.weekday()+7)%7) return date + datetime.timedelta(days=(day-date.weekday()+7)%7)
def sequence_prompt(): def sequence_prompt():
sequence = {} sequence = {}
print("Nouvelle séquence") print("Nouvelle séquence")
@ -57,24 +53,19 @@ def sequence_prompt():
sequence["date"] = datetime.date.today() sequence["date"] = datetime.date.today()
tribes = WordCompleter([t["directory"] for t in TRIBES]) tribes = WordCompleter([t["directory"] for t in TRIBES])
sequence["tribe"] = prompt( sequence["tribe"] = prompt("Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe))
"Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe)
)
sequences = get_sequences(sequence["tribe"]) sequences = get_sequences(sequence["tribe"])
print("Séquences trouvées:\n\t" + "\n\t".join(sorted([s.name for s in sequences]))) print("Séquences trouvées:\n\t" + '\n\t'.join(sorted([s.name for s in sequences])))
sequence["num"] = len(sequences) + 1 sequence["num"] = len(sequences) + 1
sequence["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ") sequence["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ")
known_tags = get_tags() known_tags = get_tags()
sequence["tags"] = prompt( sequence["tags"] = prompt("Tags (séparés par une virgule): ", completer=WordCompleter(known_tags))
"Tags (séparés par une virgule): ", completer=WordCompleter(known_tags)
)
sequence["summary"] = prompt("Résumé: ") sequence["summary"] = prompt("Résumé: ")
return sequence return sequence
def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"): def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
d = Path(dest) d = Path(dest)
d.mkdir() d.mkdir()
@ -100,14 +91,11 @@ def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
f.write(output_text) f.write(output_text)
print(f"Importation de {filename} - OK") print(f"Importation de {filename} - OK")
@task @task
def sequence(c): def sequence(c):
sequence = sequence_prompt() sequence = sequence_prompt()
dest = unidecode( dest = unidecode(("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_"))
("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_")
)
dest = Path(dest) dest = Path(dest)
seq_summary = """\ seq_summary = """\
@ -118,14 +106,12 @@ def sequence(c):
Tags: {tags} Tags: {tags}
Sommaire: {summary} Sommaire: {summary}
Dossier: {dest} Dossier: {dest}
""".format( """.format(dest=dest, **sequence)
dest=dest, **sequence
)
print(seq_summary) print(seq_summary)
validate = prompt("C'est ok? ") validate = prompt("C'est ok? ")
if validate.lower() in ["o", "y", ""]: if validate.lower() in ["o", "y", ""]:
sequence["title_under"] = "#" * len(sequence["title"]) sequence["title_under"] = '#'*len(sequence["title"])
import_skel(dest, sequence, "sequence") import_skel(dest, sequence, "sequence")
else: else:
print("Tant pis. Ya plus qu'à recommencer.") print("Tant pis. Ya plus qu'à recommencer.")