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)
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)
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)
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
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()
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
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)
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)
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)
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)
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)
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)
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
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()
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)
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)
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)
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)
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)
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
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
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()
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
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()
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
def Sauvegarde(self): taille = self.ctrl_taille.GetValue() UTILS_Parametres.Parametres(mode="set", categorie="comptes_internet", nom="taille_passwords", valeur=taille)