示例#1
0
 def EnvoyerTest(self, event):
     """ Envoi d'un Email de test """
     adresse = UTILS_Parametres.Parametres(mode="get", categorie="emails", nom="adresse_test", valeur=u"")      
     dlg = wx.TextEntryDialog(self, _(u"Saisissez une adresse Email et cliquez sur Ok :"), _(u"Envoi d'un Email de test"), adresse)
     if dlg.ShowModal() != wx.ID_OK:
         dlg.Destroy()
         return
     adresse = dlg.GetValue()
     dlg.Destroy()
     # Mémorise l'adresse saisie
     if UTILS_Envoi_email.ValidationEmail(adresse) == False :
         dlg = wx.MessageDialog(self, _(u"L'adresse saisie n'est pas valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     UTILS_Parametres.Parametres(mode="set", categorie="emails", nom="adresse_test", valeur=adresse)
     # Vérifie si au moins un destintaire saisi
     listeDestinataires=self.ctrl_destinataires.GetDonnees()
     if len(listeDestinataires) == 0 :
         dlg = wx.MessageDialog(self, _(u"Vous devez sélectionner au moins un destinataire !\n\n(En cas de fusion, les données du premier destinataire seront utilisés)"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     # Envoi du mail test
     self.Envoyer(listeDestinataires=[listeDestinataires[0],], adresseTest=adresse)    
示例#2
0
    def AfficheAvertissement(self):
        if UTILS_Parametres.Parametres(mode="get",
                                       categorie="ne_plus_afficher",
                                       nom="infos_etat_nomin",
                                       valeur=False) == True:
            return

        import DLG_Message_html
        texte = u"""
<CENTER><IMG SRC="Static/Images/32x32/Information.png">
<BR><BR>
<FONT SIZE=2>
<B>Avertissement</B>
<BR><BR>
La fonctionnalité 'Etat nominatif des consommations' étant très récente, je ne peux que vous conseiller de bien vérifier les résultats obtenus. Si vous constatez un bug, n'hésitez pas à le signaler sur le forum de Noethys.
<BR><BR>
D'autre part, cette fonctionnalité peut être ardue à appréhender en raison de ses nombreuses possibilités. Je vous propose de découvrir sur le forum un mode d'emploi complet sur son utilisation :
<BR>
<A HREF="http://www.noethys.com/index.php?option=com_kunena&Itemid=7&func=view&catid=5&id=772#772">Cliquez ici pour accéder au mode d'emploi</A>
</FONT>
</CENTER>
"""
        dlg = DLG_Message_html.Dialog(self,
                                      texte=texte,
                                      titre=_(u"Information"),
                                      nePlusAfficher=True)
        dlg.ShowModal()
        nePlusAfficher = dlg.GetEtatNePlusAfficher()
        dlg.Destroy()
        if nePlusAfficher == True:
            UTILS_Parametres.Parametres(mode="set",
                                        categorie="ne_plus_afficher",
                                        nom="infos_etat_nomin",
                                        valeur=nePlusAfficher)
示例#3
0
    def AfficheAvertissement(self):
        if UTILS_Parametres.Parametres(mode="get", categorie="ne_plus_afficher", nom="infos_badgeage", valeur=False) == True :
            return
        
        import DLG_Message_html
        texte = u"""
<CENTER><IMG SRC="Static/Images/32x32/Information.png">
<BR><BR>
<FONT SIZE=2>
<B>Avertissement</B>
<BR><BR>
Cette fonctionnalité étant très récente, il est conseillé de multiplier les tests avant une utilisation en situation réelle. Si vous constatez un bug, n'hésitez pas à le signaler sur le forum de Noethys.
<BR><BR>
Vous pouvez découvrir un petit aperçu des nombreuses possibilités offertes par ce module sur le forum :
<A HREF="http://www.noethys.com/index.php?option=com_kunena&Itemid=7&func=view&catid=5&id=965#965">Cliquez ici</A>
<BR><BR>
<I>Pensez à configurer la synthèse vocale pour bénéficier au maximum de l'interface de badgeage !</I>
</FONT>
</CENTER>
"""
        dlg = DLG_Message_html.Dialog(self, texte=texte, titre=_(u"Information"), nePlusAfficher=True)
        dlg.ShowModal()
        nePlusAfficher = dlg.GetEtatNePlusAfficher()
        dlg.Destroy()
        if nePlusAfficher == True :
            UTILS_Parametres.Parametres(mode="set", categorie="ne_plus_afficher", nom="infos_badgeage", valeur=nePlusAfficher)
示例#4
0
    def AnnonceRappel(self):
        # Affichage à 70 % de chance
        if random.randrange(1, 100) > 70 :
            return False
        
        # Vérifie si case Ne plus Afficher cochée ou non
        if UTILS_Parametres.Parametres(mode="get", categorie="ne_plus_afficher", nom="sauvegarde_automatique", valeur=False) == True :
            return False
        
        try :
            image = wx.Bitmap(Chemins.GetStaticPath("Images/48x48/Sauvegarder.png"), wx.BITMAP_TYPE_ANY)
            message1 = _(u"Vous n'avez paramétré aucune sauvegarde automatique.\n\nSouhaitez-vous le faire maintenant ?")
            dlg = dialogs.MultiMessageDialog(self.parent, message1, caption=_(u"Rappel de sauvegarde"), msg2=None, style = wx.NO | wx.CANCEL | wx.YES | wx.YES_DEFAULT, icon=image, btnLabels={wx.ID_YES : _(u"Oui"), wx.ID_NO : _(u"Ne plus rappeler"), wx.ID_CANCEL : _(u"Pas maintenant")})
            reponse = dlg.ShowModal() 
            dlg.Destroy() 
        except :
            reponse = None
        if reponse == wx.ID_YES :
            from Dlg import DLG_Sauvegardes_auto
            dlg = DLG_Sauvegardes_auto.Dialog(self.parent)
            dlg.ShowModal() 
            dlg.Destroy()
            return wx.ID_CANCEL
        if reponse == wx.ID_NO :
            UTILS_Parametres.Parametres(mode="set", categorie="ne_plus_afficher", nom="sauvegarde_automatique", valeur=True)
        if reponse == wx.ID_CANCEL :
            return True

        return True
示例#5
0
    def OnBoutonTester(self, event):
        if self.GetPageActive().Validation() == False :
            return False

        # Récupération des paramètres
        dict_donnees = self.GetPageActive().GetDonnees()

        # Demande une adresse de destination
        adresse = UTILS_Parametres.Parametres(mode="get", categorie="emails", nom="adresse_test", valeur=u"")
        dlg = wx.TextEntryDialog(self, _(u"Saisissez une adresse Email de destination et cliquez sur Ok :"), _(u"Envoi d'un Email de test"), adresse)
        if dlg.ShowModal() != wx.ID_OK:
            dlg.Destroy()
            return
        adresse = dlg.GetValue()
        dlg.Destroy()
        # Mémorise l'adresse saisie
        if UTILS_Envoi_email.ValidationEmail(adresse) == False :
            dlg = wx.MessageDialog(self, _(u"L'adresse saisie n'est pas valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        UTILS_Parametres.Parametres(mode="set", categorie="emails", nom="adresse_test", valeur=adresse)

        # Création du message de test
        message = UTILS_Envoi_email.Message(
            destinataires=[adresse, ],
            sujet=u"Test de messagerie",
            texte_html=u"<p>Ceci est un <b>test de messagerie</b> envoyé à %s.</p>" % datetime.datetime.now().strftime("%H:%M:%S"),
        )

        try :
            messagerie = UTILS_Envoi_email.Messagerie(
                backend=dict_donnees["moteur"],
                hote=dict_donnees["smtp"],
                port=dict_donnees["port"],
                utilisateur=dict_donnees["utilisateur"],
                motdepasse=dict_donnees["motdepasse"],
                email_exp=dict_donnees["adresse"],
                nom_exp=dict_donnees["nom_adresse"],
                timeout=10,
                use_tls=dict_donnees["startTLS"],
                parametres=dict_donnees["parametres"],
            )
            messagerie.Connecter()
            messagerie.Envoyer(message)
            messagerie.Fermer()
        except Exception as err:
            err = str(err)
            if six.PY2:
                err = err.decode("iso-8859-15")
            intro = _(u"L'envoi de l'email de test est impossible :")
            conclusion = _(u"Vérifiez votre connexion internet ou les paramètres de votre adresse d'expédition.")
            dlgErreur = DLG_Messagebox.Dialog(self, titre=_(u"Erreur"), introduction=intro, detail=err, conclusion=conclusion, icone=wx.ICON_ERROR, boutons=[_(u"Ok"),])
            dlgErreur.ShowModal()
            dlgErreur.Destroy()
            return False

        dlg = wx.MessageDialog(self, _(u"L'email de test a été envoyé avec succès."), _(u"Test de connexion"), wx.OK | wx.ICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()
示例#6
0
    def MAJ(self, block=True):
        """ MAJ du bouton Demandes """
        # Paramètres

        if self.lock.acquire(block) == True:
            try:
                index = UTILS_Parametres.Parametres(
                    mode="get",
                    categorie="portail",
                    nom="client_synchro_portail_delai",
                    valeur=1)
                self.delai = LISTE_DELAIS_SYNCHRO[index][0]
                self.synchro_ouverture = UTILS_Parametres.Parametres(
                    mode="get",
                    categorie="portail",
                    nom="client_synchro_portail_ouverture",
                    valeur=True)
            except Exception as e:
                self.lock.release()
                raise e
            else:
                self.lock.release()
            self.MAJ_bouton()
            return True
        else:
            return False
示例#7
0
    def OnBoutonOk(self, event):
        # Vérification des données saisies
        if self.ctrl_etat_avant.GetValeur() == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner un état à convertir !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        if self.ctrl_etat_apres.GetValeur() == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner l'état souhaité !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        if self.ctrl_etat_avant.GetValeur() == self.ctrl_etat_apres.GetValeur()  :
            dlg = wx.MessageDialog(self, _(u"Les deux états sélectionnés doivent être différents !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Mémorisation des paramètres
        etat_avant = self.ctrl_etat_avant.GetValeur()
        UTILS_Parametres.Parametres(mode="set", categorie="conversion_etat", nom="etat_avant", valeur=etat_avant)
        etat_apres = self.ctrl_etat_apres.GetValeur()
        UTILS_Parametres.Parametres(mode="set", categorie="conversion_etat", nom="etat_apres", valeur=etat_apres)

        if self.radio_lignes_affichees.GetValue() == True :
            UTILS_Parametres.Parametres(mode="set", categorie="conversion_etat", nom="option_lignes", valeur="lignes_affichees")
        if self.radio_lignes_selectionnees.GetValue() == True :
            UTILS_Parametres.Parametres(mode="set", categorie="conversion_etat", nom="option_lignes", valeur="lignes_selectionnees")

        # Fermeture de la fenêtre
        self.EndModal(wx.ID_OK)
示例#8
0
    def AfficheAvertissement(self):
        if UTILS_Parametres.Parametres(mode="get",
                                       categorie="ne_plus_afficher",
                                       nom="synchronisation_nomadhys",
                                       valeur=False) == True:
            return

        from Dlg import DLG_Message_html
        texte = u"""
<CENTER><IMG SRC="%s">
<BR><BR>
<FONT SIZE=2>
<B>Avertissement</B>
<BR><BR>
Cette nouvelle fonctionnalité est expérimentale.
<BR><BR>
Il est conseillé de tester son efficacité et sa stabilité dans un fichier test avant de l'utiliser dans votre fichier de données. 
<BR><BR>
Merci de signaler tout bug rencontré dans la rubrique "Signaler un bug " du forum de Noethys.
</FONT>
</CENTER>
""" % Chemins.GetStaticPath("Images/32x32/Information.png")
        dlg = DLG_Message_html.Dialog(self,
                                      texte=texte,
                                      titre=_(u"Information"),
                                      nePlusAfficher=True)
        dlg.ShowModal()
        nePlusAfficher = dlg.GetEtatNePlusAfficher()
        dlg.Destroy()
        if nePlusAfficher == True:
            UTILS_Parametres.Parametres(mode="set",
                                        categorie="ne_plus_afficher",
                                        nom="synchronisation_nomadhys",
                                        valeur=nePlusAfficher)
    def __init__(self, parent, IDinscription=None):
        wx.Dialog.__init__(self, parent, -1, name="DLG_Impression_inscription", style=wx.DEFAULT_DIALOG_STYLE)
        self.parent = parent
        self.IDinscription = IDinscription
        self.dictSave = {}
        self.listeAdresses = []
        
        # Importation des données
        self.dictInscription = self.Importation()
        self.IDfamille = self.dictInscription["IDFAMILLE"]
                
        # Bandeau
        intro = _(u"Vous pouvez ici éditer une confirmation d'inscription. Sélectionnez un modèle de document puis cliquez tout simplement sur 'Aperçu' ou sur 'Envoyer Par Email'.")
        titre = _(u"Edition d'une confirmation d'inscription")
        self.SetTitle(titre)
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Imprimante.png")

        # Options
        self.staticbox_options_staticbox = wx.StaticBox(self, -1, _(u"Options"))
        self.label_modele = wx.StaticText(self, -1, _(u"Modèle :"))
        self.ctrl_modele = CTRL_Choix_modele.CTRL_Choice(self, categorie="inscription")
        self.bouton_gestion_modeles = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Mecanisme.png"), wx.BITMAP_TYPE_ANY))
        
        self.label_signataire = wx.StaticText(self, -1, _(u"Signataire :"))
        self.ctrl_signataire = CTRL_Signataires(self)
        
        self.label_intro = wx.StaticText(self, -1, _(u"Intro :"))
        self.ctrl_intro = wx.CheckBox(self, -1, u"")
        self.ctrl_intro.SetValue(True)
        self.ctrl_texte_intro = wx.TextCtrl(self, -1, TEXTE_INTRO, style=wx.TE_MULTILINE)
        self.ctrl_texte_intro.SetMinSize((400, 120))
        self.label_tableau = wx.StaticText(self, -1, _(u"Tableau :"))
        self.ctrl_tableau = wx.CheckBox(self, -1, _(u"Afficher un tableau comportant les caractéristiques de l'inscription"))

        # Boutons
        self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_email = CTRL_Bouton_image.CTRL(self, texte=_(u"Envoyer par Email"), cheminImage="Images/32x32/Emails_exp.png")
        self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Aperçu"), cheminImage="Images/32x32/Apercu.png")
        self.bouton_annuler = CTRL_Bouton_image.CTRL(self, texte=_(u"Fermer"), cheminImage="Images/32x32/Fermer.png")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnBoutonModeles, self.bouton_gestion_modeles)
        self.Bind(wx.EVT_CHECKBOX, self.OnCheckIntro, self.ctrl_intro)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonEmail, self.bouton_email)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler)
        self.Bind(wx.EVT_CLOSE, self.OnBoutonAnnuler)
        
        # Init contrôles
        self.OnCheckIntro(None) 
        self.ctrl_texte_intro.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="edition_confirmation_inscription", nom="intro", valeur=TEXTE_INTRO))
        self.ctrl_intro.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="edition_confirmation_inscription", nom="check_intro", valeur=True))
        self.ctrl_tableau.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="edition_confirmation_inscription", nom="check_tableau", valeur=True))
        self.OnCheckIntro(None)
        wx.CallLater(0, self.Layout)
 def OnBoutonAnnuler(self, event):
     # Historique
     self.Sauvegarder() 
     # Parametres
     UTILS_Parametres.Parametres(mode="set", categorie="edition_confirmation_inscription", nom="intro", valeur=self.ctrl_texte_intro.GetValue())
     UTILS_Parametres.Parametres(mode="set", categorie="edition_confirmation_inscription", nom="check_intro", valeur=self.ctrl_intro.GetValue())
     UTILS_Parametres.Parametres(mode="set", categorie="edition_confirmation_inscription", nom="check_tableau", valeur=self.ctrl_tableau.GetValue())
     # Fermeture de la fenêtre
     self.EndModal(wx.ID_OK)
