def SelectionFichier(): """ Sélectionner le fichier à restaurer """ # Demande l'emplacement du fichier wildcard = _(u"Sauvegarde Noethys (*.nod; *.noc)|*.nod;*.noc") standardPath = wx.StandardPaths.Get() rep = standardPath.GetDocumentsDir() dlg = wx.FileDialog(None, message=_(u"Veuillez sélectionner le fichier de sauvegarde à restaurer"), defaultDir=rep, defaultFile="", wildcard=wildcard, style=wx.FD_OPEN) if dlg.ShowModal() == wx.ID_OK: fichier = dlg.GetPath() else: return None dlg.Destroy() # Fichier NOC : Décryptage du fichier if fichier.endswith(".noc") == True : dlg = wx.PasswordEntryDialog(None, _(u"Veuillez saisir le mot de passe :"), _(u"Ouverture d'une sauvegarde cryptée")) if dlg.ShowModal() == wx.ID_OK: motdepasse = dlg.GetValue() else: dlg.Destroy() return None dlg.Destroy() # Décryptage du fichier nom_fichier_decrypte = UTILS_Fichiers.GetRepTemp(fichier="savedecrypte.zip") UTILS_Cryptage_fichier.DecrypterFichier(fichier, nom_fichier_decrypte, motdepasse) # Vérifie que le ZIP est ok valide = UTILS_Sauvegarde.VerificationZip(nom_fichier_decrypte) if valide == False : dlg = wx.MessageDialog(None, _(u"Le mot de passe que vous avez saisi semble erroné !"), _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return None return nom_fichier_decrypte else: # Fichier NOD : Vérifie que le ZIP est ok valide = UTILS_Sauvegarde.VerificationZip(fichier) if valide == False: dlg = wx.MessageDialog(None, _(u"Le fichier de sauvegarde semble corrompu !"), _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return None return fichier
def __init__(self, parent, fichier=""): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX) self.parent = parent self.fichier = fichier self.listeFichiersRestaures = [] # Récupération du contenu du ZIP self.listeFichiers = UTILS_Sauvegarde.GetListeFichiersZIP(fichier) intro = _(u"Vous pouvez ici restaurer une sauvegarde. Vous devez sélectionner dans la liste des données présentes dans la sauvegarde celles que vous souhaitez restaurer.") titre = _(u"Restauration") self.SetTitle(titre) self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Restaurer.png") # Données self.box_donnees_staticbox = wx.StaticBox(self, -1, _(u"Données à restaurer")) self.ctrl_donnees = CTRL_Donnees(self, listeFichiers=self.listeFichiers) self.ctrl_donnees.SetMinSize((250, -1)) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") 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.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler)
def GetListeFichiersReseau(self): """ Trouver les fichiers MySQL """ listeFichiers = [] if self.parent.dictConnexion == None : return [], [] listeBases = UTILS_Sauvegarde.GetListeFichiersReseau(self.parent.dictConnexion) for fichier in listeBases : if fichier[-6:] == "_TDATA".lower() : nomFichier = fichier[:-6] listeFichiers.append(nomFichier) listeFichiers.sort() return listeFichiers, listeBases
def Sauvegarde(self, dictSauvegarde={}): """ Lancement de la sauvegarde """ listeFichiersLocaux = dictSauvegarde["sauvegarde_fichiers_locaux"] listeFichiersReseau = dictSauvegarde["sauvegarde_fichiers_reseau"] nom = dictSauvegarde["sauvegarde_nom"] repertoire = dictSauvegarde["sauvegarde_repertoire"] motdepasse = dictSauvegarde["sauvegarde_motdepasse"] listeEmails = dictSauvegarde["sauvegarde_emails"] # Fichiers locaux if listeFichiersLocaux == None: listeFichiersLocaux = [] else: listeFichiersLocaux = listeFichiersLocaux.split(";") # Fichiers réseau dictConnexion = None if listeFichiersReseau == None: listeFichiersReseau = [] else: listeFichiersReseau = listeFichiersReseau.split(";") DB = GestionDB.DB() if DB.echec != 1: if DB.isNetwork == True: dictConnexion = DB.GetParamConnexionReseau() DB.Close() if dictConnexion == None: dictConnexion = self.GetDictConnexion() if dictConnexion == False: return False # Liste Emails if listeEmails != None: listeEmails = listeEmails.split(";") # Sauvegarde resultat = UTILS_Sauvegarde.Sauvegarde(listeFichiersLocaux, listeFichiersReseau, nom, repertoire, motdepasse, listeEmails, dictConnexion) if resultat == False: return False return True
def OnBoutonOk(self, event): # Validation des données dictDonnees = self.ctrl_parametres.GetDonnees() if dictDonnees == False: return # Récupère paramètres listeFichiersLocaux = dictDonnees["sauvegarde_fichiers_locaux"] listeFichiersReseau = dictDonnees["sauvegarde_fichiers_reseau"] nom = dictDonnees["sauvegarde_nom"] repertoire = dictDonnees["sauvegarde_repertoire"] motdepasse = dictDonnees["sauvegarde_motdepasse"] listeEmails = dictDonnees["sauvegarde_emails"] dictConnexion = self.ctrl_parametres.dictConnexion if listeFichiersLocaux == None: listeFichiersLocaux = [] else: listeFichiersLocaux = listeFichiersLocaux.split(";") if listeFichiersReseau == None: listeFichiersReseau = [] else: listeFichiersReseau = listeFichiersReseau.split(";") if listeEmails != None: listeEmails = listeEmails.split(";") # Sauvegarde self.resultat = UTILS_Sauvegarde.Sauvegarde(listeFichiersLocaux, listeFichiersReseau, nom, repertoire, motdepasse, listeEmails, dictConnexion) if self.resultat == False: return False # Fin du processus dlg = wx.MessageDialog( self, _(u"La procédure de sauvegarde est terminée."), _(u"Sauvegarde"), wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() # Fermeture self.MemoriseParametres() self.EndModal(wx.ID_OK)
def OnBoutonOk(self, event): # Données à sauver dictDonnees = self.ctrl_donnees.GetCoches() if dictDonnees.has_key("locaux"): listeFichiersLocaux = dictDonnees["locaux"] else: listeFichiersLocaux = [] if dictDonnees.has_key("reseau"): listeFichiersReseau = dictDonnees["reseau"] else: listeFichiersReseau = [] if len(listeFichiersLocaux) == 0 and len(listeFichiersReseau) == 0: dlg = wx.MessageDialog( self, _(u"Vous devez sélectionner au moins un fichier à restaurer !" ), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return # Récupération des paramètres de connexion réseau dictConnexion = None if len(listeFichiersReseau) > 0: # Récupère les paramètres chargés DB = GestionDB.DB() if DB.echec != 1: if DB.isNetwork == True: dictConnexion = DB.GetParamConnexionReseau() DB.Close() # Demande les paramètres de connexion réseau if dictConnexion == None: # Demande les paramètres de connexion intro = _( u"Les fichiers que vos souhaitez restaurer nécessite une connexion réseau.\nVeuillez saisir vos paramètres de connexion MySQL:" ) dlg = DLG_Saisie_param_reseau.Dialog(self, intro=intro) if dlg.ShowModal() == wx.ID_OK: dictConnexion = dlg.GetDictValeurs() dlg.Destroy() else: dlg.Destroy() return # Vérifie si la connexion est bonne resultat = DLG_Saisie_param_reseau.TestConnexion(dictConnexion) if resultat == False: dlg = wx.MessageDialog( self, _(u"Echec du test de connexion.\n\nLes paramètres ne semblent pas exacts !" ), _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return # Sauvegarde resultat = UTILS_Sauvegarde.Restauration(self.parent, self.fichier, listeFichiersLocaux, listeFichiersReseau, dictConnexion) if resultat == False: return self.listeFichiersRestaures = resultat # Fin du processus dlg = wx.MessageDialog( self, _(u"Le processus de restauration est terminé."), _(u"Restauration"), wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() # Fermeture self.EndModal(wx.ID_OK)