コード例 #1
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Les types de qualifications"), u"")
        texteIntro = _(
            u"Vous pouvez ici ajouter, modifier ou supprimer des types de qualifications. Exemples : 'B.A.F.A', 'A.F.P.S.', etc... N'oubliez pas de\ncréer ensuite créer le type de pièces correspondants."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.listCtrl_TypesDiplomes = ListCtrlTypesDiplomes(self)
        self.listCtrl_TypesDiplomes.SetMinSize((20, 20))

        self.bouton_ajouter = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"),
                      wx.BITMAP_TYPE_ANY))

        self.__set_properties()
        self.__do_layout()
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
コード例 #2
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(self,
                                                    _(u"Les types de pièces"),
                                                    u"")
        texteIntro = _(
            u"Vous pouvez ici ajouter, modifier ou supprimer des types de pièces. Ce sont les documents que les employés doivent vous communiquer.\nCelles-ci peuvent être obligatoire pour tous (Exemple : 'Certificat médical'...) ou être obligatoire en fonction du diplôme détenu par la\npersonne (Exemple, si une personne a le diplôme 'A.F.P.S.', elle devra donner la pièce 'Diplôme A.F.P.S.'). Vous devez préciser une durée\nde validité par défaut pour chaque pièce."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.listCtrl_TypesPieces = ListCtrlTypesPieces(self)
        self.listCtrl_TypesPieces.SetMinSize((20, 20))

        self.bouton_ajouter = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"),
                      wx.BITMAP_TYPE_ANY))

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
コード例 #3
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Configuration de la liste"), u"")
        texteIntro = _(
            u"Vous pouvez ici modifier les options d'affichage de la liste :")
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)
        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20))
        self.bouton_haut = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Fleche_haut.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_bas = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Fleche_bas.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_reinit = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Actualiser.png"),
                      wx.BITMAP_TYPE_ANY))

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonReinit, self.bouton_reinit)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonHaut, self.bouton_haut)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonBas, self.bouton_bas)

        self.bouton_haut.Enable(False)
        self.bouton_bas.Enable(False)
コード例 #4
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL, name="panel_config_pays")
        
        self.barreTitre = FonctionsPerso.BarreTitre(self,  _(u"Les pays et nationalités"), u"")
        texteIntro = _(u"Vous pouvez ici ajouter, modifier ou supprimer des pays et les nationalités correspondantes :")
        self.label_introduction = FonctionsPerso.StaticWrapText(self, -1, texteIntro)
        
        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20)) 
        
        self.bouton_ajouter = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"), wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration" :
            self.bouton_aide.Show(False)


        self.__set_properties()
        self.__do_layout()
        
        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        
        self.bouton_modifier.Enable(False)
        self.bouton_supprimer.Enable(False)
コード例 #5
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL, name="config_typeContrat")
        
        self.barreTitre = FonctionsPerso.BarreTitre(self, _(u"Les types de contrats"), u"")
        texteIntro = _(u"Vous pouvez ici créer, modifier ou supprimer les types de contrats qui sont utilisés dans la création des\ncontrats. Exemples : 'Contrat à Durée Déterminée' ou 'Contrat à Durée Indéterminée', etc...")
        self.label_introduction = FonctionsPerso.StaticWrapText(self, -1, texteIntro)
        
        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20)) 
        
        self.bouton_ajouter = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"), wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"), wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration" :
            self.bouton_aide.Show(False)

        self.__set_properties()
        self.__do_layout()
        
        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        
        self.bouton_modifier.Enable(False)
        self.bouton_supprimer.Enable(False)
コード例 #6
0
    def MaJ_header(self):
        # MàJ de l'affichage de ID :
        if self.IDpersonne == 0:
            ID = "Attribution de l'ID en cours"
        else:
            ID = self.IDpersonne
        # MàJ de l'affichage du contrat en cours :
        if self.contratEnCours == None:
            txtContrat = _(u"Aucun contrat en cours")
        else:
            date_debut = FonctionsPerso.DateEngFr(self.contratEnCours[1])
            if self.contratEnCours[2] == "2999-01-01":
                txtContrat = _(u"Contrat en cours : ") + self.contratEnCours[
                    0] + " depuis le " + date_debut + _(u" (Durée ind.)")
            else:
                date_fin = FonctionsPerso.DateEngFr(self.contratEnCours[2])
                date_rupture = FonctionsPerso.DateEngFr(self.contratEnCours[3])
                if date_rupture != "//": date_fin = date_rupture
                txtContrat = _(u"Contrat en cours : ") + self.contratEnCours[
                    0] + " du " + date_debut + " au " + date_fin

        # Affichage
        self.label_hd_CatId.SetLabel(txtContrat + " | ID : " + str(ID))
        try:
            self.sizer_header_textes.Layout()
        except:
            pass