示例#11
0
    def OnBoutonOk(self, event):
        # Vérification des données saisies
        if self.ctrl_unite_origine.GetValeur() == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner une unité à recopier !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        if self.ctrl_unite_destination.GetValeur() == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner l'unité vers laquelle recopier !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        if self.ctrl_unite_origine.GetValeur() == self.ctrl_unite_destination.GetValeur()  :
            dlg = wx.MessageDialog(self, _(u"Les deux unités sélectionnées doivent être différentes !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Mémorisation des paramètres
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="unite_origine", valeur=self.ctrl_unite_origine.GetValeur())
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="unite_destination", valeur=self.ctrl_unite_destination.GetValeur())
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="param_horaires", valeur=self.check_param_horaires.GetValue())
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="param_quantite", valeur=self.check_param_quantite.GetValue())
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="param_etiquettes", valeur=self.check_param_etiquettes.GetValue())
        UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="param_etat", valeur=self.check_param_etat.GetValue())

        if self.radio_lignes_affichees.GetValue() == True :
            UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="option_lignes", valeur="lignes_affichees")
        if self.radio_lignes_selectionnees.GetValue() == True :
            UTILS_Parametres.Parametres(mode="set", categorie="recopiage_conso", nom="option_lignes", valeur="lignes_selectionnees")

        # Fermeture de la fenêtre
        self.EndModal(wx.ID_OK)
