/usr/share/pyshared/Traducteur/calcG.py is in eficas 6.4.0-1-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | # -*- coding: utf-8 -*-
from parseur import FactNode
from dictErreurs import jdcSet
import logging
dict_commande={}
dict_contexte={}
dict_contexte_option={}
import sys
#--------------------------------------------------------------------------
def traitementRayon(jdc):
#--------------------------------------------------------------------------
if "DEFI_FONCTION" not in jdcSet : return
for c in jdc.root.childNodes:
if c.name != "DEFI_FONCTION" : continue
monTexte=jdc.getLines()[c.lineno-1]
monNomVariable=monTexte.split("=")[0]
aExecuter=monNomVariable+'=0'
dict_commande[monNomVariable]=c
exec aExecuter in dict_contexte
liste_MC=(("CALC_G","R_INF_FO"),("CALC_G","R_SUP_FO"),("CALC_G","MODULE_FO"))
liste_achanger = chercheValeurSelonGenea2 (jdc,liste_MC)
liste_MC=(("CALC_THETA","THETA_3D","R_INF_FO"),("CALC_THETA","THETA_3D","R_SUP_FO"),("CALC_THETA","THETA_3D","MODULE_FO"))
liste_achanger2 = chercheValeurSelonGenea3 (jdc,liste_MC)
liste_achanger=liste_achanger+liste_achanger2
for item in liste_achanger :
commande=dict_commande[item]
changeValeurABSCNiveau1(commande,jdc)
#----------------------------------
def changeValeurABSCNiveau1(c,jdc):
#----------------------------------
for child in c.childNodes:
if child.name != "NOM_PARA":continue
MonTexte=child.getText(jdc)
if len(MonTexte.splitlines()) > 1 :
print "Le Traducteur ne sait pas gerer"
assert(0)
MonTexte=jdc.getLines()[child.lineno-1]
debut=MonTexte.find("NOM_PARA")
debChaine=MonTexte[0:debut+8]
ancien=MonTexte[debut+8:]
egal,nomval,fin=ancien.split("'",2)
nouvelleLigne=debChaine+egal+"'ABSC'"+fin
jdc.getLines()[child.lineno-1]=nouvelleLigne
logging.info("renommage parametre ABSC ligne %d",child.lineno-1)
return
#--------------------------------------------------------------------------
def chercheValeurSelonGenea2(jdc,liste_cherche_valeur):
#
#--------------------------------------------------------------------------
liste_valeurs=[]
for genea in liste_cherche_valeur:
profondeur=len(genea)
if profondeur > 2 :
print "la methode chercheValeurSelonGenea ne convient"
print "pas pour cette généalogie"
assert(0)
command=genea[0]
fact=genea[1]
for c in jdc.root.childNodes:
if c.name != command:continue
for mc in c.childNodes:
if mc.name != fact:continue
MonTexte=mc.getText(jdc)
try :
#if ( 1) :
exec MonTexte in dict_contexte
monNomVar=MonTexte.split("=")[1]
monNomVarOk=monNomVar
i=-1
while (monNomVar[i] == "," or monNomVar[i] == " ") :
monNomVarOk=monNomVar[0:i]
i=i-1
monNomVar=monNomVarOk
i=0
while (monNomVar[i] == " ") :
monNomVarOk=monNomVar[1:]
i=i+1
monNomVar=monNomVarOk
if monNomVar not in liste_valeurs : liste_valeurs.append(monNomVar)
except :
#else :
logging.error("Pb pour renommer le parametre ABSC dans defi_fonctions selon calcg")
pass
return liste_valeurs
#--------------------------------------------------------------------------
def chercheValeurSelonGenea3(jdc,liste_cherche_valeur):
#--------------------------------------------------------------------------
liste_valeurs=[]
for genea in liste_cherche_valeur:
profondeur=len(genea)
if profondeur > 3 :
print "la methode chercheValeurSelonGenea ne convient"
print "pas pour cette généalogie"
assert(0)
command=genea[0]
fact=genea[1]
mc=genea[2]
for c in jdc.root.childNodes:
if c.name != command : continue
for mcf in c.childNodes:
if mcf.name != fact : continue
l=mcf.childNodes[:]
for ll in l:
for lc in ll.childNodes:
if lc.name !=mc : continue
MonTexte=lc.getText(jdc)
try :
#if ( 1) :
exec MonTexte in dict_contexte
#monNomVar=MonTexte.split("=")[1][0:-1]
monNomVar=MonTexte.split("=")[1]
monNomVarOk=monNomVar
i=-1
while (monNomVar[i] == "," or monNomVar[i] == " ") :
monNomVarOk=monNomVar[0:i]
i=i-1
monNomVar=monNomVarOk
i=0
while (monNomVar[i] == " ") :
monNomVarOk=monNomVar[1:]
i=i+1
monNomVar=monNomVarOk
if monNomVar not in liste_valeurs : liste_valeurs.append(monNomVar)
except :
#else :
logging.error("Pb pour renommer le parametre ABSC dans defi_fonctions selon calcg")
pass
return liste_valeurs
|