예제 #1
0
def CreateIDfamille(DB, parametres=None):
    """ Crée la fiche famille dans la base de données afin d'obtenir un IDfamille et un IDcompte_payeur """
    from Utils import UTILS_Internet
    date_creation = str(datetime.date.today())
    IDfamille = DB.ReqInsert("familles", [
        ("date_creation", date_creation),
    ])
    # Création du compte payeur
    IDcompte_payeur = DB.ReqInsert("comptes_payeurs", [
        ("IDfamille", IDfamille),
    ])
    # Création des codes internet
    try:
        internet_identifiant = parametres['identifiant']
    except:
        internet_identifiant = UTILS_Internet.CreationIdentifiant(
            IDfamille=IDfamille)
    try:
        internet_mdp = parametres['password1']
    except:
        taille = UTILS_Parametres.Parametres(mode="get",
                                             categorie="comptes_internet",
                                             nom="taille_passwords",
                                             valeur=8)
        internet_mdp = UTILS_Internet.CreationMDP(nbreCaract=taille)
    # Sauvegarde des données
    listeDonnees = [
        ("IDcompte_payeur", IDcompte_payeur),
        ("internet_actif", 1),
        ("internet_identifiant", internet_identifiant),
        ("internet_mdp", internet_mdp),
    ]
    print listeDonnees
    DB.ReqMAJ("familles", listeDonnees, "IDfamille", IDfamille)
    return IDfamille