示例#12
0
 def OnBoutonFermer(self, event):
     UTILS_Parametres.Parametres(mode="set",
                                 categorie="rolmre",
                                 nom="code_col",
                                 valeur=self.ctrl_code_coll.GetValue())
     UTILS_Parametres.Parametres(mode="set",
                                 categorie="rolmre",
                                 nom="code_nat",
                                 valeur=self.ctrl_code_nat.GetValue())
     UTILS_Parametres.Parametres(mode="set",
                                 categorie="rolmre",
                                 nom="code_rec",
                                 valeur=self.ctrl_code_rec.GetValue())
     self.EndModal(wx.ID_CANCEL)
示例#13
0
    def Memorisation_parametres(self):
        # Mémorisation des préférences
        inclure_pieces_jointes = self.ctrl_parametres.GetPropertyValue(
            "inclure_pieces_jointes")
        format_nom_fichier = self.ctrl_parametres.GetPropertyValue(
            "format_nom_fichier")

        UTILS_Parametres.Parametres(mode="set",
                                    categorie="export_pes",
                                    nom="inclure_pieces_jointes",
                                    valeur=inclure_pieces_jointes)
        UTILS_Parametres.Parametres(mode="set",
                                    categorie="export_pes",
                                    nom="format_nom_fichier",
                                    valeur=format_nom_fichier)
