-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBotMail.py
More file actions
137 lines (104 loc) · 5.73 KB
/
BotMail.py
File metadata and controls
137 lines (104 loc) · 5.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# BotMail.py
import os
import pandas as pd
from validate_email import validate_email
from TerminalUtils import user_confirmation, file_name
from DataSerializer import DataSerializer
from DocumentModificator import document_modificator, document_convertor
from EmailSender import *
from Models.EnvironmentVariable import load_env, get_variable
load_env()
from Models.Language import Language
from Constants import COLUMNS
# Chemin d'accès vers le fichier CSV
FILE_SHEET_PATH = get_variable("FILE_SHEET_PATH")
FILE_SHEET_RESULT_PATH = get_variable("FILE_SHEET_RESULT_PATH")
SCRIPT_NAME = "terminal_botmail"
if __name__ == '__main__':
# Extraction et sérialisation des données
data_serializer = DataSerializer()
language = Language()
try:
# Créer ou demande l'écrasement du fichier CSV résultant
if not(os.path.exists(FILE_SHEET_RESULT_PATH)):
# Créer le fichier de résultat avec les entêtes
resultFile = pd.DataFrame(columns = COLUMNS)
resultFile.to_csv(FILE_SHEET_RESULT_PATH, index=False, sep=';')
else:
userInput = user_confirmation(
language.get_translation(SCRIPT_NAME, "message_input_overwrite").replace(";;;", file_name(FILE_SHEET_RESULT_PATH)),
language.get_translation(SCRIPT_NAME, "confirmation_overwrite")
)
if userInput == 1:
print(language.get_translation(SCRIPT_NAME, "shut_down"))
exit()
if userInput == 0:
resultFile = pd.DataFrame(columns = COLUMNS)
resultFile.to_csv(FILE_SHEET_RESULT_PATH, index=False, sep=';')
except PermissionError as e:
raise Exception(language.get_translation(SCRIPT_NAME, "exception_csv_opening"))
userInput = ""
try:
# Lecture des données sérialisée pour traitement
for i in range(0, data_serializer.get_length()):
# Définition du choix utilisateur
if userInput != 1:
userInput = ""
# Définition de toutes les valeurs à partir de la ligne actuelle du fichier CSV.
data_serializer.set_current_line(i)
# Vérification de l'existence et de la validité de l'email
if validate_email(data_serializer.recipientEmail):
# Impression du destinataire à qui va être envoyé le mail.
print(language.get_translation(SCRIPT_NAME, "recipient_name").replace(";;;", data_serializer.recipientName))
# -------------------------------------------
# Modification Docx
# Modification du Docx en fonction des noms des destinataires
print(language.get_translation(SCRIPT_NAME, "modification"))
document_modificator(data_serializer)
print(language.get_translation(SCRIPT_NAME, "modified"))
# -------------------------------------------
# Création PDF
# Conversion du Docx en PDF
print(language.get_translation(SCRIPT_NAME, "conversion"))
document_convertor(data_serializer)
print(language.get_translation(SCRIPT_NAME, "converted"))
# -------------------------------------------
# Envoie des mails
# Si le choix précédent est "Oui pour Tout", on ne pose pas la question
if userInput != 1:
# Si un email a déjà été envoyé à ce destinataire
if data_serializer.previousSend == language.get_translation("email_sender", "email_sent"):
userInput = user_confirmation(
language.get_translation(SCRIPT_NAME, "message_input_already_sent").replace(";;;", file_name(FILE_SHEET_RESULT_PATH)),
language.get_translation(SCRIPT_NAME, "confirmation_already_sent")
)
else:
userInput = user_confirmation(
language.get_translation(SCRIPT_NAME, "message_input_send_confirmation").replace(";;;", data_serializer.recipientName),
language.get_translation(SCRIPT_NAME, "confirmation_send_confirmation")
)
# Si Stop : Arrêt du programme
if userInput == 3:
print(language.get_translation(SCRIPT_NAME, "shut_down"))
exit()
# Si Non : Destinataire suivant
if userInput == 2:
print(language.get_translation(SCRIPT_NAME, "next_recipient"))
# Si Oui : Envoie d'un mail
if userInput == 0 or userInput == 1:
send(data_serializer)
else:
data_serializer.csv_result(language.get_translation(SCRIPT_NAME, "result_invalid_email"))
raise Exception(language.get_translation(
SCRIPT_NAME, "exception_invalid_email"
).replace(
";;;", data_serializer.recipientEmail
).replace(
"///", data_serializer.recipientName
)
)
print(language.get_translation(SCRIPT_NAME, "script_end"))
except FileNotFoundError as e:
raise Exception(language.get_translation(SCRIPT_NAME, "exception_csv_path").replace(";;;", data_serializer.fileExtension))
except Exception as e:
raise Exception(language.get_translation(SCRIPT_NAME, "exception_csv_general").replace(";;;", data_serializer.fileExtension) + str(e))