def dataReceived(self, data): # Envoi d'un fichier - init if data == "recevoir": self.GenerationFichierAEnvoyer() return # Envoi du fichier si client pret a recevoir if data == "pret_pour_reception": self.Envoyer() return # Fin de l'envoi if data == "fin_envoi": self.FinEnvoi() return # Si JSON : Réception d'un fichier if self.IdentificationJSON(data): message = json.loads(data) # Reception d'un fichier - init if message["action"] == "envoyer": nom_appareil = message["nom_appareil"] tailleFichier = message["taille"] nomInitial = message["nom"] nomFinal = UTILS_Fichiers.GetRepSync(nomInitial) self.EcritLog( _(u"Prêt à recevoir de l'appareil ") + nom_appareil + " le fichier " + nomInitial + " (" + FonctionsPerso.Formate_taille_octets(tailleFichier) + ")") fichier = open(nomFinal, "wb") self.dictFichierReception = { "nom_initial": nomInitial, "nom_final": nomFinal, "taille_totale": tailleFichier, "taille_actuelle": 0, "fichier": fichier, } self.transport.write("pret_pour_reception") self.EcritLog(_(u"Réception en cours")) self.log.SetImage("download") return # Réception des données d'un fichier if self.dictFichierReception != None: self.dictFichierReception["fichier"].write(data) # Calcule de la taille de la partie telechargee self.dictFichierReception["taille_actuelle"] += len(data) pourcentage = int(100.0 * self.dictFichierReception["taille_actuelle"] / self.dictFichierReception["taille_totale"]) #self.EcritLog(_(u"Réception en cours... ") + str(pourcentage) + u" %") self.log.SetGauge(pourcentage) return # Si aucune data valide, on déconnecte self.EcritLog(_(u"Aucune donnée valide reçue")) self.transport.loseConnection()
def EnvoyerInfosSurFichierAEnvoyer(self, nomFichier=""): self.nomFichierAEnvoyer = nomFichier self.log.SetImage("upload") tailleFichier = os.path.getsize(nomFichier) self.transport.write( json.dumps({ "action": "envoyer", "nom": os.path.basename(nomFichier), "taille": tailleFichier })) self.EcritLog( _(u"Envoi du fichier (%s)") % FonctionsPerso.Formate_taille_octets(tailleFichier)) self.log.SetImage("on")
def FormateTailleFichier(taille): return FonctionsPerso.Formate_taille_octets(taille)