2016-2017/tools/Other/fill_notes.py

96 lines
2.9 KiB
Python
Raw Normal View History

2017-06-16 06:49:23 +00:00
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright © 2015 lafrite <lafrite@Poivre>
#
"""
Parcours tous les dossiers et ajoute un fichier notes_***.rst quand il n'existe pas
"""
#import optparse
import argparse
from path import path
import jinja2
import copy
parser = argparse.ArgumentParser()
parser.add_argument("directory", help="Directory")
option = parser.parse_args()
templateLoader = jinja2.FileSystemLoader( searchpath="." )
templateEnv = jinja2.Environment( loader=templateLoader )
tpl_file = "./tools/Other/tpl_notes.rst"
tpl = templateEnv.get_template(tpl_file)
cwd = path("./").abspath()
directory = path(option.directory)
info = {"date" : "2013-07-01",
"modified" : "2013-07-01",
"summary": "Pas de résumé, note créée automatiquement parce que je ne l'avais pas bien fait...",
"authors" : "Benjamin Bertrand",
"tags": set(),
"category": set(),
"title" : "",
"telechargeable" : [],
}
ext_telechargeable = [".ipynb", ".ps", ".tex", ".pdf", ".csv", ".jpg", ".xlsx", ".xls", ".odt", ".ods", ".png", ".py", ".cls", ".sty", ".ggb", ".odc"]
non_exam_type = ["Cours", "Exo", "TD"]
exam_type = ["DS", "DM"]
def underline(string, cara = "#"):
return string + "\n" + cara * len(string)
for i in directory.walkdirs():
#if i.files("notes_*.rst"):
if not i.files("index.rst"):
cara = i.split('/')
try:
cara.remove('Archive')
except ValueError:
pass
if cara[-1] not in ["fig", "Bilan", "Conn"]:
folder_info = copy.deepcopy(info)
folder_info["title"] = underline("Notes sur " + cara[-1].replace('_', ' '))
print(folder_info['title'])
folder_info["category"].add(cara[1])
try:
tag = cara[2].replace('_', ' ')
folder_info["tags"].add(tag)
except IndexError:
pass
folder_info['tags'] = folder_info['tags'].union(set([i for i in exam_type if i in cara]))
folder_info['tags'] = folder_info['tags'].union(set([i for i in non_exam_type if i.lower() in [c.lower() for c in cara]]))
for f in i.files():
if f.ext in ext_telechargeable:
print("\t ",f.basename())
folder_info["telechargeable"] += [f.basename()]
if (i/'fig').exists():
for f in (i/'fig').files():
if f.ext in ext_telechargeable:
print("\t ",f.basename())
folder_info["telechargeable"] += ['fig/'+f.basename()]
if folder_info["telechargeable"]:
cible = i / "index.rst"
with open(cible,'w') as f:
f.write(tpl.render(folder_info))
# -----------------------------
# Reglages pour 'vim'
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
# cursor: 16 del