def GetOneConfig(self, nomConfig='lastConfig', mute=False): # appel d'une configuration nommée, retourne le dict des params cfg = xucfg.ParamFile() grpCONFIGS = cfg.GetDict(groupe='CONFIGS') cfg = xucfg.ParamUser() grpAPPLI = cfg.GetDict(groupe='APPLI') nomAppli = '' if 'NOM_APPLICATION' in grpAPPLI.keys(): nomAppli = grpAPPLI['NOM_APPLICATION'] if nomConfig == 'lastConfig': # recherche du nom de configuration par défaut, cad la dernière des choix if 'choixConfigs' in grpCONFIGS: if nomAppli in grpCONFIGS['choixConfigs'].keys(): if 'lastConfig' in grpCONFIGS['choixConfigs'][nomAppli].keys(): nomConfig = grpCONFIGS['choixConfigs'][nomAppli][ 'lastConfig'] typeConfig = 'db_reseau' if 'TYPE_CONFIG' in grpAPPLI: typeConfig = grpAPPLI['TYPE_CONFIG'] if 'lstConfigs' in grpCONFIGS: lstNomsConfigs = [ x[typeConfig]['ID'] for x in grpCONFIGS['lstConfigs'] ] if not (nomConfig in lstNomsConfigs): mess = "xDB: Le nom de config '%s' n'est pas dans la liste des accès base de donnée" % ( nomConfig) self.erreur = mess if not mute: wx.MessageBox(mess) return mess ix = lstNomsConfigs.index(nomConfig) # on récupére les paramétres de la config par le pointeur ix dans les clés return grpCONFIGS['lstConfigs'][ix][typeConfig]
def GetDictUtilisateur(afficheMessage=True): try: topWindow = wx.GetApp().GetTopWindow() dictUtilisateur = topWindow.dictUser except: dictUtilisateur = None if not dictUtilisateur: #try : import xpy.outils.xshelve as xucfg cfg = xucfg.ParamUser() #userdomain, username ,config, mpUserDB, seudo, utilisateur, nom,prenom, IDutilisateur, droits,profil dictUtilisateur = cfg.GetDict(groupe='IDENT', close=False) user = cfg.GetDict(groupe='USER') dictUtilisateur.update(user) #except: pass if dictUtilisateur: # Si la frame 'General' est chargée, on y récupère le dict de config return dictUtilisateur else: if afficheMessage == True: wx.MessageBox( "Vous n'êtes pas identifiés\n\nrepassez par l'entrée", style=wx.ICON_AUTH_NEEDED) return None
def VerificationDroitsUtilisateurActuel(categorie="", action="", IDactivite="", afficheMessage=True): try: topWindow = wx.GetApp().GetTopWindow() nomWindow = topWindow.GetName() dictUtilisateur = topWindow.dictUser except: dictUtilisateur = None if not dictUtilisateur: try: import xpy.outils.xshelve as xucfg cfg = xucfg.ParamUser() dictUtilisateur = cfg.GetDict(groupe='USER') except: pass if dictUtilisateur: # Si la frame 'General' est chargée, on y récupère le dict de config resultat = VerificationDroits(dictUtilisateur, categorie, action, IDactivite) if resultat == False and afficheMessage == True: wx.MessageBox( "'%s'\n\nVotre profil utilisateur ne permet pas d'accéder à la fonctionnalité demandée!\n'%s' - '%s'" % (dictUtilisateur['nom'], categorie, action), style=wx.ICON_AUTH_NEEDED) return resultat return True
def MakeStatusText(self): cfgU = xucfg.ParamUser() self.config = cfgU.SetDict(self.dictAppli, groupe='APPLI') # appel de la configuration base de données dans paramFile cfgF = xucfg.ParamFile() grpCONFIGS = cfgF.GetDict(dictDemande=None, groupe='CONFIGS') nomAppli = self.dictAppli['NOM_APPLICATION'] nomConfig = '' if 'choixConfigs' in grpCONFIGS: if nomAppli and nomAppli in grpCONFIGS['choixConfigs'].keys(): if 'lastConfig' in grpCONFIGS['choixConfigs'][nomAppli].keys(): nomConfig = grpCONFIGS['choixConfigs'][nomAppli][ 'lastConfig'] messBD = "données: '%s'" % (nomConfig) self.nomVersion = "%s %s" % (self.dictAppli['NOM_APPLICATION'], xaccueil.GetVersion(self)) self.messageStatus = "%s | %s" % (self.nomVersion, messBD) if hasattr(self, 'dictUser') and self.dictUser: self.messageStatus += ", Utilisateur: %s" % ( self.dictUser['utilisateur']) else: self.messageStatus += ", Utilisateur non identifié" if hasattr(self, 'infoStatus'): self.messageStatus += " | %s" % (self.infoStatus) self.SetStatusText(self.messageStatus)
def Recherche(self): txtSearch = self.GetValue() # Recherche de l'utilisateur et envoi dans ParamUser de shelve for dictUtilisateur in self.listeUtilisateurs: if txtSearch == dictUtilisateur["mdp"]: # Enregistrement de l'utilisateur et de ses propriétés cfg = xu_shelve.ParamUser() self.choix = cfg.GetDict(groupe='USER', close=False) dictUtilisateur['utilisateur'] = dictUtilisateur[ 'prenom'] + " " + dictUtilisateur['nom'] self.choix['utilisateur'] = dictUtilisateur['utilisateur'] self.choix['nom'] = dictUtilisateur['nom'] self.choix['prenom'] = dictUtilisateur['prenom'] self.choix['IDutilisateur'] = dictUtilisateur['IDutilisateur'] self.choix['droits'] = dictUtilisateur['droits'] self.choix['profil'] = dictUtilisateur['profil'] self.choix['username'] = os.environ['USERNAME'] self.choix['userdomain'] = os.environ['USERDOMAIN'] cfg.SetDict(self.choix, groupe='USER') if hasattr(self.parent, 'On_trouve'): self.parent.On_trouve(dictUtilisateur) self.SetValue("") break self.Refresh()
def GetConfigs(): # appel des params de connexion stockés dans UserProfile et data cfg = xucfg.ParamUser() grpUSER = cfg.GetDict(groupe='USER', close=False) grpAPPLI = cfg.GetDict(groupe='APPLI') # appel des params de connexion stockés dans Data cfg = xucfg.ParamFile() grpCONFIGS = cfg.GetDict(groupe='CONFIGS') return grpAPPLI, grpUSER, grpCONFIGS
def SauveParamUser(self): # sauve ID dans le registre de la session cfg = xshelve.ParamUser() dic = {} for ctrlConfig in self.lstChoixConfigs: dic.update(ctrlConfig.GetValues()) #dic.update(self.ctrlConnect.GetValues()) cfg.SetDict(dic, groupe='USER', close=False) dic = self.ctrlID.GetValues() cfg.SetDict(dic['ident'], groupe='IDENT')
def EstAdmin(self): dicUser = {'utilisateur':'User inconnu!','profil':'inconnu'} if self.estAdmin == None: # récup info de l'utilisateur de la session cfg = xshelve.ParamUser() dicUser = cfg.GetDict(dictDemande=None, groupe='USER') self.estAdmin = dicUser['profil'] == 'administrateur' if not self.estAdmin: mess = "Echec de la vérification des droits administateur" mess += "\n\n%s de profil %s n'est pas administrateur!"%(dicUser['utilisateur'],dicUser['profil']) wx.MessageBox(mess,"Verif droits d'accès") return self.estAdmin
def GetIDutilisateur(afficheMessage=True): try: topWindow = wx.GetApp().GetTopWindow() dictUtilisateur = topWindow.dictUser except: dictUtilisateur = None if not dictUtilisateur: try: import xpy.outils.xshelve as xucfg cfg = xucfg.ParamUser() dictUtilisateur = cfg.GetDict(groupe='USER') except: pass if 'IDutilisateur' in dictUtilisateur.keys(): # Si la frame 'General' est chargée, on y récupère le dict de config return dictUtilisateur['IDutilisateur'] else: if afficheMessage == True: wx.MessageBox( "Vous n'êtes pas identifiés\n\nrepassez par l'entrée", style=wx.ICON_AUTH_NEEDED) return None
def __init__(self, parent, **kwds): typeConfig = kwds.pop('typeConfig', None) nomConfig = kwds.pop('nomConfig', None) lblBox = kwds.pop('lblBox', "Paramètres de la base de donnée") modeBase = kwds.pop('modeBase', 'pointeur') kwds['size'] = (350, 430) super().__init__(parent, **kwds) self.modeBase = modeBase self.DB = None # récup info de l'utilisateur de la session cfg = xshelve.ParamUser() dicUser = cfg.GetDict(dictDemande=None, groupe='USER') mess = "Accès aux ParamUser" try: # vérif des droits if modeBase == 'creation': mess = "Echec de la vérification des droits de création" if dicUser['profil'] != 'administrateur': mess += "\n\n%s de profil %s n'est pas administrateur!" % ( dicUser['utilisateur'], dicUser['profil']) raise (mess) mess = None except: wx.MessageBox(mess, "xGestionConfig.DLG_saisieUneConfig") if mess: self.Destroy() # choix de la configuration prise dans paramFile cfgF = xshelve.ParamFile() grpConfigs = cfgF.GetDict(dictDemande=None, groupe='CONFIGS') # les choix de config sont stockés par application car Data peut être commun à plusieurs if parent and hasattr(parent, 'dictAppli'): dictAppli = self.parent.dictAppli else: cfg = xshelve.ParamUser() dictAppli = cfg.GetDict(dictDemande=None, groupe='APPLI') nomAppli = dictAppli['NOM_APPLICATION'] # récup des données à afficher après construction choixConfigs = grpConfigs['choixConfigs'][nomAppli] if 'lastConfig' in choixConfigs: lastConfig = choixConfigs['lastConfig'] else: lastConfig = None ddConfig = GetDdConfig(grpConfigs, lastConfig) # récup de la matrice ayant servi à la gestion des données if not typeConfig: lstcode = GetLstCodesMatrice(MATRICE_CONFIGS) typeConfig = lstcode[0] key = (typeConfig, lblBox) matrice = { key: MATRICE_CONFIGS[GetCleMatrice(typeConfig, MATRICE_CONFIGS)] } self.typeConfig = typeConfig # ajustement de la matrice selon les modeBase ixID = GetIxLigneMatrice('nameDB', matrice[key]) if self.modeBase == 'pointeur': matrice[key][ixID] = { 'name': 'nameDB', 'genre': 'combo', 'label': 'Nom de la Base', 'help': "Le nom de la base est le fichier en local, ou son nom sur le serveur", 'ctrlAction': 'OnNameDB', } elif self.modeBase == 'creation': matrice[key][ixID] = { 'name': 'nameDB', 'genre': 'texte', 'label': 'Nom de la Base', 'help': "Choisir un base de donnée non présente sur le serveur ou fichier non existant", 'ctrlAction': 'OnNameDB', } # place la valeur du champ ID exist = False if nomConfig: ixID = GetIxLigneMatrice('ID', matrice[key]) matrice[key][ixID]['value'] = nomConfig # construction de l'écran de saisie self.pnl = xusp.TopBoxPanel(self, matrice=matrice, lblTopBox=None) if self.typeConfig in ddConfig.keys() and nomConfig == ddConfig[ self.typeConfig]['ID']: self.pnl.SetValues(ddConfig) # grise le champ ID ctrlID = self.pnl.GetPnlCtrl('ID') ctrlID.Enable(False) if self.modeBase in ('creation', 'pointeur'): titre = "Création d'une nouvelle base de données" texte = "Définissez les pointeurs d'accès et le nom de la base à y créer\n" texte += "le mot de passe présenté sera celui des 'Accès aux bases de données'" else: titre = "Définition de la base de données" texte = "Définissez les pointeurs d'accès et le nom de la base souhaitée\n" texte += "l'éventuel mot de passe présenté sera celui des 'Accès aux bases de données'" # personnalisation des éléments de l'écran self.bandeau = xbandeau.Bandeau( self, titre=titre, texte=texte, nomImage='xpy/images/32x32/Configuration.png') self.btn = self.Boutons(self) # layout self.Sizer(self.pnl)
def __init__(self, parent, **kwds): style = kwds.pop('style', wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) size = kwds.pop('size', (400, 430)) self.typeConfig = kwds.pop('typeConfig', None) listArbo = os.path.abspath(__file__).split("\\") titre = listArbo[-1:][0] + "/" + self.__class__.__name__ wx.Dialog.__init__(self, parent, -1, title=titre, style=style, size=size) self.parent = parent # Récup du code de la description des champs pour une configuration lstcode = GetLstCodesMatrice(MATRICE_CONFIGS) if not self.typeConfig: self.typeConfig = lstcode[0] if self.parent and 'TYPE_CONFIG' in self.parent.dictAppli: self.typeConfig = self.parent.dictAppli['TYPE_CONFIG'] if not (self.typeConfig in lstcode): wx.MessageBox("L'option '%s' n'est pas dans MATRICECONFIGS " % (self.typeConfig)) ddDonnees = {} valeurs = {} ident = None # Bouton sortie de pied d'écran self.btnTest = xboutons.BTN_tester(self) self.btn = xboutons.BTN_fermer(self) # IDENT : appel de l'identification IDENT partie grisée ----------------------------------------------------- try: utilisateur = self.parent.dictUser['utilisateur'] except: utilisateur = None for (code, label), lignes in MATRICE_IDENT.items(): for ligne in lignes: if ligne['name'].lower() in ('username', 'user'): valeurs[ligne['name']] = os.environ['USERNAME'] ident = code if ligne['name'].lower() in ('userdomain', 'domaine', 'workgroup'): try: valeurs[ligne['name']] = os.environ['USERDOMAIN'] except: import platform valeurs[ligne['name']] = platform.node() if ligne['name'].lower() in ('utilisateur', ): valeurs[ligne['name']] = utilisateur ident = code self.ctrlID = xusp.CTRL_property(self, matrice=MATRICE_IDENT, enable=False) if ident: ddDonnees[ident] = valeurs self.ctrlID.SetValues(ddDonnees=ddDonnees) # recherche dans profilUser ---------------------------------------------------------------------------------- cfg = xshelve.ParamUser() # lecture des valeurs préalablement utilisées choixUser = cfg.GetDict(dictDemande=None, groupe='USER', close=True) dictAppli = cfg.GetDict(dictDemande=None, groupe='APPLI') if dictAppli == {}: dictAppli = self.parent.dictAppli self.nomAppli = dictAppli['NOM_APPLICATION'] # CONFIGS : appel du modèle des configurations ---------------------------------------------------------------- codeBox, labelBox, lignes = xformat.AppelLignesMatrice( None, MATRICE_CHOIX_CONFIG) # Composition des choix de configurations selon l'implantation self.lstChoixConfigs = [] if self.parent and 'CHOIX_CONFIGS' in self.parent.dictAppli: lstchoix = self.parent.dictAppli['CHOIX_CONFIGS'] for codeBox, labelBox in lstchoix: self.lstChoixConfigs.append( ChoixConfig(self, labelBox, codeBox, lignes, {})) else: # le nom de la configuration c'est le premier champ décrit dans la matrice self.lstChoixConfigs.append( ChoixConfig(self, labelBox, codeBox, lignes, {})) # choix de la configuration prise dans paramFile cfgF = xshelve.ParamFile() grpConfigs = cfgF.GetDict(dictDemande=None, groupe='CONFIGS') # filtrage des des configs selon type retenu self.lstIDconfigsOK, self.lstConfigsOK, self.lstConfigsKO = GetLstConfigs( grpConfigs, self.typeConfig) ddchoixConfigs = grpConfigs.pop('choixConfigs', {}) # les choix de config sont stockés par application car Data peut être commun à plusieurs if not (self.nomAppli in ddchoixConfigs): ddchoixConfigs[self.nomAppli] = {} choixConfigs = ddchoixConfigs[self.nomAppli] # alimente la liste des choix possibles for ctrlConfig in self.lstChoixConfigs: ctrlConfig.SetOneSet(ctrlConfig.Name, self.lstIDconfigsOK) if ctrlConfig.Name in choixConfigs: ctrlConfig.SetOneValue(ctrlConfig.Name, choixConfigs[ctrlConfig.Name]) # last config sera affichée en 'Fermer' si pas modifiée if 'lastConfig' in choixConfigs: self.lastConfig = choixConfigs['lastConfig'] else: self.lastConfig = '' # SEPARATEUR : simple texte self.titre = wx.StaticText(self, -1, "Eléments de connexion") self.Sizer()