コード例 #7
0
    def __init__(self,
                 dictValeurs={},
                 dictOptions={},
                 IDmodele=None,
                 ouverture=True,
                 nomFichier=None):
        """ Impression """
        global DICT_VALEURS, DICT_OPTIONS
        DICT_VALEURS = dictValeurs
        DICT_OPTIONS = dictOptions

        # Initialisation du document
        if nomFichier == None:
            nomDoc = FonctionsPerso.GenerationNomDoc("LOCATIONS", "pdf")
        else:
            nomDoc = nomFichier
        doc = BaseDocTemplate(nomDoc, pagesize=TAILLE_PAGE, showBoundary=False)

        # Mémorise le ID du modèle
        modeleDoc = DLG_Noedoc.ModeleDoc(IDmodele=IDmodele)
        doc.modeleDoc = modeleDoc

        # Importe le template de la première page
        doc.addPageTemplates(MyPageTemplate(pageSize=TAILLE_PAGE, doc=doc))

        story = []
        styleSheet = getSampleStyleSheet()
        h3 = styleSheet['Heading3']
        styleTexte = styleSheet['BodyText']
        styleTexte.fontName = "Helvetica"
        styleTexte.fontSize = 9
        styleTexte.borderPadding = 9
        styleTexte.leading = 12

        # ----------- Insertion du contenu des frames --------------
        listeLabels = []
        for IDlocation, dictValeur in dictValeurs.iteritems():
            listeLabels.append((dictValeur["{FAMILLE_NOM}"], IDlocation))
        listeLabels.sort()

        for labelDoc, IDlocation in listeLabels:
            dictValeur = dictValeurs[IDlocation]
            if dictValeur["select"] == True:

                story.append(DocAssign("IDlocation", IDlocation))
                nomSansCivilite = dictValeur["{FAMILLE_NOM}"]
                story.append(Bookmark(nomSansCivilite, str(IDlocation)))

                # Saut de page
                story.append(PageBreak())

        # Finalisation du PDF
        doc.build(story)

        # Ouverture du PDF
        if ouverture == True:
            FonctionsPerso.LanceFichierExterne(nomDoc)
コード例 #8
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self,
                          parent,
                          ID,
                          name="panel_config_password",
                          style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Protection par mot de passe"), u"")
        texteIntro = _(
            u"Vous pouvez protéger l'accès à ce fichier par un mot de passe. L'utilisateur de ce fichier devra\nainsi saisir le mot de passe à son ouverture. Cochez la case et saisissez le mot de passe souhaité\nà deux reprises. Pour désactiver la protection, il vous suffit de décocher cette case."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.staticbox = wx.StaticBox(self, -1, _(u"Protection"))
        self.checkBox = wx.CheckBox(
            self, -1, _(u"Activer la protection par mot de passe"))
        self.MAJ_checkBox()

        self.bouton_aide = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_aide.SetToolTip(
            wx.ToolTip(_(u"Cliquez ici pour obtenir de l'aide")))
        if parent.GetName() != "treebook_configuration":
            self.bouton_aide.Show(False)

        self.Bind(wx.EVT_CHECKBOX, self.OnCheck, self.checkBox)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        # Layout
        grid_sizer_principal = wx.FlexGridSizer(rows=5, cols=1, vgap=0, hgap=0)
        grid_sizer_principal.Add(self.barreTitre, 1, wx.EXPAND, 0)
        grid_sizer_principal.Add(self.label_introduction, 1,
                                 wx.ALL | wx.EXPAND, 10)

        staticbox = wx.StaticBoxSizer(self.staticbox, wx.VERTICAL)
        staticbox.Add(self.checkBox, 1, wx.EXPAND | wx.ALL, 10)
        grid_sizer_principal.Add(staticbox, 1, wx.ALL | wx.EXPAND, 10)
        grid_sizer_principal.Add((20, 20), 0, wx.ALL | wx.EXPAND, 10)

        grid_sizer_boutons = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=10)
        grid_sizer_boutons.Add((5, 5), 0, 0, 0)
        grid_sizer_boutons.Add(self.bouton_aide, 0, 0, 0)
        grid_sizer_boutons.AddGrowableCol(0)
        grid_sizer_principal.Add(grid_sizer_boutons, 1, wx.EXPAND | wx.ALL, 10)

        grid_sizer_principal.AddGrowableRow(3)
        grid_sizer_principal.AddGrowableCol(0)
        self.SetSizer(grid_sizer_principal)
        grid_sizer_principal.Fit(self)
