コード例 #1
0
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
コード例 #2
0
    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)
コード例 #3
0
 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
コード例 #4
0
    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
コード例 #5
0
    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)
コード例 #6
0
    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)