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() # 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() fichierTemp = UTILS_Fichiers.GetRepTemp(fichier="savedecrypte.zip") resultat = UTILS_Cryptage_fichier.DecrypterFichier( fichier, fichierTemp, motdepasse) fichier = fichierTemp messageErreur = _( u"Le mot de passe que vous avez saisi semble erroné !") else: messageErreur = _(u"Le fichier de sauvegarde semble corrompu !") # Vérifie que le ZIP est ok valide = UTILS_Sauvegarde.VerificationZip(fichier) if valide == False: dlg = wx.MessageDialog(None, messageErreur, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return None return fichier
def AnalyserFichier(nomFichier="", tailleFichier=None, typeTransfert=None): cheminFichier = UTILS_Fichiers.GetRepSync(nomFichier) listeAnomalies = [] # Vérification de la taille du fichier if tailleFichier != None: tailleFinaleFichier = os.path.getsize(cheminFichier) if tailleFichier != tailleFinaleFichier: listeAnomalies.append(( nomFichier, _(u"Le fichier n'a pas été téléchargé en intégralité (%d/%d)" ) % (tailleFichier, tailleFinaleFichier))) os.remove(cheminFichier) return False # Décryptage du fichier if nomFichier.endswith(UTILS_Export_nomade.EXTENSION_CRYPTE): nouveauCheminFichier = cheminFichier.replace( UTILS_Export_nomade.EXTENSION_CRYPTE, UTILS_Export_nomade.EXTENSION_DECRYPTE) mdp = base64.b64decode( UTILS_Config.GetParametre("synchro_cryptage_mdp", defaut="")) resultat = UTILS_Cryptage_fichier.DecrypterFichier( cheminFichier, nouveauCheminFichier, mdp) os.remove(cheminFichier) else: nouveauCheminFichier = cheminFichier # Décompression du fichier if zipfile.is_zipfile(nouveauCheminFichier) == False: listeAnomalies.append( (nomFichier, _(u"Le fichier compressé ne semble pas valide."))) return False fichierZip = zipfile.ZipFile(nouveauCheminFichier, "r") buffer = fichierZip.read("database.dat") f = open( nouveauCheminFichier.replace(UTILS_Export_nomade.EXTENSION_DECRYPTE, ".dat"), "wb") #print "Ecriture du fichier ", nouveauCheminFichier.replace(UTILS_Export_nomade.EXTENSION_DECRYPTE, ".dat") f.write(buffer) f.close() fichierZip.close() os.remove(nouveauCheminFichier) #print "listeAnomalies=", listeAnomalies return True