예제 #2
0
    def RegenererMdp(self, event):
        if "********" in self.ctrl_mdp.GetValue():
            dlg = wx.MessageDialog(
                self,
                _(u"Attention, ce mot de passe a déjà été personnalisé par l'usager ! \n\nSouhaitez-vous vraiment modifier ce mot de passe ?"
                  ), _(u"Avertissement"),
                wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
            reponse = dlg.ShowModal()
            dlg.Destroy()
            if reponse != wx.ID_YES:
                return False

        dlg = wx.MessageDialog(
            self,
            _(u"Vous êtes vraiment sûr de vouloir générer un nouveau mot de passe ?"
              ), _(u"Avertissement"),
            wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES:
            return False

        taille = UTILS_Parametres.Parametres(mode="get",
                                             categorie="comptes_internet",
                                             nom="taille_passwords",
                                             valeur=8)
        internet_mdp = UTILS_Internet.CreationMDP(nbreCaract=taille,
                                                  cryptage=False)
        self.ctrl_mdp.SetValue(internet_mdp)
예제 #3
0
 def GetMdp(self):
     internet_mdp = self.dictDonnees["internet_mdp"]
     if internet_mdp.startswith("custom"):
         internet_mdp = "********"
     if internet_mdp.startswith("#@#"):
         internet_mdp = UTILS_Internet.DecrypteMDP(internet_mdp)
     return internet_mdp
예제 #4
0
    def MAJ(self):
        if self.dictDonnees["internet_actif"] == 1:
            activation = _(u"Compte internet activé")
            image = "Ok4"
        else:
            activation = _(u"Compte internet désactivé")
            image = "Interdit2"
        identifiant = self.dictDonnees["internet_identifiant"]
        if identifiant == None:
            identifiant = ""
        mdp = self.dictDonnees["internet_mdp"]
        if mdp == None:
            mdp = ""
        if mdp.startswith("#@#"):
            mdp = UTILS_Internet.DecrypteMDP(mdp)

        if mdp.startswith("custom"):
            mdp = _(
                u"********<BR><FONT SIZE=1>(Mot de passe personnalisé)</FONT>"
            )
        self.SetPage(u"""
        <FONT SIZE=2>
        <BR><BR>
        <CENTER><IMG SRC="%s"><BR>%s
        <BR><BR>
        <B>Identifiant</B> : %s
        <BR>
        <B>Mot de passe</B> : %s
        </CENTER>
        </FONT>
        """ % (Chemins.GetStaticPath(
            u"Images/16x16/%s.png" % image), activation, identifiant, mdp))
        self.SetBackgroundColour(self.couleurFond)
예제 #5
0
 def MAJ(self):
     if self.dictDonneesInitiales["internet_actif"] == 1:
         self.radio_activation_oui.SetValue(True)
     if self.dictDonneesInitiales["internet_identifiant"] != None:
         self.ctrl_identifiant.SetValue(
             self.dictDonneesInitiales["internet_identifiant"])
     if self.dictDonneesInitiales["internet_mdp"] != None:
         internet_mdp = self.dictDonneesInitiales["internet_mdp"]
         if internet_mdp.startswith("custom"):
             internet_mdp = "********"
         if internet_mdp.startswith("#@#"):
             internet_mdp = UTILS_Internet.DecrypteMDP(internet_mdp)
         self.ctrl_mdp.SetValue(internet_mdp)
예제 #6
0
    def RegenererIdentifiant(self, event):
        dlg = wx.MessageDialog(
            self,
            _(u"Vous êtes vraiment sûr de vouloir générer un nouvel identifiant ?"
              ), _(u"Avertissement"),
            wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES:
            return False

        internet_identifiant = UTILS_Internet.CreationIdentifiant(
            IDfamille=self.IDfamille, IDutilisateur=self.IDutilisateur)
        self.ctrl_identifiant.SetValue(internet_identifiant)
예제 #7
0
def CreateIDfamille(DB):
    """ Crée la fiche famille dans la base de données afin d'obtenir un IDfamille et un IDcompte_payeur """
    from Utils import UTILS_Internet
    date_creation = str(datetime.date.today())
    IDfamille = DB.ReqInsert("familles", [
        ("date_creation", date_creation),
    ])
    # Création du compte payeur
    IDcompte_payeur = DB.ReqInsert("comptes_payeurs", [
        ("IDfamille", IDfamille),
    ])
    # Création des codes internet
    internet_identifiant = UTILS_Internet.CreationIdentifiant(
        IDfamille=IDfamille)
    internet_mdp = UTILS_Internet.CreationMDP()
    # Sauvegarde des données
    listeDonnees = [
        ("IDcompte_payeur", IDcompte_payeur),
        ("internet_actif", 1),
        ("internet_identifiant", internet_identifiant),
        ("internet_mdp", internet_mdp),
    ]
    DB.ReqMAJ("familles", listeDonnees, "IDfamille", IDfamille)
    return IDfamille
예제 #8
0
    def __init__(self, parent, donnees):
        self.IDfamille = donnees[0]
        self.internet_actif = donnees[1]
        self.internet_identifiant = donnees[2]
        self.internet_mdp = donnees[3]
        if self.internet_mdp.startswith("custom"):
            self.internet_mdp = "********"
        if self.internet_mdp.startswith("#@#"):
            self.internet_mdp = UTILS_Internet.DecrypteMDP(
                self.internet_mdp, IDfichier=parent.IDfichier)

        if self.IDfamille in parent.dict_titulaires:
            self.nomTitulaires = parent.dict_titulaires[
                self.IDfamille]["titulairesSansCivilite"]
        else:
            self.nomTitulaires = _(u"Titulaires inconnus")
예제 #9
0
    def ReinitPasswords(self, event=None):
        """ Régénération des mots de passe """
        listeCoches = self.GetTracksCoches()
        if len(listeCoches) == 0 :
            dlg = wx.MessageDialog(self, _(u"Vous n'avez coché aucun compte internet à réinitialiser !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Demandes de confirmation
        dlg = wx.MessageDialog(self, _(u"Souhaitez-vous vraiment réinitialiser les mots de passe des %d comptes sélectionnés ?") % len(listeCoches), _(u"Modification"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_QUESTION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES :
            return

        dlg = wx.MessageDialog(self, _(u"ATTENTION, TOUS LES MOTS DE PASSE SERONT REINITIALISES !\n\nSouhaitez-vous vraiment regénérer les mots de passe des %d comptes sélectionnés ?") % len(listeCoches), _(u"Avertissement"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES :
            return

        # Récupère la taille des mots de passe
        taille = UTILS_Parametres.Parametres(mode="get", categorie="comptes_internet", nom="taille_passwords", valeur=8)
        dlg = wx.MessageDialog(self, _(u"Les mots de passe comporteront %d caractères.\n\nSi cela vous convient, cliquez sur Oui, sinon annulez et allez dans Menu Paramétrage > Préférences pour modifier la taille des mots de passe des comptes internet.") % taille, _(u"Avertissement"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_QUESTION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES :
            return

        dlg = wx.MessageDialog(self, _(u"DERNIER AVERTISSEMENT !\n\nConfirmez-vous la réinitialisation des mots de passe ? Vous ne pourrez pas revenir en arrière..."), _(u"Avertissement"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES :
            return

        # Regénération des mots de passe
        listeModifications = []
        for track in listeCoches :
            mdp = UTILS_Internet.CreationMDP(nbreCaract=taille)
            listeModifications.append((mdp, track.IDfamille))

        DB = GestionDB.DB()
        DB.Executermany("UPDATE familles SET internet_mdp=? WHERE IDfamille=?", listeModifications, commit=False)
        DB.Commit()
        DB.Close()
        self.MAJ()
예제 #10
0
 def OnBoutonMdpRenew(self, event):
     dlg = wx.MessageDialog(
         self,
         _(u"Souhaitez-vous vraiment générer un nouveau mot de passe pour ce compte internet ? \n\nAttention, l'ancien mot de passe sera remplacé."
           ), _(u"Avertissement"),
         wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
     reponse = dlg.ShowModal()
     dlg.Destroy()
     if reponse != wx.ID_YES:
         return
     from Utils import UTILS_Internet
     taille = UTILS_Parametres.Parametres(mode="get",
                                          categorie="comptes_internet",
                                          nom="taille_passwords",
                                          valeur=7)
     self.ctrl_mdp.SetValue(UTILS_Internet.CreationMDP(nbreCaract=taille))
     self.MAJaffichage()
예제 #11
0
    def OnBoutonOk(self, event):
        dictDonnees = self.GetDonnees()

        # Validation
        if len(dictDonnees["internet_identifiant"]
               ) < 7 and dictDonnees["internet_identifiant"] != "demo":
            dlg = wx.MessageDialog(
                self,
                _(u"L'identifiant est vraiment court.\n\nSouhaitez-vous tout de même le valider ?"
                  ), _(u"Avertissement"),
                wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
            reponse = dlg.ShowModal()
            dlg.Destroy()
            if reponse != wx.ID_YES:
                return False

        if len(dictDonnees["internet_mdp"]
               ) < 7 and dictDonnees["internet_mdp"] != "demo":
            dlg = wx.MessageDialog(
                self,
                _(u"Le mot de passe est vraiment court.\n\nSouhaitez-vous tout de même le valider ?"
                  ), _(u"Avertissement"),
                wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
            reponse = dlg.ShowModal()
            dlg.Destroy()
            if reponse != wx.ID_YES:
                return False

        # Vérifie que l'identifiant n'a pas déjà été attribué à un autre utilisateur ou une autre famille
        DB = GestionDB.DB()
        if self.IDfamille != None:
            req = u"""SELECT IDfamille, internet_identifiant
            FROM familles
            WHERE internet_identifiant='%s' AND IDfamille<>%d;""" % (
                dictDonnees["internet_identifiant"], self.IDfamille)
            DB.ExecuterReq(req)
            listeDonnees = DB.ResultatReq()
            DB.Close()
            if len(listeDonnees) > 0:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Cet identifiant a déjà été attribué à %d famille(s) !"
                      ) % len(listeDonnees), _(u"Erreur"),
                    wx.OK | wx.ICON_EXCLAMATION)
                dlg.ShowModal()
                dlg.Destroy()
                return False

        if self.IDutilisateur != None:
            req = u"""SELECT IDutilisateur, internet_identifiant
            FROM utilisateurs
            WHERE internet_identifiant='%s' AND IDutilisateur<>%d;""" % (
                dictDonnees["internet_identifiant"], self.IDutilisateur)
            DB.ExecuterReq(req)
            listeDonnees = DB.ResultatReq()
            DB.Close()
            if len(listeDonnees) > 0:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Cet identifiant a déjà été attribué à %d utilisateur(s) !"
                      ) % len(listeDonnees), _(u"Erreur"),
                    wx.OK | wx.ICON_EXCLAMATION)
                dlg.ShowModal()
                dlg.Destroy()
                return False

        # Cryptage du mot de passe
        internet_mdp = dictDonnees["internet_mdp"]
        if not internet_mdp.startswith(
                "custom") and not internet_mdp.startswith("#@#"):
            internet_mdp = UTILS_Internet.CrypteMDP(internet_mdp)

        # Sauvegarde
        if self.mode_virtuel == False:
            DB = GestionDB.DB()
            listeDonnees = [
                ("internet_actif", dictDonnees["internet_actif"]),
                ("internet_identifiant", dictDonnees["internet_identifiant"]),
                ("internet_mdp", internet_mdp),
            ]

            if self.IDfamille != None:
                DB.ReqMAJ("familles", listeDonnees, "IDfamille",
                          self.IDfamille)
            if self.IDutilisateur != None:
                DB.ReqMAJ("utilisateurs", listeDonnees, "IDutilisateur",
                          self.IDutilisateur)
            DB.Close()

        # Fermeture
        self.EndModal(wx.ID_OK)
예제 #12
0
    def __init__(self, parent, IDutilisateur=None):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX)
        self.parent = parent      
        self.IDutilisateur = IDutilisateur
        self.mdp = None
        self.mdpcrypt = None

        if IDutilisateur == None :
            DB = GestionDB.DB()
            IDutilisateur = DB.GetProchainID("utilisateurs")
            DB.Close()

        # Identité
        self.staticbox_identite_staticbox = wx.StaticBox(self, -1, _(u"Identité"))
        self.label_sexe = wx.StaticText(self, -1, _(u"Sexe :"))
        self.ctrl_sexe = wx.Choice(self, -1, choices=[_(u"Homme"), _(u"Femme")])
        self.label_nom = wx.StaticText(self, -1, _(u"Nom :"))
        self.ctrl_nom = wx.TextCtrl(self, -1, u"")
        self.label_prenom = wx.StaticText(self, -1, _(u"Prénom :"))
        self.ctrl_prenom = wx.TextCtrl(self, -1, u"")
        
        # Image
        self.staticbox_image_staticbox = wx.StaticBox(self, -1, _(u"Avatar"))
        self.ctrl_image = CTRL_Image(self)
        self.hyper_image = Hyperlien(self, label=_(u"Choisir un avatar"), infobulle=_(u"Cliquez ici pour modifier l'avatar de l'utilisateur"), URL="")
        
        # Accès
        self.staticbox_acces_staticbox = wx.StaticBox(self, -1, _(u"Accès"))
        self.ctrl_actif = wx.CheckBox(self, -1, u"Utilisateur actif")
        self.ctrl_actif.SetValue(True)
        self.bouton_modif_mdp = CTRL_Bouton_image.CTRL(self, texte="", cheminImage="Images/32x32/Cle.png")

        # Compte internet
        self.staticbox_internet_staticbox = wx.StaticBox(self, -1, _(u"Compte internet"))
        self.ctrl_compte_internet = CTRL_Compte_internet.CTRL(self, IDutilisateur=IDutilisateur, couleurFond=wx.WHITE)
        self.bouton_modifier = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY))
        #self.bouton_envoi_mail = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Emails_exp.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_envoi_pressepapiers = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Clipboard.png"), wx.BITMAP_TYPE_ANY))
        #self.bouton_historique = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Historique.png"), wx.BITMAP_TYPE_ANY))

        # Droits
        self.staticbox_droits_staticbox = wx.StaticBox(self, -1, _(u"Droits"))
        self.radio_droits_admin = wx.RadioButton(self, -1, _(u"Administrateur"), style=wx.RB_GROUP)
        self.radio_droits_modele = wx.RadioButton(self, -1, _(u"Le modèle de droits suivant :"))
        self.ctrl_modele_droits = CTRL_Modeles_droits(self)
        self.radio_droits_perso = wx.RadioButton(self, -1, _(u"Les droits personnalisés suivants :"))
        self.ctrl_droits = CTRL_Droits.CTRL(self, IDutilisateur=self.IDutilisateur)
        self.ctrl_droits.MAJ()
        
        # Commandes
        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, id=wx.ID_CANCEL, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifMdp, self.bouton_modif_mdp)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)
        self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioDroits, self.radio_droits_admin)
        self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioDroits, self.radio_droits_modele)
        self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioDroits, self.radio_droits_perso)
        self.Bind(wx.EVT_BUTTON, self.ctrl_compte_internet.Modifier, self.bouton_modifier)
        #self.Bind(wx.EVT_BUTTON, self.Envoyer_email, self.bouton_envoi_mail)
        self.Bind(wx.EVT_BUTTON, self.ctrl_compte_internet.Envoyer_pressepapiers, self.bouton_envoi_pressepapiers)
        #self.Bind(wx.EVT_BUTTON, self.Consulter_historique, self.bouton_historique)

        if self.IDutilisateur == None :
            self.SetTitle(_(u"Saisie d'un utilisateur"))

            # Création des codes internet
            internet_identifiant = UTILS_Internet.CreationIdentifiant(IDutilisateur=IDutilisateur)
            internet_mdp = UTILS_Internet.CreationMDP(nbreCaract=8)
            self.ctrl_compte_internet.SetDonnees({"internet_actif": 0, "internet_identifiant": internet_identifiant, "internet_mdp": internet_mdp})

        else:
            self.SetTitle(_(u"Modification d'un utilisateur"))
            self.Importation()
        
        self.OnRadioDroits(None)
        self.MAJboutonMdp()