示例#14
0
    def OnBoutonOk(self, event):
        # Largeur Colonnes Unités
        newLargeur = self.ctrl_largeurUnite.GetValue()
        try:
            newLargeur = int(newLargeur)
        except:
            dlg2 = wx.MessageDialog(
                self,
                _(u"La largeur des colonnes unités semble incorrecte !"),
                _(u"Erreur de saisie"), wx.OK | wx.ICON_INFORMATION)
            dlg2.ShowModal()
            dlg2.Destroy()
            dlg.Destroy()
            return
        if newLargeur < 30 or newLargeur > 300:
            dlg2 = wx.MessageDialog(
                self,
                _(u"La largeur des colonnes unités doit être comprise entre 30 et 300 !"
                  ), _(u"Erreur de saisie"), wx.OK | wx.ICON_INFORMATION)
            dlg2.ShowModal()
            dlg2.Destroy()
            return

        # Mémorisation paramètres
        UTILS_Parametres.Parametres(
            mode="set",
            categorie="parametres_remplissage",
            nom="masquer_anciennes_activites",
            valeur=int(self.ctrl_masquer_activites.GetValue()))

        # Fermeture de la fenêtre
        self.EndModal(wx.ID_OK)
示例#15
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
def RestaurationConfiguration(nomListe=None, listeColonnesDefaut=[]):
    listeColonnesFinale = []

    # Mémorise les colonnes par défaut
    dictColonnes = {}
    for col in listeColonnesDefaut :
        dictColonnes[col.valueGetter] = col
    
    # Lecture du paramètres stocké
    texteDefaut = ConvertListeEnTexte(listeColonnesDefaut)
    texte = UTILS_Parametres.Parametres(mode="get", categorie="configuration_liste_colonnes", nom=nomListe, valeur=texteDefaut)
    listeChaines = texte.split("##")
    listeNomsTemp = []
    for chaine in listeChaines :
        try :
            nom, visible = chaine.split(";")
            if visible == "oui" :
                visible = True
            else :
                visible = False
                
            if dictColonnes.has_key(nom) :
                col = dictColonnes[nom]
                col.visible = visible
                listeColonnesFinale.append(col)
                listeNomsTemp.append(nom)
        except :
            pass
            
    # Vérifie que toutes les colonnes de la liste initiale ont été traitées
    for nom, col in dictColonnes.iteritems() :
        if nom not in listeNomsTemp :
            listeColonnesFinale.append(col)

    return listeColonnesFinale
