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 jinja2
|
||||
|
||||
"""
|
||||
Nom du programme
|
||||
"""
|
||||
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"
|
||||
promotion = "Fourier"
|
||||
lycee_appartenance = "Lycée Langevin Wallon"
|
||||
institution = "Lycée"
|
||||
nom_institution = "Langevin Wallon"
|
||||
lycee_adresse = "126 avenue Roger Salengro"
|
||||
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_titre = "Professeur Agrégé"
|
||||
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_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 '*'),
|
||||
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),
|
||||
]
|
||||
"""
|
||||
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
|
||||
"""
|
||||
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(
|
||||
block_start_string = '\BLOCK{',
|
||||
block_end_string = '}',
|
||||
variable_start_string = '\VAR{',
|
||||
variable_end_string = '}',
|
||||
comment_start_string = '\#{',
|
||||
comment_end_string = '}',
|
||||
line_statement_prefix = '%%',
|
||||
line_comment_prefix = '%#',
|
||||
trim_blocks = True,
|
||||
autoescape = False,
|
||||
loader = jinja2.FileSystemLoader('/')
|
||||
block_start_string="\BLOCK{",
|
||||
block_end_string="}",
|
||||
variable_start_string="\VAR{",
|
||||
variable_end_string="}",
|
||||
comment_start_string="\#{",
|
||||
comment_end_string="}",
|
||||
line_statement_prefix="%%",
|
||||
line_comment_prefix="%#",
|
||||
trim_blocks=True,
|
||||
autoescape=False,
|
||||
loader=jinja2.FileSystemLoader("/")
|
||||
)
|
||||
jinja_template_dir = "templates"
|
||||
tex_file = 'example.tex'
|
||||
"""Paramétrage des templates jinja
|
||||
jinja_template_dir = "templates"
|
||||
tex_file = "example.tex"
|
||||
|
||||
|
||||
"""
|
||||
Pour mémoire : les variables à initialiser pour un compte rendu de colle
|
||||
"""
|
||||
|
||||
|
||||
def initialiser_variables():
|
||||
title = ''
|
||||
semaine = ''
|
||||
nom1= ''
|
||||
nom1 = ''
|
||||
nom2 = ''
|
||||
nom3 = ''
|
||||
return [title,semaine,nom1,nom2,nom3]
|
||||
"""Pour mémoire : les variables à initialiser pour un compte rendu de colle
|
||||
"""
|
||||
return [title, semaine, nom1, nom2, nom3]
|
||||
|
||||
|
||||
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 libcurses as curses
|
||||
from . import constantes_document_latex as constantes
|
||||
|
||||
def annee_scolaire_admissible(annee_scolaire):
|
||||
"""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
|
||||
def annee_scolaire_admissible(annee_scolaire: str) -> bool:
|
||||
"""
|
||||
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:
|
||||
return False
|
||||
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)
|
||||
|
||||
def annee_scolaire(sans_std = False):
|
||||
"""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
|
||||
def annee_scolaire() -> str:
|
||||
"""
|
||||
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('-')]
|
||||
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:
|
||||
return str(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
|
||||
return f"{int(year)-1}-{year}"
|
||||
|
@ -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