コード例 #9
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self,
                          parent,
                          ID,
                          style=wx.TAB_TRAVERSAL,
                          name="config_adresses_mail")

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Les adresses d'expéditeur"), u"")
        texteIntro = _(
            u"Vous pouvez ici créer, modifier ou supprimer les adresses mail d'expéditeur qui sont\nnécessaires à l'envoi de mails."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20))

        self.bouton_ajouter = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_defaut = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ok.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"),
                      wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration":
            self.bouton_aide.Show(False)

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonDefaut, self.bouton_defaut)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        self.bouton_modifier.Enable(False)
        self.bouton_supprimer.Enable(False)
コード例 #10
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self, parent, ID, style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(self,
                                                    _(u"Gestion des gadgets"),
                                                    u"")
        texteIntro = _(
            u"Vous pouvez ici modifier les options des gadgets de la page d'accueil."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)
        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20))
        self.bouton_options = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Outils.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_reinit = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Actualiser.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_haut = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Fleche_haut.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_bas = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Fleche_bas.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"),
                      wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration":
            self.bouton_aide.Show(False)

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOptions, self.bouton_options)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonReinit, self.bouton_reinit)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonHaut, self.bouton_haut)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonBas, self.bouton_bas)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        self.bouton_options.Enable(False)
        self.bouton_haut.Enable(False)
        self.bouton_bas.Enable(False)
コード例 #11
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self,
                          parent,
                          ID,
                          name="panel_config_Modeles_Contrats",
                          style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Les modèles de contrats"), u"")
        texteIntro = _(
            u"Vous pouvez ici créer, modifier ou supprimer les modèles de contrats. Ceux-ci sont bien utiles quand vous avez besoin de créer\nsouvent les mêmes types de contrat."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20))

        self.bouton_ajouter = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"),
                      wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration":
            self.bouton_aide.Show(False)

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        self.bouton_modifier.Enable(False)
        self.bouton_supprimer.Enable(False)
コード例 #12
0
    def __init__(self, parent, ID=-1):
        wx.Panel.__init__(self,
                          parent,
                          ID,
                          name="panel_config_champsContrats",
                          style=wx.TAB_TRAVERSAL)

        self.barreTitre = FonctionsPerso.BarreTitre(
            self, _(u"Les champs de contrats"), u"")
        texteIntro = _(
            u"Vous pouvez ici créer, modifier ou supprimer les champs personnalisés qui sont utilisés dans la création des contrats.\nIls vous permettent de personnaliser librement vos contrats en fonction de vos besoins."
        )
        self.label_introduction = FonctionsPerso.StaticWrapText(
            self, -1, texteIntro)

        self.listCtrl = ListCtrl(self)
        self.listCtrl.SetMinSize((20, 20))

        self.bouton_ajouter = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ajouter.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_modifier = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Modifier.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer.png"),
                      wx.BITMAP_TYPE_ANY))
        self.bouton_aide = wx.BitmapButton(
            self, -1,
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Aide.png"),
                      wx.BITMAP_TYPE_ANY))
        if parent.GetName() != "treebook_configuration":
            self.bouton_aide.Show(False)

        self.__set_properties()
        self.__do_layout()

        # Binds
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAjouter, self.bouton_ajouter)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModifier, self.bouton_modifier)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonSupprimer, self.bouton_supprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        self.bouton_modifier.Enable(False)
        self.bouton_supprimer.Enable(False)