示例#17
0
def InitIdentifiantsFiches():
    """ Remplit tous les champs identifiant et mdp de toutes les fiches familles """
    DB = GestionDB.DB()
    req = """SELECT IDfamille, nom, prenom FROM familles ORDER BY nom, prenom; """
    DB.executerReq(req)
    listeDonnees = DB.resultatReq()
    DB.close()

    taille = UTILS_Parametres.Parametres(mode="get",
                                         categorie="comptes_internet",
                                         nom="taille_passwords",
                                         valeur=7)

    DB = GestionDB.DB()
    for IDfamille, nom, prenom in listeDonnees:
        identifiant = CreationIdentifiant(IDfamille)
        mdp = CreationMDP(nbreCaract=taille)

        listeDonnees = [
            ("internet_identifiant", identifiant),
            ("internet_mdp", mdp),
            ("internet_actif", 1),
        ]

        # Modification de l'identité de l'ENFANT
        DB.ReqMAJ("familles", listeDonnees, "IDfamille", IDfamille)

    DB.commit()
    DB.close()
示例#18
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)
示例#19
0
 def MAJ(self):
     # Paramètres
     self.ctrl_factures.SetParametres(self.parent.dictParametres)
     # Montant
     try:
         montant = UTILS_Parametres.Parametres(mode="get", categorie="generation_factures", nom="cocher_montant_sup", valeur=0.0)
     except:
         montant = 0.0
     self.ctrl_option_montant.SetMontant(montant)
