def Envoyer(self): # Demande de confirmation dlg = wx.MessageDialog(self, _(u"Confirmez-vous l'envoi du message vers %d numéros ?") % len(self.dictDonnees["liste_telephones"]), _(u"Confirmation"), wx.YES_NO|wx.YES_DEFAULT|wx.CANCEL|wx.ICON_QUESTION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return False # CONTACT EVERYONE BY ORANGE BUSINESS if self.dictDonnees["plateforme"] == "contact_everyone" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] for ligne in self.dictDonnees["message"].split("\n") : liste_lignes.append(u"T-%s" % ligne) for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"#-%s" % numero) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Envoi de l'email try : etat = UTILS_Envoi_email.Envoi_mail( adresseExpediteur=dictAdresse["adresse"], listeDestinataires=[self.dictDonnees["orange_adresse_destination_email"],], sujetMail=self.dictDonnees["objet"], texteMail=_(u"Envoi de SMS"), listeFichiersJoints=[cheminFichier,], serveur=dictAdresse["smtp"], port=dictAdresse["port"], avecAuthentification=dictAdresse["auth"], avecStartTLS=dictAdresse["startTLS"], motdepasse=dictAdresse["motdepasse"], utilisateur=dictAdresse["utilisateur"], ) except Exception, err: print (err,) err = str(err).decode("iso-8859-15") dlgErreur = wx.MessageDialog(None, _(u"Une erreur a été détectée dans l'envoi de l'Email !\n\nErreur : %s") % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlgErreur.ShowModal() dlgErreur.Destroy() return False
def Envoyer(self): # Demande de confirmation dlg = wx.MessageDialog(self, _(u"Confirmez-vous l'envoi du message vers %d numéros ?") % len(self.dictDonnees["liste_telephones"]), _(u"Confirmation"), wx.YES_NO|wx.YES_DEFAULT|wx.CANCEL|wx.ICON_QUESTION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return False # --------------------- CONTACT EVERYONE BY ORANGE BUSINESS --------------------- if self.dictDonnees["plateforme"] == "contact_everyone" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] for ligne in self.dictDonnees["message"].split("\n") : liste_lignes.append(u"T-%s" % ligne) for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"#-%s" % numero) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["orange_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # --------------------- CLEVER SMS --------------------- if self.dictDonnees["plateforme"] == "cleversms" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] message = self.dictDonnees["message"].replace("\n", "") for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"%s;%s" % (numero, message)) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["cleversms_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # --------------------- CLEVER MULTIMEDIAS --------------------- if self.dictDonnees["plateforme"] == "clevermultimedias" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = ["NUM;MESSAGE",] message = self.dictDonnees["message"].replace("\n", "") for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") numero = "+33" + numero[1:] liste_lignes.append(u"%s;%s" % (numero, message)) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["clevermultimedias_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # --------------------- MAILJET --------------------- if self.dictDonnees["plateforme"] == "mailjet": # Récupération token api_token = self.dictDonnees["token_sms_mailjet"] sender_id = self.dictDonnees["sender_sms_mailjet"] # Préparation de l'envoi headers = { "Authorization": "Bearer {api_token}".format(api_token=api_token), "Content-Type": "application/json" } api_url = "https://api.mailjet.com/v4/sms-send" # Envoi des SMS message = self.dictDonnees["message"].replace("\n", "") nbre_envois_reussis = 0 for numero in self.dictDonnees["liste_telephones"]: numero = numero.replace(".", "") numero = "+33" + numero[1:] # Création du message JSON message_data = { "From": sender_id, "To": numero, "Text": message } reponse = requests.post(api_url, headers=headers, json=message_data) if reponse.ok: nbre_envois_reussis += 1 else: print("Erreur envoi SMS :", reponse.text) dict_erreur = json.loads(reponse.text) texte_erreur = u"Code erreur : %s. Erreur : %s" % (dict_erreur["ErrorCode"], dict_erreur["ErrorMessage"]) dlg = DLG_Messagebox.Dialog(self, titre=_(u"Envoi de SMS"), introduction=_(u"L'envoi du SMS vers le numéro %s a rencontré une erreur :") % numero, detail=texte_erreur, conclusion=_(u"Que souhaitez-vous faire ?"), icone=wx.ICON_ERROR, boutons=[_(u"Continuer l'envoi"), _(u"Arrêter")]) reponse = dlg.ShowModal() dlg.Destroy() if reponse == 1: return False # Confirmation d'envoi dlg = wx.MessageDialog(self, _(u"Envoi des SMS terminé."), _(u"Confirmation"), wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() return True
def Envoyer(self): # Demande de confirmation dlg = wx.MessageDialog(self, _(u"Confirmez-vous l'envoi du message vers %d numéros ?") % len(self.dictDonnees["liste_telephones"]), _(u"Confirmation"), wx.YES_NO|wx.YES_DEFAULT|wx.CANCEL|wx.ICON_QUESTION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return False # --------------------- CONTACT EVERYONE BY ORANGE BUSINESS --------------------- if self.dictDonnees["plateforme"] == "contact_everyone" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] for ligne in self.dictDonnees["message"].split("\n") : liste_lignes.append(u"T-%s" % ligne) for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"#-%s" % numero) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["orange_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # --------------------- CLEVER SMS --------------------- if self.dictDonnees["plateforme"] == "cleversms" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] message = self.dictDonnees["message"].replace("\n", "") for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"%s;%s" % (numero, message)) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["cleversms_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # --------------------- CLEVER MULTIMEDIAS --------------------- if self.dictDonnees["plateforme"] == "clevermultimedias" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = ["NUM;MESSAGE",] message = self.dictDonnees["message"].replace("\n", "") for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") numero = "+33" + numero[1:] liste_lignes.append(u"%s;%s" % (numero, message)) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Préparation du message message = UTILS_Envoi_email.Message(destinataires=[self.dictDonnees["clevermultimedias_adresse_destination_email"],], sujet=self.dictDonnees["objet"], texte_html=_(u"Envoi de SMS"), fichiers=[cheminFichier,]) # Envoi de l'email resultat = self.EnvoyerEmail(message=message, dictAdresse=dictAdresse) if resultat == False: return False # Confirmation d'envoi dlg = wx.MessageDialog(self, _(u"Envoi des SMS effectué avec succès."), _(u"Confirmation"), wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() return True
class Dialog(wx.Dialog, Base): def __init__(self, parent): wx.Dialog.__init__(self, parent, -1, name="DLG_Envoi_sms", style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX) Base.__init__(self) self.parent = parent titre = _(u"Envoi de SMS") intro = _(u"Vous pouvez envoyer ici des SMS aux individus ou familles à condition que votre plateforme d'envoi ait été intégrée à cette fonctionnalité. Consultez la liste des prestataires pris en charge dans la liste déroulante Plateforme de la page des paramètres.") self.SetTitle(titre) self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Sms.png") # Initialisation des pages self.InitPages(self) self.static_line = wx.StaticLine(self, -1) self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_retour = CTRL_Bouton_image.CTRL(self, texte=_(u"Retour"), cheminImage="Images/32x32/Fleche_gauche.png") self.bouton_suite = CTRL_Bouton_image.CTRL(self, texte=_(u"Suite"), cheminImage="Images/32x32/Fleche_droite.png", margesImage=(0, 0, 4, 0), positionImage=wx.RIGHT) self.bouton_annuler = CTRL_Bouton_image.CTRL(self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() self.Bind(wx.EVT_BUTTON, self.Onbouton_aide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.Onbouton_retour, self.bouton_retour) self.Bind(wx.EVT_BUTTON, self.Onbouton_suite, self.bouton_suite) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) self.Bind(wx.EVT_CLOSE, self.OnClose) self.bouton_retour.Enable(False) self.nbrePages = len(self.listePages) self.pageVisible = 0 # Création des pages self.Creation_Pages() self.GetPage("parametres").MAJ() def Creation_Pages(self): """ Creation des pages """ self.dictPages = {} index = 0 for dictPage in self.listePages : self.sizer_pages.Add(dictPage["ctrl"], 1, wx.EXPAND, 0) if index > 0 : dictPage["ctrl"].Show(False) index += 1 self.sizer_pages.Layout() def __set_properties(self): self.bouton_aide.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour obtenir de l'aide"))) self.bouton_retour.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour revenir à la page précédente"))) self.bouton_suite.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour passer à l'étape suivante"))) self.bouton_annuler.SetToolTip(wx.ToolTip(_(u"Cliquez pour annuler"))) self.SetMinSize((770, 650)) def __do_layout(self): grid_sizer_base = wx.FlexGridSizer(rows=4, cols=1, vgap=0, hgap=0) # Bandeau grid_sizer_base.Add(self.ctrl_bandeau, 1, wx.EXPAND, 0) # Contenu sizer_base = wx.BoxSizer(wx.VERTICAL) sizer_pages = wx.BoxSizer(wx.VERTICAL) grid_sizer_base.Add(sizer_pages, 1, wx.EXPAND, 0) grid_sizer_base.Add(self.static_line, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, 10) # Boutons grid_sizer_boutons = wx.FlexGridSizer(rows=1, cols=6, vgap=10, hgap=10) grid_sizer_boutons.Add(self.bouton_aide, 0, 0, 0) grid_sizer_boutons.Add((20, 20), 0, wx.EXPAND, 0) grid_sizer_boutons.Add(self.bouton_retour, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_suite, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_annuler, 0, wx.LEFT, 10) grid_sizer_boutons.AddGrowableCol(1) grid_sizer_base.Add(grid_sizer_boutons, 1, wx.ALL|wx.EXPAND, 10) grid_sizer_base.AddGrowableRow(1) grid_sizer_base.AddGrowableCol(0) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) self.Layout() self.CenterOnScreen() self.sizer_pages = sizer_pages def Onbouton_aide(self, event): from Utils import UTILS_Aide UTILS_Aide.Aide("") def AfficherPage(self, numPage=0): # rend invisible la page affichée page = self.listePages[self.pageVisible]["ctrl"] page.Sauvegarde() page.Show(False) # Fait apparaître nouvelle page self.pageVisible = numPage page = self.listePages[self.pageVisible]["ctrl"] page.MAJ() page.Show(True) self.sizer_pages.Layout() def Onbouton_retour(self, event): # Affiche nouvelle page self.AfficherPage(self.pageVisible - 1) # Si on quitte l'avant-dernière page, on active le bouton Suivant if self.pageVisible == self.nbrePages-1: self.bouton_suite.Enable(True) self.bouton_suite.SetImage(Chemins.GetStaticPath("Images/32x32/Valider.png")) self.bouton_suite.SetTexte(_(u"Valider")) else: self.bouton_suite.Enable(True) self.bouton_suite.SetImage(Chemins.GetStaticPath("Images/32x32/Fleche_droite.png")) self.bouton_suite.SetTexte(_(u"Suite")) # Si on revient à la première page, on désactive le bouton Retour if self.pageVisible == 0 : self.bouton_retour.Enable(False) def Onbouton_suite(self, event): # Vérifie que les données de la page en cours sont valides validation = self.ValidationPages() if validation == False : return # Si on est déjà sur la dernière page : on termine if self.pageVisible == self.nbrePages-1 : self.listePages[self.pageVisible]["ctrl"].Sauvegarde() self.Terminer() return # Affiche nouvelle page self.AfficherPage(self.pageVisible + 1) # Si on arrive à la dernière page, on désactive le bouton Suivant if self.pageVisible == self.nbrePages-1 : self.bouton_suite.SetImage(Chemins.GetStaticPath("Images/32x32/Valider.png")) self.bouton_suite.SetTexte(_(u"Envoyer")) # Si on quitte la première page, on active le bouton Retour if self.pageVisible > 0 : self.bouton_retour.Enable(True) def OnClose(self, event): self.OnBoutonAnnuler() def OnBoutonAnnuler(self, event=None): self.Annuler() def Annuler(self): """ Annulation des modifications """ self.EndModal(wx.ID_CANCEL) def ValidationPages(self) : """ Validation des données avant changement de pages """ return self.listePages[self.pageVisible]["ctrl"].Validation() def Terminer(self): # Envoi du message if self.Envoyer() != True : return False # Fermeture self.EndModal(wx.ID_OK) def Envoyer(self): # Demande de confirmation dlg = wx.MessageDialog(self, _(u"Confirmez-vous l'envoi du message vers %d numéros ?") % len(self.dictDonnees["liste_telephones"]), _(u"Confirmation"), wx.YES_NO|wx.YES_DEFAULT|wx.CANCEL|wx.ICON_QUESTION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return False # CONTACT EVERYONE BY ORANGE BUSINESS if self.dictDonnees["plateforme"] == "contact_everyone" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] for ligne in self.dictDonnees["message"].split("\n") : liste_lignes.append(u"T-%s" % ligne) for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"#-%s" % numero) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Envoi de l'email try : etat = UTILS_Envoi_email.Envoi_mail( adresseExpediteur=dictAdresse["adresse"], listeDestinataires=[self.dictDonnees["orange_adresse_destination_email"],], sujetMail=self.dictDonnees["objet"], texteMail=_(u"Envoi de SMS"), listeFichiersJoints=[cheminFichier,], serveur=dictAdresse["smtp"], port=dictAdresse["port"], avecAuthentification=dictAdresse["auth"], avecStartTLS=dictAdresse["startTLS"], motdepasse=dictAdresse["motdepasse"], utilisateur=dictAdresse["utilisateur"], ) except Exception, err: print (err,) err = str(err).decode("iso-8859-15") dlgErreur = wx.MessageDialog(None, _(u"Une erreur a été détectée dans l'envoi de l'Email !\n\nErreur : %s") % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlgErreur.ShowModal() dlgErreur.Destroy() return False # CLEVER SMS if self.dictDonnees["plateforme"] == "cleversms" : # Récupération adresse d'expédition IDadresse = self.dictDonnees["adresse_expedition_email"] dictAdresse = UTILS_Envoi_email.GetAdresseExp(IDadresse=IDadresse) # Génération de la pièce jointe liste_lignes = [] message = self.dictDonnees["message"].replace("\n", "") for numero in self.dictDonnees["liste_telephones"] : numero = numero.replace(".", "") liste_lignes.append(u"%s;%s" % (numero, message)) texte = "\n".join(liste_lignes) cheminFichier = UTILS_Fichiers.GetRepTemp(fichier="sms.txt") fichier = open(cheminFichier, 'w') fichier.write(texte.encode("iso-8859-15")) fichier.close() # Envoi de l'email try : etat = UTILS_Envoi_email.Envoi_mail( adresseExpediteur=dictAdresse["adresse"], listeDestinataires=[self.dictDonnees["cleversms_adresse_destination_email"],], sujetMail=self.dictDonnees["objet"], texteMail=_(u"Envoi de SMS"), listeFichiersJoints=[cheminFichier,], serveur=dictAdresse["smtp"], port=dictAdresse["port"], avecAuthentification=dictAdresse["auth"], avecStartTLS=dictAdresse["startTLS"], motdepasse=dictAdresse["motdepasse"], utilisateur=dictAdresse["utilisateur"], ) except Exception, err: print (err,) err = str(err).decode("iso-8859-15") dlgErreur = wx.MessageDialog(None, _(u"Une erreur a été détectée dans l'envoi de l'Email !\n\nErreur : %s") % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlgErreur.ShowModal() dlgErreur.Destroy() return False