"""Generate all 'lettres de motivation' for Parcourssup platform""" import os import sys import re TEMPLATE_PATH = os.path.join(os.path.dirname(__file__), "templates") OUT_PATH = os.path.join(os.path.dirname(__file__), "output") SIGNATURE = "Moi-même" CONF = { "prepa": [ {"name": "Lycée Thiers", "name_de": "du #", "name_le": "le #", "name_à": "au #", "name_à_superlatif": "au prestigieux #",}, {"name": "Lycée Henri IV", "name_de": "du #", "name_le": "le #", "name_à": "au #", "name_à_superlatif": "au prestigieux #",}, ], "insa": [ {"name": "INSA de Lyon", "name_de": "de l'#", "name_le": "l'#", "name_à": "à l'#",}, {"name": "INSA de Toulouse", "name_de": "de l'#", "name_le": "l'#", "name_à": "à l'#",}, ], "fac": [ {"name": "Licence Mathématiques", "name_de": "de la #", "name_le": "la #", "name_à": "dans la #",}, {"name": "Licence Physique", "name_de": "de la #", "name_le": "la #", "name_à": "dans la #",}, ], "mpci": [ {"name": "Licence MPCI", "ville_de": "de Marseille", "name_de": "de la #", "name_le": "la #", "name_à": "dans la #",}, ], } sys.stdout.reconfigure(encoding='utf-8') #For each type of 'voeux' for voeu_type in CONF: #Filename for the template template_filename = os.path.join(TEMPLATE_PATH, voeu_type + ".txt") #Chech whether the template exists if os.path.exists(template_filename): #Read the template with open(template_filename, "r", encoding="utf-8") as fileobj: template_content = fileobj.read() #Find all tags in the template tags = set(re.findall("\[(\w+)\]", template_content)) #Get list of 'voeux' in the type of 'voeux' voeux_list = CONF[voeu_type] for voeu in voeux_list: #Replace '#' by the 'name' for item in voeu.copy(): voeu[item] = voeu[item].replace("#", voeu["name"]) #Add the 'signature' in the dictionary voeu["signature"] = SIGNATURE #Add the capitalized version in the dictionary for item in voeu.copy(): voeu[item.capitalize()] = voeu[item][0].upper() + voeu[item][1:] #Build the final 'lettre de motivation' motivation_content = template_content for tag in tags: if tag not in voeu: raise KeyError(f"Missing '{tag}' in CONF for template {voeu_type}") motivation_content = motivation_content.replace(f"[{tag}]", voeu[tag]) #Filename for the output file motivation_filename = os.path.join(OUT_PATH, voeu_type, voeu["name"].replace(" ", "_") + ".txt") #Create missing folders if needed os.makedirs(os.path.dirname(motivation_filename), exist_ok=True) #Wrtie the final 'lettre de motivation' with open(motivation_filename, "w", encoding="utf-8") as fileobj: fileobj.write(motivation_content)