示例#20
0
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE)
        self.parent = parent

        # Bandeau
        titre = _(u"Convertir l'état des consommations")
        self.SetTitle(titre)
        intro = _(u"Sélectionnez l'état à convertir puis l'état souhaité. Vous pouvez également préciser les lignes à impacter.")
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Calendrier_modifier.png")

        # Conversion
        self.staticbox_conversion = wx.StaticBox(self, -1, _(u"Etats"))
        self.ctrl_etat_avant = CTRL_Etat(self)
        self.ctrl_image_conversion = wx.StaticBitmap(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Fleche_droite2.png"), wx.BITMAP_TYPE_ANY))
        self.ctrl_etat_apres = CTRL_Etat(self)

        # Options
        self.staticbox_options = wx.StaticBox(self, -1, _(u"Options"))
        self.radio_lignes_affichees = wx.RadioButton(self, -1, _(u"Toutes les lignes affichées"), style=wx.RB_GROUP)
        self.radio_lignes_selectionnees = wx.RadioButton(self, -1, _(u"Toutes les lignes sélectionnées"))

        # Boutons
        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.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)

        # Init
        etat_avant = UTILS_Parametres.Parametres(mode="get", categorie="conversion_etat", nom="etat_avant", valeur=None)
        self.ctrl_etat_avant.SetValeur(etat_avant)

        etat_apres = UTILS_Parametres.Parametres(mode="get", categorie="conversion_etat", nom="etat_apres", valeur=None)
        self.ctrl_etat_apres.SetValeur(etat_apres)

        option_lignes = UTILS_Parametres.Parametres(mode="get", categorie="conversion_etat", nom="option_lignes", valeur="lignes_affichees")
        if option_lignes == "lignes_affichees" :
            self.radio_lignes_affichees.SetValue(True)
        if option_lignes == "lignes_selectionnees" :
            self.radio_lignes_selectionnees.SetValue(True)
示例#21
0
    def OnBoutonCafpro(self, event):
        # Mémorisation du numéro allocataire dans le presse-papiers
        num_allocataire = self.ctrl_numero.GetValue()
        clipdata = wx.TextDataObject()
        clipdata.SetText(num_allocataire)
        wx.TheClipboard.Open()
        wx.TheClipboard.SetData(clipdata)
        wx.TheClipboard.Close()

        # Vérifie si case Ne plus Afficher cochée ou non
        if UTILS_Parametres.Parametres(mode="get",
                                       categorie="ne_plus_afficher",
                                       nom="acces_cafpro",
                                       valeur=False) == False:
            texte = u"""
<CENTER><IMG SRC="Static/Images/32x32/Astuce.png">
<FONT SIZE=3>
<BR>
<B>Astuce</B>
<BR><BR>
Le numéro d'allocataire de la famille a été copié dans le presse-papiers.
<BR><BR>
Collez tout simplement ce numéro dans le champ de recherche du site CAFPRO grâce à la combinaison de touches <B>CTRL+V</B> de votre clavier !
</FONT>
</CENTER>
"""
            dlg = DLG_Message_html.Dialog(self,
                                          texte=texte,
                                          titre=_(u"Astuce"),
                                          nePlusAfficher=True,
                                          size=(200, 300))
            dlg.ShowModal()
            nePlusAfficher = dlg.GetEtatNePlusAfficher()
            dlg.Destroy()
            if nePlusAfficher == True:
                UTILS_Parametres.Parametres(mode="set",
                                            categorie="ne_plus_afficher",
                                            nom="acces_cafpro",
                                            valeur=nePlusAfficher)

        # Ouverture du navigateur
        import webbrowser
        webbrowser.open("http://www.caf.fr/cafpro/Ident.jsp")
    def OnBoutonOk(self, event):
        # Mémorisation paramètres
        UTILS_Parametres.Parametres(
            mode="set",
            categorie="parametres_remplissage",
            nom="masquer_anciennes_activites",
            valeur=int(self.ctrl_masquer_activites.GetValue()))

        # Fermeture de la fenêtre
        self.EndModal(wx.ID_OK)
