Compare commits
	
		
			3 Commits
		
	
	
		
			8e0121e8a8
			...
			a4f83d140f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a4f83d140f | |||
| 827d7b6511 | |||
| 3512bb8ace | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -26,4 +26,4 @@ test/ | ||||
| .venv/ | ||||
| venv/ | ||||
| video/ | ||||
|  | ||||
| .vim | ||||
|   | ||||
| @@ -2,7 +2,16 @@ docutils==0.16 | ||||
| gitdb==4.0.5 | ||||
| GitPython==3.1.7 | ||||
| greenlet==0.4.16 | ||||
| invoke==1.4.1 | ||||
| jedi==0.17.2 | ||||
| Jinja2==2.11.2 | ||||
| MarkupSafe==1.1.1 | ||||
| msgpack==1.0.0 | ||||
| mypytex==0.4 | ||||
| parso==0.7.1 | ||||
| prompt-toolkit==3.0.6 | ||||
| pynvim==0.4.1 | ||||
| restructuredtext-lint==1.3.1 | ||||
| smmap==3.0.4 | ||||
| Unidecode==1.1.1 | ||||
| wcwidth==0.2.5 | ||||
|   | ||||
							
								
								
									
										46
									
								
								tasks.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								tasks.py
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ from prompt_toolkit import prompt | ||||
| from prompt_toolkit.completion import WordCompleter | ||||
| from prompt_toolkit.validation import Validator | ||||
| from unidecode import unidecode | ||||
| import jinja2  | ||||
| import jinja2 | ||||
| from pytex import texenv | ||||
| import datetime | ||||
| import locale | ||||
| @@ -12,21 +12,23 @@ import locale | ||||
| locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8") | ||||
|  | ||||
| TRIBES = [ | ||||
|         {"name": "Première Technologique", "directory": "1ST"}, | ||||
|         {"name": "Science numérique et technologique", "directory": "SNT"}, | ||||
|         {"name": "Terminale L-ES", "directory": "TESL"}, | ||||
|         {"name": "Terminale sti2d", "directory": "Tsti2d"}, | ||||
|         ] | ||||
|     {"name": "Terminale Technologique", "directory": "TST"}, | ||||
|     {"name": "Terminale Terminale spé sti2d", "directory": "TST_sti2d"}, | ||||
|     {"name": "Science numérique et technologique", "directory": "SNT"}, | ||||
| ] | ||||
|  | ||||
| AUTHOR = "Benjamin Bertrand" | ||||
|  | ||||
|  | ||||
| def is_tribe(tribe): | ||||
|     return tribe in [t["directory"] for t in TRIBES] | ||||
|  | ||||
|  | ||||
| def get_sequences(tribe): | ||||
|     p = Path(tribe) | ||||
|     return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())] | ||||
|  | ||||
|  | ||||
| def get_tags(tribe=""): | ||||
|     p = Path(tribe) | ||||
|     tags = set() | ||||
| @@ -36,13 +38,15 @@ def get_tags(tribe=""): | ||||
|             line = index.readline() | ||||
|             while line: | ||||
|                 if line.startswith(":tags"): | ||||
|                     tags.update(line[7:].replace("\n", "").split(', ')) | ||||
|                     tags.update(line[7:].replace("\n", "").split(", ")) | ||||
|                     break | ||||
|                 line = index.readline() | ||||
|     return {t.lower() for t in tags} | ||||
|  | ||||
|  | ||||
| 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(): | ||||
|     sequence = {} | ||||
| @@ -53,19 +57,24 @@ def sequence_prompt(): | ||||
|     sequence["date"] = datetime.date.today() | ||||
|  | ||||
|     tribes = WordCompleter([t["directory"] for t in TRIBES]) | ||||
|     sequence["tribe"] = prompt("Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe)) | ||||
|     sequence["tribe"] = prompt( | ||||
|         "Classe: ", completer=tribes, validator=Validator.from_callable(is_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["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ") | ||||
|  | ||||
|     known_tags = get_tags() | ||||
|     sequence["tags"] = prompt("Tags (séparés par une virgule): ", completer=WordCompleter(known_tags)) | ||||
|     sequence["tags"] = prompt( | ||||
|         "Tags (séparés par une virgule): ", completer=WordCompleter(known_tags) | ||||
|     ) | ||||
|  | ||||
|     sequence["summary"] = prompt("Résumé: ") | ||||
|     return sequence | ||||
|  | ||||
|  | ||||
| def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"): | ||||
|     d = Path(dest) | ||||
|     d.mkdir() | ||||
| @@ -75,7 +84,7 @@ def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"): | ||||
|  | ||||
|     template_loader = jinja2.FileSystemLoader(searchpath=p) | ||||
|     template_env = jinja2.Environment(loader=template_loader) | ||||
|      | ||||
|  | ||||
|     texenv.loader.loaders.append(template_loader) | ||||
|  | ||||
|     print("") | ||||
| @@ -87,15 +96,18 @@ def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"): | ||||
|  | ||||
|         output_text = template.render(**datas) | ||||
|  | ||||
|         with open(d/filename, "w") as f: | ||||
|         with open(d / filename, "w") as f: | ||||
|             f.write(output_text) | ||||
|         print(f"Importation de {filename} - OK") | ||||
|  | ||||
|  | ||||
| @task | ||||
| def sequence(c): | ||||
|     sequence = sequence_prompt() | ||||
|  | ||||
|     dest = unidecode(("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_")) | ||||
|     dest = unidecode( | ||||
|         ("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_") | ||||
|     ) | ||||
|     dest = Path(dest) | ||||
|  | ||||
|     seq_summary = """\ | ||||
| @@ -106,12 +118,14 @@ def sequence(c): | ||||
|             Tags: {tags} | ||||
|             Sommaire: {summary} | ||||
|             Dossier: {dest} | ||||
|             """.format(dest=dest, **sequence) | ||||
|             """.format( | ||||
|         dest=dest, **sequence | ||||
|     ) | ||||
|     print(seq_summary) | ||||
|  | ||||
|     validate = prompt("C'est ok? ") | ||||
|     if validate.lower() in ["o", "y", ""]: | ||||
|         sequence["title_under"] = '#'*len(sequence["title"]) | ||||
|         sequence["title_under"] = "#" * len(sequence["title"]) | ||||
|         import_skel(dest, sequence, "sequence") | ||||
|     else: | ||||
|         print("Tant pis. Ya plus qu'à recommencer.") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user