dev-python/documentex: On enlève la dépendance à libcurses
Modification des scripts pour utiliser la bibliothèque click et non plus libcurses
parent
d9a622ae47
commit
2aad22376d
@ -1,99 +1,125 @@
|
|||||||
"""Ce fichier initialise les variables utilisées ailleurs dans le programme et en permet la personnalisation simple
|
|
||||||
"""
|
"""
|
||||||
|
Ce fichier initialise les variables utilisées ailleurs dans le programme
|
||||||
|
et en permet la personnalisation simple
|
||||||
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import jinja2
|
import jinja2
|
||||||
|
|
||||||
|
"""
|
||||||
|
Nom du programme
|
||||||
|
"""
|
||||||
softname = 'documentex'
|
softname = 'documentex'
|
||||||
"""Nom du programme
|
|
||||||
"""
|
"""
|
||||||
version = '1.7'
|
Version du programme
|
||||||
"""Version du programme
|
|
||||||
"""
|
"""
|
||||||
|
version = '2.0'
|
||||||
|
|
||||||
debug = False
|
|
||||||
"""Debug variable
|
|
||||||
"""
|
"""
|
||||||
|
Variable de debuggage
|
||||||
|
"""
|
||||||
|
debug = False
|
||||||
|
|
||||||
|
"""
|
||||||
|
Constantes customisant l'en-tête des fichiers LaTeX et remplies automatiquement
|
||||||
|
"""
|
||||||
classe_appartenance = "PT"
|
classe_appartenance = "PT"
|
||||||
promotion = "Fourier"
|
|
||||||
lycee_appartenance = "Lycée Langevin Wallon"
|
lycee_appartenance = "Lycée Langevin Wallon"
|
||||||
institution = "Lycée"
|
institution = "Lycée"
|
||||||
nom_institution = "Langevin Wallon"
|
nom_institution = "Langevin Wallon"
|
||||||
lycee_adresse = "126 avenue Roger Salengro"
|
lycee_adresse = "126 avenue Roger Salengro"
|
||||||
lycee_complement_adresse = "Champigny-sur-Marne, 94240"
|
lycee_complement_adresse = "Champigny-sur-Marne, 94240"
|
||||||
auteur = "D. Denoncin" #est mise d'office sur tout type de document
|
auteur = "D. Denoncin" # est mise d'office sur tout type de document
|
||||||
auteur_lettre = "Dr. David Denoncin"
|
auteur_lettre = "Dr. David Denoncin"
|
||||||
auteur_titre = "Professeur Agrégé"
|
auteur_titre = "Professeur Agrégé"
|
||||||
auteur_adresse_mail = "math@denoncin.fr"
|
auteur_adresse_mail = "math@denoncin.fr"
|
||||||
"""Constantes customisant l'en-tête des fichiers LaTeX et remplies automatiquement
|
|
||||||
"""
|
|
||||||
|
|
||||||
dictionnaire_type_document = {'ds' : [False,'',True,True],
|
|
||||||
'td' : [False,'',True,True],
|
|
||||||
'dm' : [False,'*',True,True],
|
|
||||||
'pb' : [False,'*',True,True],
|
|
||||||
'te' : [False,'*',True,True],
|
|
||||||
'kh' : [False,'',False,True],
|
|
||||||
'cours' : [True,'*',True,True],
|
|
||||||
'in' : [False,'*',True,True],
|
|
||||||
'cr' : [False,'*',False,True],
|
|
||||||
'ob' : [False,'*',False,True],
|
|
||||||
'doc' : [False,'',False,False],
|
|
||||||
'let' : [False,'',False,True]
|
|
||||||
}
|
|
||||||
"""Dictionnaire paramétrant les types de documents de la façon suivante :
|
"""Dictionnaire paramétrant les types de documents de la façon suivante :
|
||||||
dictionnaire_type_document[type_document] = [contenu : affiche-t-on un contenu ? (True ou False),
|
dictionnaire_type_document[type_document] = [contenu : affiche-t-on un contenu ? (True ou False),
|
||||||
td : numérote-t-on les exercices ? ('' ou '*'),
|
td : numérote-t-on les exercices ? ('' ou '*'),
|
||||||
fancyhead : doit-on afficher un header avec un titre court ? (True ou False),
|
fancyhead : doit-on afficher un header avec un titre court ? (True ou False),
|
||||||
appartenance : doit-on afficher l'appartenance classe/lycée ? (True ou False),
|
appartenance : doit-on afficher l'appartenance classe/lycée ? (True ou False),
|
||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
|
dictionnaire_type_document = {'ds': [False, '', True, True],
|
||||||
|
'td': [False, '', True, True],
|
||||||
|
'dm': [False, '*', True, True],
|
||||||
|
'pb': [False, '*', True, True],
|
||||||
|
'te': [False, '*', True, True],
|
||||||
|
'kh': [False, '', False, True],
|
||||||
|
'cours': [True, '*', True, True],
|
||||||
|
'in': [False, '*', True, True],
|
||||||
|
'cr': [False, '*', False, True],
|
||||||
|
'ob': [False, '*', False, True],
|
||||||
|
'doc': [False, '', False, False],
|
||||||
|
'let': [False, '', False, True], # Lettre de motivation
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
type_document_correction = ['ds','dm','pb']
|
|
||||||
"""
|
"""
|
||||||
Types de documents pour lesquels il faut créer un sous-dossier pour la correction
|
Types de documents pour lesquels il faut créer un sous-dossier pour la correction
|
||||||
"""
|
"""
|
||||||
|
type_document_correction = ['ds', 'dm', 'pb']
|
||||||
|
|
||||||
dictionnaire_numero_ds = {'01' : 'Première', '02' : 'Deuxième','03' : 'Troisième', '04' : 'Quatrième', '05' : 'Cinquième', '06' : 'Sixième','07' : 'Septième','08' : 'Huitième','09' : 'Neuvième', '10' : 'Dixième' }
|
|
||||||
"""Dictionnaire paramétrant les abréviations pour les numéros de DS (limité à 10 DS)
|
|
||||||
"""
|
"""
|
||||||
|
Dictionnaire paramétrant les abréviations pour les numéros de DS (limité à 10 DS)
|
||||||
|
"""
|
||||||
|
dictionnaire_numero_ds = {'01': 'Première',
|
||||||
|
'02': 'Deuxième',
|
||||||
|
'03': 'Troisième',
|
||||||
|
'04': 'Quatrième',
|
||||||
|
'05': 'Cinquième',
|
||||||
|
'06': 'Sixième',
|
||||||
|
'07': 'Septième',
|
||||||
|
'08': 'Huitième',
|
||||||
|
'09': 'Neuvième',
|
||||||
|
'10': 'Dixième',
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
Paramétrage des templates jinja
|
||||||
|
"""
|
||||||
latex_jinja_env = jinja2.Environment(
|
latex_jinja_env = jinja2.Environment(
|
||||||
block_start_string = '\BLOCK{',
|
block_start_string="\BLOCK{",
|
||||||
block_end_string = '}',
|
block_end_string="}",
|
||||||
variable_start_string = '\VAR{',
|
variable_start_string="\VAR{",
|
||||||
variable_end_string = '}',
|
variable_end_string="}",
|
||||||
comment_start_string = '\#{',
|
comment_start_string="\#{",
|
||||||
comment_end_string = '}',
|
comment_end_string="}",
|
||||||
line_statement_prefix = '%%',
|
line_statement_prefix="%%",
|
||||||
line_comment_prefix = '%#',
|
line_comment_prefix="%#",
|
||||||
trim_blocks = True,
|
trim_blocks=True,
|
||||||
autoescape = False,
|
autoescape=False,
|
||||||
loader = jinja2.FileSystemLoader('/')
|
loader=jinja2.FileSystemLoader("/")
|
||||||
)
|
)
|
||||||
jinja_template_dir = "templates"
|
jinja_template_dir = "templates"
|
||||||
tex_file = 'example.tex'
|
tex_file = "example.tex"
|
||||||
"""Paramétrage des templates jinja
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
Pour mémoire : les variables à initialiser pour un compte rendu de colle
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def initialiser_variables():
|
def initialiser_variables():
|
||||||
title = ''
|
title = ''
|
||||||
semaine = ''
|
semaine = ''
|
||||||
nom1= ''
|
nom1 = ''
|
||||||
nom2 = ''
|
nom2 = ''
|
||||||
nom3 = ''
|
nom3 = ''
|
||||||
return [title,semaine,nom1,nom2,nom3]
|
return [title, semaine, nom1, nom2, nom3]
|
||||||
"""Pour mémoire : les variables à initialiser pour un compte rendu de colle
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
numeros_admissibles = [ '00', '01','02','03','04','05','06','07','08','09' ] + [str(i) for i in range(10,200)]
|
|
||||||
"""Numéro de fichiers admissibles (est-ce vraiment utile ??)
|
|
||||||
"""
|
"""
|
||||||
|
Numéro de fichiers admissibles (est-ce vraiment utile ??)
|
||||||
|
"""
|
||||||
|
numeros_admissibles = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09'] + [str(i) for i in range(10, 200)]
|
||||||
|
|
||||||
annee_scolaire = ['09','10','11','12','01','02','03','04','05'] #mois d'une année scolaire donnée
|
|
||||||
annee_scolaire_plus_un = ['01','02','03','04','05']
|
|
||||||
annee_scolaire_en_cours = ['09','10','11','12']
|
|
||||||
annees_valables = [str(i) for i in range(2018,2070)]
|
|
||||||
"""Ces variables permettent de déterminer quelle est l'année scolaire en cours pour lequel le fichier est généré, expire en 2070 (?)
|
|
||||||
"""
|
"""
|
||||||
|
Ces variables permettent de déterminer quelle est l'année scolaire en cours pour lequel le fichier est généré, expire en 2070 (?)
|
||||||
|
"""
|
||||||
|
annee_scolaire = ['09', '10', '11', '12', '01', '02', '03', '04', '05'] # mois d'une année scolaire donnée
|
||||||
|
annee_scolaire_plus_un = ['01', '02', '03', '04', '05']
|
||||||
|
annee_scolaire_en_cours = ['09', '10', '11', '12']
|
||||||
|
annees_valables = [str(i) for i in range(2018, 2070)]
|
||||||
|
@ -1,29 +1,30 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import libcurses as curses
|
|
||||||
from . import constantes_document_latex as constantes
|
from . import constantes_document_latex as constantes
|
||||||
|
|
||||||
def annee_scolaire_admissible(annee_scolaire):
|
def annee_scolaire_admissible(annee_scolaire: str) -> bool:
|
||||||
"""Revoie True si la chaîne de caractère annee_scolaire est au format aaaa-aaaa+1 avec aaaa une année admissible, et False sinon
|
"""
|
||||||
|
Entrée :
|
||||||
|
--------
|
||||||
|
annee_scolaire : chaîne de caractère
|
||||||
|
|
||||||
|
Sortie :
|
||||||
|
--------
|
||||||
|
bool : booléen décrivant si la chaîne de caractère est au format aaaa-aaaa+1 avec aaaa une année admissible, et False sinon
|
||||||
"""
|
"""
|
||||||
if len(annee_scolaire.split('-')) != 2:
|
if len(annee_scolaire.split('-')) != 2:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
annee_n,annee_n_plus_un = annee_scolaire.split('-')
|
annee_n, annee_n_plus_un = annee_scolaire.split('-')
|
||||||
return (int(annee_n) == (int(annee_n_plus_un)-1)) and (annee_n in constantes.annees_valables)
|
return (int(annee_n) == (int(annee_n_plus_un)-1)) and (annee_n in constantes.annees_valables)
|
||||||
|
|
||||||
def annee_scolaire(sans_std = False):
|
def annee_scolaire() -> str:
|
||||||
"""Retourne l'année scolaire en cours, si l'argument est True alors on renvoie toujours l'année scolaire en cours sauf à partir de juin où on renvoie l'année suivante
|
"""
|
||||||
|
Sortie :
|
||||||
|
--------
|
||||||
|
str : Retourne l'année scolaire en cours, si l'argument est True alors on renvoie toujours l'année scolaire en cours sauf à partir de juin où on renvoie l'année suivante
|
||||||
"""
|
"""
|
||||||
year, month = [element for element in datetime.datetime.now().strftime("%Y-%m").split('-')]
|
year, month = [element for element in datetime.datetime.now().strftime("%Y-%m").split('-')]
|
||||||
if month in constantes.annee_scolaire_en_cours:
|
if month in constantes.annee_scolaire_en_cours:
|
||||||
return year+'-'+str(int(year)+1)
|
return f"{year}-{int(year)+1}"
|
||||||
if month in constantes.annee_scolaire_plus_un:
|
if month in constantes.annee_scolaire_plus_un:
|
||||||
return str(int(year)-1)+'-'+year
|
return f"{int(year)-1}-{year}"
|
||||||
if sans_std:
|
|
||||||
return year+'-'+str(int(year)+1)
|
|
||||||
while True:
|
|
||||||
annee_scolaire = curses.saisie_message_std("Quelle est l'année scolaire en cours ? ")
|
|
||||||
if not(annee_scolaire_admissible(annee_scolaire)):
|
|
||||||
curses.afficher_message_std("L'année saisie doit être au format aaaa-aaaa+1 et aaaa doit être inférieure à 2070 !")
|
|
||||||
else:
|
|
||||||
return annee_scolaire
|
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
from . import constantes_document_latex as constantes
|
|
||||||
|
|
||||||
""" Ces fonction permettent d'analyser l'argument donné en ligne de commande. Celui-ci doit être de la forme numero ou bien numero_titre ou bien titre, et numero doit être dans l'intervalle des numéros admissibles (voir constantes_document_latex)
|
|
||||||
"""
|
|
||||||
|
|
||||||
def format(argv):
|
|
||||||
""" Formattage de l'argument
|
|
||||||
"""
|
|
||||||
arguments = argv.split('_')
|
|
||||||
if len(arguments) == 1:
|
|
||||||
arguments.append('') # garantit qu'il y a toujours au moins deux arguments, le second éventuellement vide
|
|
||||||
if constantes.debug:
|
|
||||||
print("fonction format")
|
|
||||||
print(f"La variable arguments est {arguments}")
|
|
||||||
return arguments
|
|
||||||
|
|
||||||
def bon_format(argv):
|
|
||||||
"""Booléen déterminant si la chaîne de caractère argv est un argument admissible pour le script document latex
|
|
||||||
"""
|
|
||||||
arguments = format(argv)
|
|
||||||
if len(arguments) != 2: # c'est impossible ?
|
|
||||||
return False
|
|
||||||
numero,titre = arguments
|
|
||||||
if constantes.debug:
|
|
||||||
print("fonction bon_format")
|
|
||||||
print(f"Les variables numero,titre sont {numero} et {titre}")
|
|
||||||
try:
|
|
||||||
int(numero) #si le numéro est bien un numéro
|
|
||||||
return numero in constantes.numeros_admissibles
|
|
||||||
except:
|
|
||||||
return True #si non, c'est un titre
|
|
||||||
else:
|
|
||||||
return [False] # Qu'est-ce que c'est que ce délire ??
|
|
||||||
|
|
||||||
def arguments(argv):
|
|
||||||
"""Renvoie la liste des arguments s'ils sont admissibles, et None autrement
|
|
||||||
"""
|
|
||||||
if bon_format(argv):
|
|
||||||
return format(argv)
|
|
Loading…
Reference in New Issue