示例#1
0
    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)
示例#2
0
 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() 
示例#3
0
 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() 
示例#4
0
    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")  
示例#5
0
    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)
示例#6
0
 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)
示例#7
0
 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
示例#8
0
 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() 
示例#9
0
 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)
示例#10
0
 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))
示例#11
0
 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()
示例#12
0
    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")
示例#13
0
 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)
示例#14
0
 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))
示例#15
0
    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)