def VerifieMdp(self, mdp="", code_page=None, silencieux=False): # Vérification du mot de passe utilisateur if IMPORT_SHA256: mdpcrypt = SHA256.new(mdp.encode('utf-8')).hexdigest() else: mdpcrypt = "" DB = GestionDB.DB() req = "SELECT IDutilisateur, nom, prenom FROM utilisateurs WHERE mdp='%s' or mdp='%s';" % ( mdpcrypt, mdp) DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) > 0: self.IDutilisateur, nom, prenom = listeDonnees[0] self.nomUtilisateur = "%s %s" % (nom, prenom) self.mdpUtilisateur = mdp else: self.IDutilisateur == 0 self.nomUtilisateur = "" self.mdpUtilisateur = "" if self.IDutilisateur == 0 and silencieux == False: MsgBox.info(text="Le mot de passe utilisateur n'est pas valide !", title="Accès refusé", size_hint=(0.6, 0.6)) return # Chargement de la page souhaitée if code_page != None: self.Charger_page(code_page)
def Valider(self): # Récupération des données IDgroupe = None for ordre, nom, IDgroupeTmp in self.liste_groupes : if nom == self.spinner_groupe.text : IDgroupe = IDgroupeTmp heure_debut = self.ctrl_heure_debut.text heure_fin = self.ctrl_heure_fin.text quantite = int(self.ctrl_quantite.text) etat = self.etat # Vérification de la cohérence des données if heure_debut > heure_fin : MsgBox.info(text=u"L'heure de début ne peut pas être supérieure à l'heure de fin !", title="Erreur de saisie", size_hint=(0.6, 0.6)) return False # Enregistre les modifications dans le dictConso self.dictConso["heure_debut"] = heure_debut self.dictConso["heure_fin"] = heure_fin self.dictConso["quantite"] = quantite self.dictConso["etat"] = etat self.dictConso["IDgroupe"] = IDgroupe # Renvoi des données if self.callback != None : self.callback(typeAction=self.typeAction, dictConso=self.dictConso) self.dismiss()
def OnBoutonEnvoyer(self): # Vérifie que le nom de l'appareil a bien été renseigné avant config = UTILS_Config.Config() nom_appareil = config.Lire(section="general", option="nom_appareil", defaut="") ID_appareil = config.Lire(section="general", option="ID_appareil", defaut="") config.Close() if nom_appareil == "" : MsgBox.info(text="Vous devez obligatoirement renseigner le nom de l'appareil ! \n(Menu principal > Paramètres > Généralités)", title="Erreur", size_hint=(0.6, 0.6)) return DB = GestionDB.DB(typeFichier="actions") req = """SELECT IDparametre, nom, valeur FROM parametres;""" DB.ExecuterReq(req) listeTemp = DB.ResultatReq() dictTemp = {} for IDparametre, nom, valeur in listeTemp : dictTemp[nom] = IDparametre if dictTemp.has_key("nom_appareil") : DB.ReqMAJ("parametres", [("nom", "nom_appareil"), ("valeur", nom_appareil)], "IDparametre", dictTemp["nom_appareil"]) else : DB.ReqInsert("parametres", [("nom", "nom_appareil"), ("valeur", nom_appareil)]) if dictTemp.has_key("ID_appareil") : DB.ReqMAJ("parametres", [("nom", "ID_appareil"), ("valeur", ID_appareil)], "IDparametre", dictTemp["ID_appareil"]) else : DB.ReqInsert("parametres", [("nom", "ID_appareil"), ("valeur", ID_appareil)]) DB.Close() # Lancement du transfert typeTransfert = self.GetTypeTransfert() if typeTransfert == "serveur" : self.StartServer(action="envoyer") if typeTransfert == "ftp" : self.StartFTP(action="envoyer") if typeTransfert == "manuel" : self.StartManuel(action="envoyer")
def Afficher_page(self, code_page="", label_page="", direction='left'): if self.code_page == "consommations" : self.dict_pages["consommations"]["page"].On_leave() if code_page == "parametres" : popup = Popup_parametres(callback=self.MAJ_page) popup.open() return # Chargement d'une page depuis son label if label_page != "" : for code_page, dictPage in self.dict_pages.iteritems() : if dictPage["label"] == label_page : break # Chargement d'une page depuis son code if self.code_page == code_page : return # Vérifications avant chargement page if code_page in ("liste_individus", "consommations") : # Vérifie qu'un fichier de données est chargé if self.fichier_valide == False : MsgBox.info(text="Action impossible : Aucun fichier n'est chargé !", title="Erreur", size_hint=(0.6, 0.6)) return # Vérifie que l'utilisateur est identifié if self.IDutilisateur == 0 : popup = SaisieMdp(title="Saisissez votre mot de passe utilisateur", callback=self.VerifieMdp, code_page=code_page) popup.open() return # Chargement de la page self.Charger_page(code_page, direction=direction)
def VerifieMdp(self, mdp="", code_page=None, silencieux=False): # Vérification du mot de passe utilisateur if IMPORT_SHA256 : mdpcrypt = SHA256.new(mdp.encode('utf-8')).hexdigest() else : mdpcrypt = "" DB = GestionDB.DB() req = "SELECT IDutilisateur, nom, prenom FROM utilisateurs WHERE mdp='%s' or mdp='%s';" % (mdpcrypt, mdp) DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) > 0 : self.IDutilisateur, nom, prenom = listeDonnees[0] self.nomUtilisateur = "%s %s" % (nom, prenom) self.mdpUtilisateur = mdp else : self.IDutilisateur == 0 self.nomUtilisateur = "" self.mdpUtilisateur = "" if self.IDutilisateur == 0 and silencieux == False : MsgBox.info(text="Le mot de passe utilisateur n'est pas valide !", title="Accès refusé", size_hint=(0.6, 0.6)) return # Chargement de la page souhaitée if code_page != None : self.Charger_page(code_page)
def build(self): root = Widget() MsgBox.question(text="Are you able to answer for this question?", title="hello world", yes_callback=lambda: MsgBox.info(text='You said Yes'), no_callback=lambda: MsgBox.info(text='You said No'), size_hint=(0.6, 0.6) ) return root
def Valider(self, chemin=None, listeFichiers=[]): if self.nomFichier != None : nomFichier = self.nomFichier else : if len(listeFichiers) == 0 : MsgBox.info(text="Vous devez selectionner un fichier !", title="Erreur", size_hint=(0.6, 0.6)) return nomFichier = listeFichiers[0] self.callback(chemin, nomFichier) self.dismiss()
def ChargerFichier(self, chemin="", nomFichier=""): """ Recevoir un fichier manuel """ # Recherche du IDfichier en cours config = UTILS_Config.Config() IDfichier = config.Lire(section="fichier", option="ID", defaut="") config.Close() # Vérification du fichier if "data_%s" % IDfichier not in nomFichier : MsgBox.info(text="Récuperation impossible : Le fichier doit commencer par 'data_%s' ! " % IDfichier, title="Echec de la recuperation", size_hint=(0.6, 0.6)) return self.ReceptionFichier(nomFichier)
def StartServer(self, action="envoyer"): # Récupération des paramètres de connexion dans le config config = UTILS_Config.Config() adresse = config.Lire(section="synchronisation", option="serveur_adresse", defaut="") port = config.Lire(section="synchronisation", option="serveur_port", defaut="") config.Close() # Connexion au serveur try : reactor.connectTCP(adresse, int(port), EchoFactory(self, action=action), timeout=5) except Exception, err: self.EcritLog("Echec de la connexion : Verifiez les paramètres !") MsgBox.info(text="Verifiez les paramètres de connexion !", title="Echec de la connexion", size_hint=(0.6, 0.6))
def Valider(self, chemin=None, listeFichiers=[]): if self.nomFichier != None: nomFichier = self.nomFichier else: if len(listeFichiers) == 0: MsgBox.info(text="Vous devez selectionner un fichier !", title="Erreur", size_hint=(0.6, 0.6)) return nomFichier = listeFichiers[0] self.callback(chemin, nomFichier) self.dismiss()
def OnBoutonEnvoyer(self): # Vérifie que le nom de l'appareil a bien été renseigné avant config = UTILS_Config.Config() nom_appareil = config.Lire(section="general", option="nom_appareil", defaut="") ID_appareil = config.Lire(section="general", option="ID_appareil", defaut="") config.Close() if nom_appareil == "": MsgBox.info( text= "Vous devez obligatoirement renseigner le nom de l'appareil ! \n(Menu principal > Paramètres > Généralités)", title="Erreur", size_hint=(0.6, 0.6)) return DB = GestionDB.DB(typeFichier="actions") req = """SELECT IDparametre, nom, valeur FROM parametres;""" DB.ExecuterReq(req) listeTemp = DB.ResultatReq() dictTemp = {} for IDparametre, nom, valeur in listeTemp: dictTemp[nom] = IDparametre if "nom_appareil" in dictTemp: DB.ReqMAJ("parametres", [("nom", "nom_appareil"), ("valeur", nom_appareil)], "IDparametre", dictTemp["nom_appareil"]) else: DB.ReqInsert("parametres", [("nom", "nom_appareil"), ("valeur", nom_appareil)]) if "ID_appareil" in dictTemp: DB.ReqMAJ("parametres", [("nom", "ID_appareil"), ("valeur", ID_appareil)], "IDparametre", dictTemp["ID_appareil"]) else: DB.ReqInsert("parametres", [("nom", "ID_appareil"), ("valeur", ID_appareil)]) DB.Close() # Lancement du transfert typeTransfert = self.GetTypeTransfert() if typeTransfert == "serveur": self.StartServer(action="envoyer") if typeTransfert == "ftp": self.StartFTP(action="envoyer") if typeTransfert == "manuel": self.StartManuel(action="envoyer")
def ChargerFichier(self, chemin="", nomFichier=""): """ Recevoir un fichier manuel """ # Recherche du IDfichier en cours config = UTILS_Config.Config() IDfichier = config.Lire(section="fichier", option="ID", defaut="") config.Close() # Vérification du fichier if "data_%s" % IDfichier not in nomFichier: MsgBox.info( text= "Récuperation impossible : Le fichier doit commencer par 'data_%s' ! " % IDfichier, title="Echec de la recuperation", size_hint=(0.6, 0.6)) return self.ReceptionFichier(nomFichier)
def StartServer(self, action="envoyer"): # Récupération des paramètres de connexion dans le config config = UTILS_Config.Config() adresse = config.Lire(section="synchronisation", option="serveur_adresse", defaut="") port = config.Lire(section="synchronisation", option="serveur_port", defaut="") config.Close() # Connexion au serveur try: reactor.connectTCP(adresse, int(port), EchoFactory(self, action=action), timeout=5) except Exception as err: self.EcritLog(u"Echec de la connexion : Verifiez les paramètres !") MsgBox.info(text=u"Vérifiez les paramètres de connexion !", title="Echec de la connexion", size_hint=(0.6, 0.6))
def Afficher_page(self, code_page="", label_page="", direction='left'): if self.code_page == "consommations": self.dict_pages["consommations"]["page"].On_leave() if code_page == "parametres": popup = Popup_parametres(callback=self.MAJ_page) popup.open() return # Chargement d'une page depuis son label if label_page != "": for code_page, dictPage in self.dict_pages.items(): if dictPage["label"] == label_page: break # Chargement d'une page depuis son code if self.code_page == code_page: return # Vérifications avant chargement page if code_page in ("liste_individus", "consommations"): # Vérifie qu'un fichier de données est chargé if self.fichier_valide == False: MsgBox.info( text="Action impossible : Aucun fichier n'est chargé !", title="Erreur", size_hint=(0.6, 0.6)) return # Vérifie que l'utilisateur est identifié if self.IDutilisateur == 0: popup = SaisieMdp( title="Saisissez votre mot de passe utilisateur", callback=self.VerifieMdp, code_page=code_page) popup.open() return # Chargement de la page self.Charger_page(code_page, direction=direction)