コード例 #13
0
    def MAJ(self):
        """ MAJ du bouton Analyser """
        # Lecture des fichiers du répertoire SYNC
        IDfichier = FonctionsPerso.GetIDfichier()
        listeFichiers = os.listdir(UTILS_Fichiers.GetRepSync())
        nbreFichiers = 0
        for nomFichier in listeFichiers:
            if nomFichier.startswith(
                    "actions_%s" % IDfichier) and nomFichier.endswith(".dat"):
                nbreFichiers += 1

        # MAJ du bouton Analyser
        if nbreFichiers == 0:
            self.bouton_analyse.SetToolTipString(
                _(u"Aucun fichier à importer"))
            self.bouton_analyse.SetBackgroundColour(self.couleur_defaut)
            self.bouton_analyse.Enable(False)
        elif nbreFichiers == 1:
            self.bouton_analyse.SetToolTipString(_(u"1 fichier à importer"))
            self.bouton_analyse.SetBackgroundColour((150, 255, 150))
            self.bouton_analyse.Enable(True)
        else:
            self.bouton_analyse.SetToolTipString(
                _(u"%d fichiers à importer") % nbreFichiers)
            self.bouton_analyse.SetBackgroundColour((150, 255, 150))
            self.bouton_analyse.Enable(True)