示例#23
0
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE)
        self.parent = parent

        # Bandeau
        titre = _(u"Recopier des consommations")
        self.SetTitle(titre)
        intro = _(u"Vous pouvez ici recopier les consommations d'une unité sur une autre unité. Sélectionnez les unités à impacter puis cliquez sur Ok.")
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Calendrier_modifier.png")

        # Unités
        self.staticbox_unites = wx.StaticBox(self, -1, _(u"Unités"))
        self.ctrl_unite_origine = CTRL_Unite(self)
        self.ctrl_image_recopiage = wx.StaticBitmap(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Fleche_droite2.png"), wx.BITMAP_TYPE_ANY))
        self.ctrl_unite_destination = CTRL_Unite(self)

        # Paramètres
        self.staticbox_parametres = wx.StaticBox(self, -1, _(u"Informations à recopier"))
        self.check_param_horaires = wx.CheckBox(self, -1, _(u"Horaires"))
        self.check_param_quantite = wx.CheckBox(self, -1, _(u"Quantité"))
        self.check_param_etiquettes = wx.CheckBox(self, -1, _(u"Etiquettes"))
        self.check_param_etat = wx.CheckBox(self, -1, _(u"Etat"))

        # Options
        self.staticbox_options = wx.StaticBox(self, -1, _(u"Options"))
        self.radio_lignes_affichees = wx.RadioButton(self, -1, _(u"Toutes les lignes affichées"), style=wx.RB_GROUP)
        self.radio_lignes_selectionnees = wx.RadioButton(self, -1, _(u"Toutes les lignes sélectionnées"))

        # Boutons
        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_CHOICE, self.OnChoixUnite, self.ctrl_unite_origine)
        self.Bind(wx.EVT_CHOICE, self.OnChoixUnite, self.ctrl_unite_destination)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)

        # Init
        self.ctrl_unite_origine.SetValeur(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="unite_origine", valeur=None))
        self.ctrl_unite_destination.SetValeur(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="unite_destination", valeur=None))
        self.check_param_horaires.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="param_horaires", valeur=True))
        self.check_param_quantite.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="param_quantite", valeur=True))
        self.check_param_etiquettes.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="param_etiquettes", valeur=True))
        self.check_param_etat.SetValue(UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="param_etat", valeur=True))

        option_lignes = UTILS_Parametres.Parametres(mode="get", categorie="recopiage_conso", nom="option_lignes", valeur="lignes_affichees")
        if option_lignes == "lignes_affichees" :
            self.radio_lignes_affichees.SetValue(True)
        if option_lignes == "lignes_selectionnees" :
            self.radio_lignes_selectionnees.SetValue(True)

        self.OnChoixUnite(None)
示例#24
0
    def Afficher_avertissement(self):
        if UTILS_Parametres.Parametres(mode="get",
                                       categorie="ne_plus_afficher",
                                       nom="datamatrix",
                                       valeur=False) == True:
            return

        texte = u"""
<CENTER>
<FONT SIZE=3>
A partir du 28 juillet 2020, les collectivités qui génèrent un bordereau PES v2 (pour Hélios) doivent proposer à 
leurs usagers un paiement possible par espèces ou par carte bancaire chez un buraliste agréé. Il existe deux conditions 
pour répondre à cette obligation : faire apparaître sur chaque facture un code-barre à la norme datamatrix, que le 
buraliste pourra scanner, et un texte mentionnant la possibilité de payer par ce moyen.
<BR><BR>
Pour découvrir comment adapter Noethys à cet usage, consultez la page d'information suivante :
<A HREF="https://noethys.com/index.php/actualites/264-paiement-des-factures-chez-le-buraliste">Paiement des factures Noethys chez le buraliste</A>.
</FONT>
</CENTER>
"""

        from Dlg import DLG_Message_html
        dlg = DLG_Message_html.Dialog(self,
                                      texte=texte,
                                      titre=_(u"Information importante"),
                                      size=(510, 290),
                                      nePlusAfficher=True)
        dlg.CenterOnScreen()
        dlg.ShowModal()
        nePlusAfficher = dlg.GetEtatNePlusAfficher()
        dlg.Destroy()
        if nePlusAfficher == True:
            UTILS_Parametres.Parametres(mode="set",
                                        categorie="ne_plus_afficher",
                                        nom="datamatrix",
                                        valeur=nePlusAfficher)
        return True
