Salome HOME
Update copyrights
[modules/smesh.git] / src / Tools / Verima / CreeDocuments / jobHtml.py
1 #!/usr/bin/env python3
2 # Copyright (C) 2013-2019  CEA/DEN, EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 import string
22 import os
23
24 adir=os.path.dirname(os.path.abspath(__file__))
25 FichierEntete=os.path.join(adir,'templatesHtml/entete.html')
26 FichierMaillageEntete=os.path.join(adir,'templatesHtml/maillageEntete.html')
27 FichierJob=os.path.join(adir,'templatesHtml/job.html')
28 FichierTableau=os.path.join(adir,'templatesHtml/tableau.html')
29 FichierLigne=os.path.join(adir,'templatesHtml/ligne.html')
30 FichierFinTableau=os.path.join(adir,'templatesHtml/tableauFin.html')
31 FichierSansGroupe=os.path.join(adir,'templatesHtml/sansGroupe.html')
32 FichierGroupeRatio=os.path.join(adir,'templatesHtml/groupeRatio.html')
33 FichierGroupeTaille=os.path.join(adir,'templatesHtml/groupeTaille.html')
34
35
36 def compte_all(texte, subString):
37     start = 0
38     compte=0
39     while True:
40         trouve = texte.find(subString, start)
41         if trouve == -1: return compte
42         compte+=1
43         start = trouve + len(subString)
44
45 def FormateTexte(texte,dico):
46     for clef in dico:
47         texteARemplacer="%"+str(clef)+"%"
48         remplacement=dico[clef]
49         if texte.find(texteARemplacer) < 0 :
50            print("impossible de remplacer ",texteARemplacer, "Pas d'occurence")
51            print(remplacement)
52            continue
53         if compte_all(texte,texteARemplacer) != 1 :
54            print("impossible de remplacer ",texteARemplacer, "trop d'occurences")
55            continue
56         remplacement=str(remplacement)
57         texte=texte.replace(texteARemplacer,remplacement)
58     return texte
59
60 def FormateLigne(texte,nb):
61     texteARemplacer="2%"
62     remplacement=str(nb)+"%"
63     texte=texte.replace(texteARemplacer,remplacement)
64     return texte
65
66 def CreeEntete(dico):
67     texteIni=open(FichierEntete, 'r', encoding='utf8').read()
68     texteRetour=FormateTexte(texteIni,dico)
69     return texteRetour
70
71 def CreeMaillage(dico):
72     texteIni=open(FichierMaillageEntete, 'r', encoding='utf8').read()
73     texteRetour=FormateTexte(texteIni,dico)
74     return texteRetour
75
76 def CreeJob(dico):
77     texte=open(FichierJob, 'r', encoding='utf8').read()
78     texteRetour=FormateTexte(texte,dico)
79     return texteRetour
80
81 def CreeGroupeTaille(dico):
82     texte=open(FichierGroupeTaille, 'r', encoding='utf8').read()
83     texteRetour=FormateTexte(texte,dico)
84     return texteRetour
85
86 def CreeGroupeRatio(dico):
87     texte=open(FichierGroupeRatio, 'r', encoding='utf8').read()
88     texteRetour=FormateTexte(texte,dico)
89     return texteRetour
90
91
92 def CreeMailleOuGroupe(dico,nb):
93     texteIni=open(FichierTableau, 'r', encoding='utf8').read()
94     texteLigneIni=open(FichierLigne).read()
95     for i in range (2,nb+1) :
96         texteLigne=FormateLigne(texteLigneIni,i)
97         texteIni=texteIni+texteLigne
98
99     texteRetour=FormateTexte(texteIni,dico)
100
101     finTexte=open(FichierFinTableau, 'r', encoding='utf8').read()
102     texteFinal=texteRetour+finTexte
103
104     return texteFinal
105
106
107 def EcritFichier(texte,filename):
108     with open(filename,'w',encoding='utf8') as fp:
109         fp.write(texte)
110     
111
112 class Document:
113
114     def __init__(self):
115       self.monTexte=""
116       self.dicoEntete={}
117
118     def creeDocument(self,monFichier):
119       EcritFichier(self.monTexte,monFichier)
120
121     def initEntete(self,version, machine):
122       self.dicoEntete["VERSIONTEST"]=version
123       self.dicoEntete["MACHINE"]=machine
124       self.monTexte=CreeEntete(self.dicoEntete)
125
126     def initMaillage(self,maillageName,mailleurName,versionRefName,dicoMaillage):
127       dicoMaillage["MAILLEUR"]=mailleurName
128       dicoMaillage["MAILLAGE"]=maillageName
129       dicoMaillage["VERSIONREF"]=versionRefName
130       texteMaillageEntete=CreeMaillage(dicoMaillage)
131       self.monTexte+=texteMaillageEntete
132
133     def initJob(self,dicoJob):
134       texteMailleur=CreeJob(dicoJob)
135       self.monTexte+=texteMailleur
136
137     def initMaille(self,dicoMaille,nbEntity):
138       texteMaille=CreeMailleOuGroupe(dicoMaille,nbEntity)
139       self.monTexte+=texteMaille
140
141     def addNoGroup(self):
142       texteNoGroupe=open(FichierSansGroupe).read()
143       self.monTexte+=texteNoGroupe
144
145     def CreeGroupeTaille(self,dico):
146       texteGroupeTaille=CreeGroupeTaille(dico)
147       self.monTexte+=texteGroupeTaille
148
149     def CreeGroupeRatios(self,dico):
150       texteGroupeRatio=CreeGroupeRatio(dico)
151       self.monTexte+=texteGroupeRatio
152
153 #