コード例 #14
0
    def VisualiserPage(self, event=None):
        index = self.GetSelection()
        if index == -1:
            dlg = wx.MessageDialog(
                self, _(u"Vous devez d'abord sélectionner un document !"),
                _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        thumb = self.GetItem(index)
        track = thumb.track

        if track.isImage == True:
            # Ouvrir Editeur Photo
            from Dlg import DLG_Visualiseur_image
            dlg = DLG_Visualiseur_image.MyFrame(None, imgPIL=track.image)
            dlg.Show(True)
        else:
            # Création du doc dans le répertoire Temp et ouverture
            nomFichier = UTILS_Fichiers.GetRepTemp(fichier="document.%s" %
                                                   track.type)
            buffer = track.buffer
            file = open(nomFichier, "wb")
            file.write(buffer)
            file.close()
            FonctionsPerso.LanceFichierExterne(nomFichier)
コード例 #15
0
 def OuvrirPiece(self, event):
     if len(self.Selection()) == 0:
         dlg = wx.MessageDialog(
             self,
             _(u"Vous devez d'abord sélectionner un destinataire à ouvrir dans la liste !"
               ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     track = self.Selection()[0]
     if track.pieces == []:
         dlg = wx.MessageDialog(self,
                                _(u"Il n'y a aucune pièce à ouvrir !"),
                                _(u"Erreur de saisie"),
                                wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     # Demande le fichier à ouvrir
     if len(track.pieces) > 1:
         dlg = wx.SingleChoiceDialog(
             self,
             _(u"Sélectionnez la pièce jointe personnelle à ouvrir :"),
             _(u"Ouvrir une pièce jointe personnelle"), track.pieces,
             wx.CHOICEDLG_STYLE)
         if dlg.ShowModal() == wx.ID_OK:
             fichier = track.pieces[dlg.GetSelection()]
             dlg.Destroy()
         else:
             dlg.Destroy()
             return
     else:
         fichier = track.pieces[0]
     # Ouverture du fichier
     FonctionsPerso.LanceFichierExterne(fichier)
コード例 #16
0
def A8574():
    """ Mise à niveau de la base de données """
    import FonctionsPerso
    versionApplication = FonctionsPerso.GetVersionLogiciel()
    dlg = wx.TextEntryDialog(None, _(u"Saisissez le numéro de version à partir duquel vous souhaitez \neffectuer la mise à niveau ('x.x.x.x'):"), _(u"Mise à niveau de la base de données"), versionApplication)
    reponse = dlg.ShowModal() 
    version = dlg.GetValue()
    dlg.Destroy()
    if reponse != wx.ID_OK:
        return
    
    valide = True
    try :
        version = tuple([int(x) for x in version.split(".")])
    except :
        valide = False
    if len(version) != 4 :
        valide = False
    
    if valide == False :
        dlg = wx.MessageDialog(None, _(u"Impossible d'effectuer la procédure !\n\nLe numéro de version que vous avez saisi semble erroné. Vérifiez qu'il est formaté de la façon suivante : 'x.x.x.x'"), _(u"Erreur"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return False
    
    print "Procedure manuelle de mise a niveau de la base de donnee depuis la version : ", version
    DB = GestionDB.DB()        
    resultat = DB.ConversionDB(version)
    DB.Close()
    print resultat
コード例 #17
0
ファイル: UTILS_Envoi_email.py プロジェクト: neoclust/Noethys
 def AttacheFichiersJoints(self, email=None):
     for fichier in self.fichiers:
         """Guess the content type based on the file's extension. Encoding
         will be ignored, altough we should check for simple things like
         gzip'd or compressed files."""
         ctype, encoding = mimetypes.guess_type(fichier)
         if ctype is None or encoding is not None:
             # No guess could be made, or the file is encoded (compresses), so
             # use a generic bag-of-bits type.
             ctype = 'application/octet-stream'
         maintype, subtype = ctype.split('/', 1)
         if maintype == 'text':
             fp = open(fichier)
             # Note : we should handle calculating the charset
             part = MIMEText(fp.read(), _subtype=subtype)
             fp.close()
         elif maintype == 'image':
             fp = open(fichier, 'rb')
             part = MIMEImage(fp.read(), _subtype=subtype)
             fp.close()
         else:
             fp = open(fichier, 'rb')
             part = MIMEBase(maintype, subtype)
             part.set_payload(fp.read())
             fp.close()
             # Encode the payload using Base64
             encoders.encode_base64(part)
         # Set the filename parameter
         nomFichier = os.path.basename(fichier)
         if type(nomFichier) == six.text_type:
             nomFichier = FonctionsPerso.Supprime_accent(nomFichier)
         # changement cosmetique pour ajouter les guillements autour du filename
         part.add_header('Content-Disposition',
                         "attachment; filename=\"%s\"" % nomFichier)
         email.attach(part)
コード例 #18
0
ファイル: OL_personnes.py プロジェクト: allouchmed/Teamworks
    def Menu_Mail(self, event):
        adresse = self.adresseMail

        # Depuis l'éditeur d'Emails de Noethys
        if event.GetId() == 80:
            from Dlg import DLG_Mailer
            dlg = DLG_Mailer.Dialog(self)
            listeDonnees = [
                {
                    "adresse": adresse,
                    "pieces": [],
                    "champs": {},
                },
            ]
            dlg.SetDonnees(listeDonnees, modificationAutorisee=False)
            dlg.ShowModal()
            dlg.Destroy()

        # Depuis le client de messagerie par défaut
        if event.GetId() == 81:
            FonctionsPerso.EnvoyerMail(adresses=[
                adresse,
            ],
                                       sujet="",
                                       message="")
コード例 #19
0
 def __init__(self, parent, IDpersonne=None):
     wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
     self.IDpersonne = IDpersonne
     
     # Choix décoration
     self.label_decoration = wx.StaticText(self, -1, _(u"Cadre de décoration :"), style=wx.ALIGN_RIGHT)
     listeCadres = FonctionsPerso.GetListeCadresPhotos()
     self.combobox_decoration = wx.Choice(self, -1, choices=listeCadres)
     
     # Recherche du cadre de décoration attribué à la personne
     cadrePhoto, textePhoto = CTRL_Photo.GetCadreEtTexte(self.IDpersonne)
     if cadrePhoto != None and cadrePhoto != "" :
         self.combobox_decoration.SetStringSelection(cadrePhoto)
     else:
         self.combobox_decoration.SetSelection(0)
     
     # Saisie du texte personnalisé
     self.label_texte_perso = wx.StaticText(self, -1, _(u"Texte personnalisé :"), style=wx.ALIGN_RIGHT)
     self.texte_perso = wx.TextCtrl(self, -1, textePhoto)
     
     # Layout
     grid_sizer_base = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=10)
     grid_sizer_base.Add(self.label_decoration, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 0)
     grid_sizer_base.Add(self.combobox_decoration, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 0)
     grid_sizer_base.Add(self.label_texte_perso, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 0)
     grid_sizer_base.Add(self.texte_perso, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 0)
     grid_sizer_base.AddGrowableCol(3)
     self.SetSizer(grid_sizer_base)
     self.Layout()
     
     # Binds
     self.Bind(wx.EVT_CHOICE, self.OnChoixDecoration, self.combobox_decoration)
     self.Bind(wx.EVT_TEXT, self.OnTextePerso, self.texte_perso)
コード例 #20
0
 def OnBoutonImprimer(self, event):
     try:
         FonctionsPerso.LanceFichierExterne(Chemins.GetStaticPath("Images/Special/Bon_commande_documentation.pdf"))
     except:
         dlg = wx.MessageDialog(None, _(u"Noethys ne peut pas ouvrir le PDF !\n\nVeuillez vérifier qu'un autre PDF n'est pas déjà ouvert en arrière-plan..."),_(u"Erreur"), wx.OK | wx.ICON_ERROR)
         dlg.ShowModal()
         dlg.Destroy()
コード例 #21
0
    def Importation_valPoint(self):
        controle = self.choice_valpoint
        selection = controle.GetSelection()
        IDselection = None
        if selection != -1: IDselection = controle.GetClientData(selection)
        # Récupération des données
        DB = GestionDB.DB()
        req = """SELECT * FROM valeurs_point ORDER BY date_debut """
        DB.ExecuterReq(req)
        liste = DB.ResultatReq()
        DB.Close()

        # Recherche de la valeur actuelle
        dateJour = str(datetime.date.today())
        valeurActuelle = None
        for ID, valeur, dateDebut in liste:
            if dateJour >= dateDebut:
                valeurActuelle = ID

        # Placement de la liste dans le Choice
        controle.Clear()
        x = 0
        for ID, valeur, dateDebut in liste:
            txt = str(valeur) + _(u" ¤  (à partir du "
                                  ) + FonctionsPerso.DateEngFr(dateDebut) + ")"
            controle.Append(txt, ID)
            # Sélection de l'ancienne valeur sélectionnée
            if IDselection == ID: controle.SetSelection(x)
            # Sélection de la valeur actuelle si rien n'a été sélectionnée
            if IDselection == None and valeurActuelle == ID:
                controle.SetSelection(x)
            x += 1

        self.listeValPoint = liste
コード例 #22
0
    def On_outils_purger_ftp(self, event):
        """ Supprime tous les fichiers du répertoire FTP """
        hote = UTILS_Config.GetParametre("synchro_ftp_hote", defaut="")
        identifiant = UTILS_Config.GetParametre("synchro_ftp_identifiant",
                                                defaut="")
        mdp = base64.b64decode(
            UTILS_Config.GetParametre("synchro_ftp_mdp", defaut=""))
        repertoire = UTILS_Config.GetParametre("synchro_ftp_repertoire",
                                               defaut="")
        IDfichier = FonctionsPerso.GetIDfichier()

        nbreFichiersSupprimes = 0
        try:
            ftp = ftplib.FTP(hote, identifiant, mdp)
            ftp.cwd(repertoire)
            # Récupère la liste des fichiers de synchronisation présents sur le répertoire FTP
            for nomFichier in ftp.nlst():
                if IDfichier in nomFichier and (
                        nomFichier.endswith(
                            UTILS_Export_nomade.EXTENSION_CRYPTE)
                        or nomFichier.endswith(
                            UTILS_Export_nomade.EXTENSION_DECRYPTE)):
                    ftp.delete(nomFichier)
                    nbreFichiersSupprimes += 1
            ftp.quit()
        except Exception, err:
            print err
            dlg = wx.MessageDialog(
                self,
                _(u"La connexion FTP n'a pas pu être établie !\n\nVérifiez les paramètres de connexion FTP dans les paramètres de synchronisation."
                  ), "Erreur ", wx.OK | wx.ICON_ERROR)
            dlg.ShowModal()
            dlg.Destroy()
            return False
コード例 #23
0
    def MenuEnvoyerMail(self, event):
        """ Envoyer un Email """
        from Utils import UTILS_Envoi_email
        listeAdresses = UTILS_Envoi_email.GetAdresseFamille(self.IDfamille)
        if len(listeAdresses) == 0:
            return

        # Depuis l'éditeur d'Emails de Noethys
        if event.GetId() == 200:
            import DLG_Mailer
            dlg = DLG_Mailer.Dialog(self)
            listeDonnees = []
            for adresse in listeAdresses:
                listeDonnees.append({
                    "adresse": adresse,
                    "pieces": [],
                    "champs": {},
                })
            dlg.SetDonnees(listeDonnees, modificationAutorisee=False)
            dlg.ShowModal()
            dlg.Destroy()

        # Depuis le client de messagerie par défaut
        if event.GetId() == 210:
            FonctionsPerso.EnvoyerMail(adresses=listeAdresses,
                                       sujet="",
                                       message="")
コード例 #24
0
    def EnvoyerEmail(self, event):
        # Récupère l'adresse
        if event.GetId() in (801, 802) :
            ctrl = self.ctrl_travail_mail
        if event.GetId() in (901, 902) :
            ctrl = self.ctrl_mail
        adresse = ctrl.GetValue()
        valide, erreur = ctrl.Validation()

        # Vérifie l'adresse
        if adresse == "" or  valide == False :
            dlg = wx.MessageDialog(self, _(u"Vous devez d'abord saisir une adresse internet valide !"), "Information", wx.OK | wx.ICON_ERROR)
            dlg.ShowModal()
            dlg.Destroy()
            ctrl.SetFocus()
            return
        
        # Depuis l'éditeur d'Emails de Noethys
        if event.GetId() in (801, 901) :
            import DLG_Mailer
            dlg = DLG_Mailer.Dialog(self)
            listeDonnees = [{"adresse" : adresse, "pieces" : [], "champs" : {},},]
            dlg.SetDonnees(listeDonnees, modificationAutorisee=False)
            dlg.ShowModal() 
            dlg.Destroy()
        
        # Depuis le client de messagerie par défaut
        if event.GetId() in (802, 902) :
            FonctionsPerso.EnvoyerMail(adresses=[adresse,], sujet="", message="")
コード例 #25
0
    def Categorie_general(self):
        nomCategorie = _(u"Général")
        listeItems = []

        # Récupération du nom du fichier
        nomFichier = self.DB.GetNomFichierDefaut()
        if "[RESEAU]" in nomFichier:
            nomFichier = nomFichier[nomFichier.index("[RESEAU]"):]
        listeItems.append((_(u"Nom du fichier"), nomFichier))

        # Récupération des paramètres du fichier
        req = """SELECT IDparametre, nom, parametre 
        FROM parametres WHERE categorie='fichier'
        ;"""
        self.DB.ExecuterReq(req)
        listeTemp = self.DB.ResultatReq()
        dictInfos = {}
        for IDparametre, nom, parametre in listeTemp:
            dictInfos[nom] = parametre

        listeItems.append(
            (_(u"Date de création"),
             FonctionsPerso.DateEngFr(dictInfos["date_creation"])))
        listeItems.append((_(u"Version de fichier"), dictInfos["version"]))
        listeItems.append((_(u"IDfichier"), dictInfos["IDfichier"]))

        # Nbre de tables de données
        listeTables = self.DB.GetListeTables()
        listeItems.append(
            (_(u"Nombre de tables de données"), str(len(listeTables) + 2)))

        return nomCategorie, listeItems
コード例 #26
0
def setRepositoryBranch():
    global repositoryBranch
    noethysVersion = FonctionsPerso.GetVersionLogiciel()
    if getFromGithub("versions.json", noethysVersion) is None:
        repositoryBranch = "master"
    else:
        repositoryBranch = noethysVersion
コード例 #27
0
ファイル: OL_Factures.py プロジェクト: nicolas-pantel/Noethys
    def EnvoyerEmail(self, event):
        """ Envoyer la facture par Email """
        if len(self.Selection()) == 0:
            dlg = wx.MessageDialog(
                self,
                _(u"Vous n'avez sélectionné aucune facture à envoyer par Email !"
                  ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        track = self.Selection()[0]
        if track.etat == "annulation":
            dlg = wx.MessageDialog(
                self,
                _(u"Vous ne pouvez pas envoyer par Email une facture annulée !"
                  ), _(u"Information"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Envoi du mail
        from Utils import UTILS_Envoi_email
        UTILS_Envoi_email.EnvoiEmailFamille(
            parent=self,
            IDfamille=track.IDfamille,
            nomDoc=FonctionsPerso.GenerationNomDoc("FACTURE", "pdf"),
            categorie="facture")
コード例 #28
0
 def RecevoirFTP(self):
     """ Réception des fichiers FTP """
     # Récupération des paramètres
     hote = UTILS_Config.GetParametre("synchro_ftp_hote", defaut="")
     identifiant = UTILS_Config.GetParametre("synchro_ftp_identifiant", defaut="")
     mdp = base64.b64decode(UTILS_Config.GetParametre("synchro_ftp_mdp", defaut=""))
     repertoire = UTILS_Config.GetParametre("synchro_ftp_repertoire", defaut="")
     IDfichier = FonctionsPerso.GetIDfichier()
     
     # Récupération des fichiers
     listeFichiersRecus = []
     dlgAttente = wx.BusyInfo(_(u"Récupération des fichiers de synchronisation depuis un répertoire FTP..."), self)
     try :
         ftp = ftplib.FTP(hote, identifiant, mdp)
         ftp.cwd(repertoire)
         # Récupère la liste des fichiers de synchronisation présents sur le répertoire FTP
         for nomFichier in ftp.nlst() :
             if nomFichier.startswith("actions_%s" % IDfichier) and (nomFichier.endswith(UTILS_Export_nomade.EXTENSION_CRYPTE) or nomFichier.endswith(UTILS_Export_nomade.EXTENSION_DECRYPTE)) :
                 try :
                     tailleFichier = ftp.size(nomFichier)
                 except :
                     ftp.voidcmd('TYPE I')
                     tailleFichier = ftp.size(nomFichier)
                 ftp.retrbinary("RETR %s" % nomFichier, open(UTILS_Fichiers.GetRepSync(nomFichier), "wb").write)
                 listeFichiersRecus.append((nomFichier, tailleFichier))
         ftp.quit()
     except Exception, err :
         print err
         dlgAttente.Destroy() 
         del dlgAttente
         dlg = wx.MessageDialog(self, _(u"La connexion FTP n'a pas pu être établie !\n\nVérifiez les paramètres de connexion FTP dans les paramètres de synchronisation."), "Erreur ", wx.OK | wx.ICON_ERROR)
         dlg.ShowModal()
         dlg.Destroy()
         return False
コード例 #29
0
    def MAJ(self):
        """ MAJ du bouton Analyser """
        # Paramètres liste blanche et liste noire d'IP
        global IP_AUTORISEES, IP_INTERDITES
        IP_AUTORISEES = UTILS_Config.GetParametre(
            "synchro_serveur_ip_autorisees", defaut=None)
        IP_INTERDITES = UTILS_Config.GetParametre(
            "synchro_serveur_ip_interdites", defaut=None)

        # Lecture des fichiers du répertoire SYNC
        IDfichier = FonctionsPerso.GetIDfichier()
        listeFichiers = os.listdir(UTILS_Fichiers.GetRepSync())
        nbreFichiers = 0
        for nomFichier in listeFichiers:
            if nomFichier.startswith(
                    "actions_%s" % IDfichier) and nomFichier.endswith(".dat"):
                nbreFichiers += 1

        # MAJ du bouton Analyser
        if nbreFichiers == 0:
            self.bouton_analyse.SetToolTip(
                wx.ToolTip(_(u"Aucun fichier à importer")))
            self.bouton_analyse.SetBackgroundColour(self.couleur_defaut)
            self.bouton_analyse.Enable(False)
        elif nbreFichiers == 1:
            self.bouton_analyse.SetToolTip(
                wx.ToolTip(_(u"1 fichier à importer")))
            self.bouton_analyse.SetBackgroundColour((150, 255, 150))
            self.bouton_analyse.Enable(True)
        else:
            self.bouton_analyse.SetToolTip(
                wx.ToolTip(_(u"%d fichiers à importer") % nbreFichiers))
            self.bouton_analyse.SetBackgroundColour((150, 255, 150))
            self.bouton_analyse.Enable(True)
コード例 #30
0
 def ImportationCandidatures(self):
     """ Récupération des données """
     DB = GestionDB.DB()
     req = """
     SELECT candidatures.IDcontrat, cabdacontrats_class.nom, contrats_types.nom, date_debut, date_fin
     FROM candidatures 
     LEFT JOIN candidats ON candidats.IDcandidat = candidatures.IDcandidat
     LEFT JOIN contrats_class ON contrats_class.IDclassification = contrats.IDclassification 
     LEFT JOIN contrats_types ON contrats_types.IDtype = contrats.IDtype
     ORDER BY nomPersonne, date_debut
     """
     DB.ExecuterReq(req)
     listeDonnees = DB.ResultatReq()
     DB.Close()
     listeContrats = []
     dictGroupes = {}
     for IDcandidature, nomCandidat, classification, type, date_debut, date_fin in listeDonnees :
         texteContrat = _(u"%s %s du %s au %s") % (type, classification, FonctionsPerso.DateEngFr(date_debut), FonctionsPerso.DateEngFr(date_fin))
         if nomPersonne in dictGroupes :
             dictGroupes[nomPersonne].append( (IDcontrat, texteContrat) )
         else:
             dictGroupes[nomPersonne] = [ (IDcontrat, texteContrat), ]
     listeKeys = list(dictGroupes.keys())
     listeKeys.sort()
     for key in listeKeys:
         listeContrats.append( (key, dictGroupes[key]) )
     return listeContrats