示例#25
0
    def Validation(self):
        # Validation de la saisie
        nbreTotalFactures = len(self.ctrl_factures.GetObjects())
        nbreCoches = len(self.ctrl_factures.GetTracksCoches())
        if nbreCoches == 0:
            dlg = wx.MessageDialog(
                self,
                _(u"Vous n'avez sélectionné aucune facture à générer !"),
                _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return False

        # Demande de confirmation
        if nbreCoches < nbreTotalFactures:
            texteSupp = _(u"(Sur un total de %d factures proposées) "
                          ) % nbreTotalFactures
        else:
            texteSupp = ""
        if nbreCoches == 1:
            texte = _(
                u"Confirmez-vous la génération de 1 facture %s?") % texteSupp
        else:
            texte = _(u"Confirmez-vous la génération de %d factures %s?") % (
                nbreCoches, texteSupp)
        dlg = wx.MessageDialog(
            self, texte, _(u"Confirmation"),
            wx.YES_NO | wx.YES_DEFAULT | wx.CANCEL | wx.ICON_QUESTION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES:
            return False

        # Génération des factures
        listeFacturesGenerees = self.SauvegardeFactures()
        if listeFacturesGenerees == False:
            return False

        # Mémorisation du montant supp
        montant = self.ctrl_option_montant.GetMontant()
        UTILS_Parametres.Parametres(mode="set",
                                    categorie="generation_factures",
                                    nom="cocher_montant_sup",
                                    valeur=montant)

        # Envoi des factures générées
        self.parent.listeFacturesGenerees = listeFacturesGenerees

        return True
示例#26
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()
示例#27
0
    def __init__(self,
                 hote=None,
                 port=None,
                 utilisateur=None,
                 motdepasse=None,
                 email_exp=None,
                 nom_exp=None,
                 timeout=None,
                 use_tls=False,
                 fail_silently=False,
                 parametres=None):
        self.hote = hote
        self.port = port
        self.utilisateur = utilisateur
        self.motdepasse = motdepasse
        self.email_exp = email_exp
        self.nom_exp = nom_exp
        self.timeout = timeout
        self.use_tls = use_tls
        self.fail_silently = fail_silently
        self.parametres = parametres

        if self.utilisateur == "": self.utilisateur = None
        if self.motdepasse == "": self.motdepasse = None

        # Timeout
        timeout = UTILS_Parametres.Parametres(mode="get",
                                              categorie="email",
                                              nom="timeout",
                                              valeur=None)
        if timeout not in ("", None):
            self.timeout = int(timeout)

        # Préparation de l'adresse d'expédition
        if self.nom_exp not in ("", None):
            self.from_email = u"%s <%s>" % (self.nom_exp, self.email_exp)
        else:
            self.from_email = self.email_exp

        # Formatage des paramètres
        self.dict_parametres = {}
        if parametres not in ("", None):
            liste_parametres = parametres.split("##")
            for texte in liste_parametres:
                nom, valeur = texte.split("==")
                self.dict_parametres[nom] = valeur
示例#28
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()
示例#29
0
def RestaurationConfiguration(nomListe=None, listeColonnesDefaut=[]):
    # Mémorise les colonnes par défaut
    dictColonnes = {}
    for col in listeColonnesDefaut:
        dictColonnes[col.valueGetter] = col

    # Lecture du paramètres stocké
    texteDefaut = ConvertListeEnTexte(listeColonnesDefaut)
    texte = UTILS_Parametres.Parametres(
        mode="get",
        categorie="configuration_liste_colonnes",
        nom=nomListe,
        valeur=texteDefaut)

    listeColonnesFinale = []
    listeNomsTemp = []
    for code in texte.split("##"):
        # Pour gérer les anciennes configurations de liste
        visible = True
        if ";" in code:
            code, visible = code.split(";")
            visible = bool(visible)
        # Mémorisation des colonnes sélectionnées
        if visible == True:
            listeNomsTemp.append(code)
            if code in dictColonnes:
                col = dictColonnes[code]
                col.visible = True
                listeColonnesFinale.append(col)

    # Vérifie que toutes les colonnes de la liste initiale ont été traitées
    for code, col in dictColonnes.items():
        if code not in listeNomsTemp:
            col.visible = False
            listeColonnesFinale.append(col)

    return listeColonnesFinale
示例#30
0
 def Sauvegarde(self):
     taille = self.ctrl_taille.GetValue()
     UTILS_Parametres.Parametres(mode="set", categorie="comptes_internet", nom="taille_passwords", valeur=taille)