コード例 #1
0
ファイル: xAppli.py プロジェクト: BrunelJacques/NoeXpy
    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)
コード例 #2
0
ファイル: xUTILS_DB.py プロジェクト: BrunelJacques/NoeXpy
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]
コード例 #3
0
 def OnFermer(self, event):
     cfgF = xshelve.ParamFile()
     cfgF.SetDict({'lstConfigs': self.lstConfigsKO + self.lddDonnees},
                  'CONFIGS')
     if self.IsModal():
         self.EndModal(wx.OK)
     else:
         self.Close()
コード例 #4
0
ファイル: xUTILS_DB.py プロジェクト: BrunelJacques/NoeXpy
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
コード例 #5
0
 def Init(self):
     # choix de la configuration prise dans paramUser
     self.paramsFile = xshelve.ParamFile(nomFichier=self.nomFichier,
                                         path=self.pathData)
     self.dicParams = self.paramsFile.GetDict(dictDemande=None,
                                              groupe=self.nomGroupe,
                                              close=False)
     if self.dicParams:
         # pose dans la grille la valeur de les dernières valeurs utilisées
         self.SetValues(self.dicParams)
コード例 #6
0
ファイル: UTILS_Compta.py プロジェクト: BrunelJacques/NoeXpy
def GetIDcomptaDefaut():
    # recherche le nom de la compta pointée par la gestion des bases et proposée par défaut
    paramFile = xshelve.ParamFile(nomFichier="Config")
    IDcompta = None
    dicConfig = paramFile.GetDict(None, 'CONFIGS')
    if 'choixConfigs' in dicConfig:
        if 'Noelite' in dicConfig['choixConfig']:
            if 'compta.config' in dicConfig['choixConfig']['compta.config']:
                IDcompta = dicConfig['choixConfig']['compta.config'][
                    'compta.config']
    return IDcompta
コード例 #7
0
 def SauveConfig(self):
     # sauve les configs sur appli/data local
     dicconfigs = {}
     value = "Non défini"
     for ctrl in self.lstChoixConfigs:
         value = ctrl.GetOneValue(ctrl.Name)
         dicconfigs[ctrl.Name] = value
     dicconfigs['lastConfig'] = value
     self.lastConfig = value
     #récupère l'ensemble des choix existants antérieurement
     cfgF = xshelve.ParamFile()
     grpConfigs = cfgF.GetDict(groupe='CONFIGS', close=False)
     dicchoix = grpConfigs.pop('choixConfigs', {})
     # actualise seulement ceux de l'application
     dicchoix[self.nomAppli] = dicconfigs
     grpConfigs['choixConfigs'] = dicchoix
     cfgF.SetDict(grpConfigs, groupe='CONFIGS')
コード例 #8
0
    def __init__(self, parent, typeConfig=None, **kwds):
        select = kwds.pop('select', None)
        kwds['lblList'] = "Configurations actuelles"
        super().__init__(parent, **kwds)
        if not typeConfig: typeConfig = parent.dictAppli['TYPE_CONFIG']
        self.parent = parent
        self.dlColonnes = {}
        self.lddDonnees = []
        self.lstIDconfigsOK = []
        self.lstConfigsKO = []
        self.dldMatrice = {}
        self.typeConfig = typeConfig
        # composition des paramètres
        self.gestionProperty = False
        self.ok = False
        self.DB = None
        cle = GetCleMatrice(typeConfig, MATRICE_CONFIGS)
        self.dldMatrice[cle] = MATRICE_CONFIGS[cle]
        self.dlColonnes[typeConfig] = [x['name'] for x in MATRICE_CONFIGS[cle]]
        cfgF = xshelve.ParamFile()
        grpConfigs = cfgF.GetDict(None, 'CONFIGS')
        if 'lstConfigs' in grpConfigs:
            self.lstIDconfigsOK, lstConfigsOK, lstConfigsKO = GetLstConfigs(
                grpConfigs, typeConfig)
            self.lddDonnees = lstConfigsOK

        # paramètres pour self.pnl contenu principal de l'écran
        self.kwds['lblTopBox'] = ''
        self.Size = (400, 300)

        if self.dldMatrice != {}:
            self.InitDlgGestion()
            self.dlgGest.SetSize(350, 400)
            self.dlgGest.btn = self.Boutons(self.dlgGest)
            self.SizerDlgGestion()
            self.Init()
            self.ok = True
            if 'lstConfigs' in grpConfigs:
                if select in self.lstIDconfigsOK:
                    ix = self.lstIDconfigsOK.index(select)
                    self.pnl.ctrl.Select(ix)
                    self.pnl.ctrl.SetItemState(ix, wx.LIST_STATE_SELECTED,
                                               wx.LIST_STATE_SELECTED)
            self.InitDlGest()
コード例 #9
0
ファイル: UTILS_Compta.py プロジェクト: BrunelJacques/NoeXpy
    def GetConfig(self, nomCompta):
        # recherche des configuration d'accès aux base de données clé 'db_reseau'
        paramFile = xshelve.ParamFile(nomFichier="Config")

        self.IDconfigCpta = None
        dicConfig = paramFile.GetDict(None, 'CONFIGS')
        IDconfig = None
        cfgCompta = None
        if 'choixConfigs' in dicConfig:
            if 'Noelite' in dicConfig['choixConfigs']:
                if 'Compta.config' in dicConfig['choixConfigs']['Noelite']:
                    IDconfig = dicConfig['choixConfigs']['Noelite'][
                        'Compta.config']
        if not IDconfig:
            mess = "Aucune base de compta n'est définie par la gestion du menu_fichier!"
            wx.MessageBox(mess, style=wx.ID_ABORT)
            return
        # transposition entre les noms de configs et les possibilités de la matrice
        if nomCompta == 'quadra' and 'quad' in IDconfig.lower():
            # quadratus était par défaut
            cfgCompta = xgc.GetDdConfig(dicConfig, IDconfig)['db_reseau']
        elif nomCompta == 'noegest' and not 'quad' in IDconfig.lower():
            # on prend la compta par défaut
            cfgCompta = xgc.GetDdConfig(dicConfig, IDconfig)['db_reseau']
        else:
            # on tente une recherche directe dans la liste de configs présentes
            lstConfigs = xgc.GetLstConfigs(dicConfig)
            lstConfigsOK = lstConfigs[1]
            lstNoms = [x['db_reseau']['ID'] for x in lstConfigsOK]
            if nomCompta in lstNoms:
                ix = lstNoms.index(nomCompta)
                IDconfig = lstConfigsOK[ix]['db_reseau']['ID']
                cfgCompta = xgc.GetDdConfig(dicConfig, IDconfig)['db_reseau']
        if not cfgCompta:
            wx.MessageBox(
                "Impossible de trouver la configuration correspondant à %s" %
                nomCompta)
        return cfgCompta
コード例 #10
0
    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)
コード例 #11
0
    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()