parser.add_option(u"-c","--cata", action="store", type="string",dest="fichierCata",
help=tr("catalogue a utiliser"))
- parser.add_option(u"-o","--fichierXMLOut", action="store", type="string",dest="fichierXMLOut",
+ parser.add_option(u"-o","--fichierOut", action="store", type="string",dest="fichierOut",
help=tr("nom du fichier xml genere"))
parser.add_option(u"-v","--label", action="store", type="string",dest="labelCode",
options.comm=[]
if not hasattr(options,"fichierCata"): options.fichierCata=None
if not hasattr(options,"labelCode"): options.labelCode=None
- if not hasattr(options,"fichierXMLOut"): options.fichierXMLOut=None
+ if not hasattr(options,"fichierOut"): options.fichierOut=None
if options.withXSD :
try : import pyxb
except : print ('Please, source pyxb environment'); exit()
def ajouteAuxTextes(self,nomMC,indent,debug=False) :
- if nomMC == 'radial_meshing' : debug =True
+ #if nomMC == 'radial_meshing' : debug =True
if debug :
print ('______________________________________________________')
print ('ajouteAuxTextes', nomMC, self.nom)
# print (self.texteSimple)
# print ('______________')
- def fusionneDsUnChoix(self, nomMC,indent, debug=True):
+ def fusionneDsUnChoix(self, nomMC,indent, debug=False):
if debug : print ('______fusionneDsUnChoix ', self.nom, self, nomMC,indent)
if debug : print (self.texteComplexe)
texteDocUnion='\n'
if debug :
#print ('fusionneDesMatricesDeMemeType self.texteSimple avant', self.texteSimple)
print ('fusionneDesMatricesDeMemeType self.texteComplexe avant', self.texteComplexe)
+# if
self.texteSimple += debutSimpleType.format(elt.nomDuTypePyxb+'_element')
self.texteSimple += debutRestrictionBase.format(elt.nomDuTypeDeBase)
if typeDeMatrice.typEltInto != None:
#for nom in self.ordre_mc:
# mcFils = self.entites[nom]
if debug : print ('___________________ creeTexteComplexeVenantDesFils', self.nom)
- if self.nom == 'LeProc' : debug = True
for mcFils in self.mcXSD :
if debug : print (mcFils,mcFils.nom)
else : debug=False
def dumpSpecifiqueMatrice(self,minOccurs):
+ # ajouter le AccasAssd
# if faut traiter le defaut
typeDeMatrice =self.type[0]
# il faut ajouter les regles
# il faut gerer les types tuple et fichier
# on ne paut pas tester le type qui depend du cataloge
+ if self.nom == "assembly_list" : debug=True
if hasattr(self.type[0], 'typElt') :
+ if debug : print ( self.nom , 'est une matrice')
self.suisUneMatrice = True
- # on presume que le type de l elt est un ASSDi si il n est pas un type connu
- if self.type[0].typElt not in dictNomsDesTypes.keys(): return 'xs:string'
+ # on presume que le type de l elt est un ASSD si il n est pas un type connu
+ if self.type[0].typElt not in dictNomsDesTypes.keys(): return 'AccasAssd'
return dictNomsDesTypes[self.type[0].typElt]
else :
self.suisUneMatrice = False
if hasattr(self.type[0], 'ntuple') :
+ if debug : print ( self.nom , 'est un tuple')
self.suisUnTuple = True
# Pour l instant pas de into dans les tuples non homogenes et pas de reference
# sinon, il faudra faire un for sur la suite avec les createObjet
# a Reprendre
typeATraduire = self.validators.typeDesTuples[i]
if not (typeATraduire in list(dictNomsDesTypes.keys())) :
- enRetour.append('xs:string')
+ enRetour.append('AccasAssd')
else :
enRetour.append(dictNomsDesTypes[self.validators.typeDesTuples[i]])
return enRetour
typeATraduire=self.type[0]
if not (typeATraduire in list(dictNomsDesTypes.keys())) :
#if (isinstance(typeATraduire, Accas.ASSD) or issubclass(typeATraduire, Accas.ASSD)) :
+ if debug : print ( self.nom , 'n est pas un type de base')
if (not(isinstance(typeATraduire,str)) and issubclass(typeATraduire, Accas.ASSD)) :
+ if debug : print ( self.nom , 'est d un type sous classe de ASSD')
# cas d une creation
cata = CONTEXT.getCurrentCata()
# PNPNPN a Revoir pour la creation des keyrefs
else :
cata.dictTypesASSDorUserASSDCrees[typeATraduire.__name__].append(self)
if issubclass(typeATraduire, Accas.UserASSD) : return typeATraduire.__name__+'_C'
+ if issubclass(typeATraduire, Accas.ASSD) : return 'AccasAssd'
else : return 'xs:string'
# cas d une consommation
else :
cata.dictTypesASSDorUserASSDUtilises[typeATraduire].append(self,)
if issubclass(typeATraduire, Accas.UserASSD) : return typeATraduire.__name__+'_U'
+ if issubclass(typeATraduire, Accas.ASSD) : return 'AccasAssd'
else : return 'xs:string'
else : return ('YYYYY')
return dictNomsDesTypes[typeATraduire]
class X_JDC_CATA :
#-----------------
- def dumpXsd(self, avecEltAbstrait, debug = True):
+ def dumpXsd(self, avecEltAbstrait, avecSubstitution=True, debug = True):
cata = CONTEXT.getCurrentCata()
if debug : print ('avecEltAbstrait -------------------', avecEltAbstrait)
if debug : print ('self.importedBy -------------------', self.importedBy)
else :
self.texteXSD = texteDebut.format(self.code,self.code,self.code,self.code,self.code,self.code)
+
+ self.texteXSD += defBaseXSDASSD
self.texteXSD += self.texteSimple
self.texteXSD += self.texteComplexe
#print ('monUri', monUri)
#pyxb.utils.domutils.BindingDOMSupport.DeclareNamespace(ns1, monUri)
- ns1 = pyxb.namespace.Namespace("http://www.w3.org/2001/XMLSchema-instance")
+ ns1 = pyxb.namespace.NamespaceForURI("http://www.w3.org/2001/XMLSchema-instance",True)
pyxb.utils.domutils.BindingDOMSupport.DeclareNamespace(ns1, 'xsi')
texteXML = self.objPyxb.toDOM().toprettyxml()
if debug : print (texteXML)
if not hasattr(self.cata.modeleMetier,'AccasUserAssd'):
from Accas import UserASSD
self.cata.modeleMetier.AccasUserAssd=UserASSD
+ if not hasattr(self.cata.modeleMetier,'AccasUserAssdMultiple'):
+ from Accas import UserASSDMultiple
+ self.cata.modeleMetier.AccasUserAssdMultiple=UserASSDMultiple
for contentObjEtape in self.objPyxb.orderedContent():
objEtape=contentObjEtape.value
objEtape.dictArgs=(self.pyxbToDict(objEtape))
if debug : print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
- def pyxbToDict(self,objAAnalyser, debug=True):
+ def pyxbToDict(self,objAAnalyser, debug=False):
# la transformation de l objAAnalyser en type lu par eficas ne fonctionne pas pour tout
if objAAnalyser is None: return
- if debug : print ('debut pour_____________________________ ',objAAnalyser)
+ #if (objAAnalyser.__class__.__name__.find('BU_map')>0) : debug=True
+ #if (objAAnalyser.__class__.__name__.find('n1')>0) : debug=True
+ #if debug : print ('debut pour_____________________________ ',objAAnalyser, objAAnalyser.__class__.__name__)
dictArgs = {}
# traitement SIMP
# ---------------
# a revoir pour les matrices
# et les tuples
- debug = 1
if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition):
if debug : print ('je suis un MCSimple', objAAnalyser)
# traitement scalaire
objAAnalyser.dictPyxb=objAAnalyser
if not (isinstance(objAAnalyser,pyxb.binding.basis.STD_list)):
if debug : print ('je suis un scalaire')
+ #if (objAAnalyser.__class__.__name__.find('n1')>0) :
+ #if (isinstance(objAAnalyser,self.cata.modeleMetier.AccasTuple)): return objAAnalyser
if isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssd) or isinstance(objAAnalyser,self.cata.modeleMetier.AccasUserAssdMultiple):
- if debug : print ('je suis un UserASSD')
laClassePyxbUserAssd=type(objAAnalyser)
return self.creeUserAssd(objAAnalyser,laClassePyxbUserAssd)
+ if issubclass(objAAnalyser.__class__,self.cata.modeleMetier.AccasAssd): return (self.g_context[str(objAAnalyser)])
if isinstance(objAAnalyser, pyxb.binding.datatypes.boolean) : return bool(objAAnalyser)
if isinstance(objAAnalyser, str) : return str(objAAnalyser)
if isinstance(objAAnalyser, int) : return int(objAAnalyser)
else :
if debug : print ('je suis une liste')
laListe=[]
+
# liste homogene
- if len(objAAnalyser)>0:
- if issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssd) or issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssdMultiple): estUnUserASSDorUserASSDMultiple = True
- else : estUnUserASSDorUserASSDMultiple=False
- else : estUnUserASSDorUserASSDMultiple=False
- if debug : print ('estUnUserASSDorUserASSDMultiple', estUnUserASSDorUserASSDMultiple)
+ #if len(objAAnalyser)>0:
+ # if issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssd) or issubclass(objAAnalyser[0].__class__,self.cata.modeleMetier.AccasUserAssdMultiple): estUnUserASSDorUserASSDMultiple = True
+ # else : estUnUserASSDorUserASSDMultiple=False
+ # print (objAAnalyser[0].__class__,objAAnalyser, estUnUserASSDorUserASSDMultiple)
+ #else : estUnUserASSDorUserASSDMultiple=False
+ #if debug : print ('estUnUserASSDorUserASSDMultiple', estUnUserASSDorUserASSDMultiple)
+
for obj in objAAnalyser :
- if estUnUserASSDorUserASSDMultiple:
+ if issubclass(obj.__class__,self.cata.modeleMetier.AccasUserAssd) or issubclass(obj.__class__,self.cata.modeleMetier.AccasUserAssdMultiple):
laClassePyxbUserAssd=obj.__class__
laListe.append(self.creeUserAssd(obj,laClassePyxbUserAssd))
+ elif issubclass(obj.__class__,self.cata.modeleMetier.AccasAssd):
+ laListe.append(self.g_context[str(obj)])
elif isinstance(obj, str): laListe.append (str(obj))
elif isinstance(obj, int): laListe.append (int(obj))
elif isinstance(obj, float): laListe.append (float(obj))
# print ('ajout dans dictPyxb', objPyxbName, objPyxbValue.dictPyxb)
#print ('avec la valeur', 'de', objAAnalyser.dictPyxb[objPyxbName])
- #print ("***********************************")
- #print ('pyxbToDict fin pour ********** ', objAAnalyser)
- #print ('pyxbToDict ', objAAnalyser, objAAnalyser.dictPyxb)
- #print ('pyxbToDict fin pour ********** ', objAAnalyser)
- #print ("***********************************")
- #print (dictArgs)
- #print (dictPyxb)
- #for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i]))
- #print ('fin pour ',objAAnalyser)
+ if debug : print ("***********************************")
+ if debug : print ('pyxbToDict fin pour ********** ', objAAnalyser)
+ if debug : print ('pyxbToDict ', objAAnalyser, objAAnalyser.dictPyxb)
+ if debug : print ('pyxbToDict fin pour ********** ', objAAnalyser)
+ if debug : print ("***********************************")
+ # traitement des Matrices et des Tuples
+ # on change ce qu on retourne pour ne garder que la valeur de la matrice
+ if hasattr(objAAnalyser,'sdType') and objAAnalyser.sdType == 'Matrice': return dictArgs['line']
+ if hasattr(objAAnalyser,'sdType') and objAAnalyser.sdType == 'Tuple':
+ liste=[]
+ for (k,v) in dictArgs.items(): liste.append(v)
+ return liste
+ if debug : print ('fin pour ',objAAnalyser)
return dictArgs
- def creeUserAssd(self,objAAnalyser,laClassePyxbUserAssd,debug=True):
+ def creeUserAssd(self,objAAnalyser,laClassePyxbUserAssd,debug=False):
enCreation=False
if debug : print ('creeUserAssd ', objAAnalyser, ' ',laClassePyxbUserAssd)
texteDebutNiveau3='<?xml version="1.0" encoding="UTF-8"?>\n<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\nxmlns="http://chercheurs.edf.com/logiciels/{}"\nxmlns:{}="http://chercheurs.edf.com/logiciels/{}"\nxmlns:{}="http://chercheurs.edf.com/logiciels/{}"\nxmlns:{}="http://chercheurs.edf.com/logiciels/{}"\ntargetNamespace="http://chercheurs.edf.com/logiciels/{}"\nelementFormDefault="qualified" attributeFormDefault="unqualified" version="0">\n'
texteFin='</xs:schema>'
+
#texteAnnotation= '\t<xs:simpleType name="PNEFdico_{}">\n\t\t<xs:annotation>\n\t\t<xs:documentation>{}\n\t\t</xs:documentation>\n\t\t</xs:annotation>\n\t<xs:restriction base="xs:string"></xs:restriction>\n\t</xs:simpleType>\n'
texteAnnotation= '\t<xs:simpleType name="PNEFdico">\n\t\t<xs:annotation>\n\t\t<xs:documentation>{}\n\t\t</xs:documentation>\n\t\t</xs:annotation>\n\t<xs:restriction base="xs:string"></xs:restriction>\n\t</xs:simpleType>\n'
attributeTypeUtilisateurName = '\t\t<xs:attribute name="typeUtilisateur" type="xs:string" fixed="{}"/>\n'
producingASSDkeyRefDeclaration='\t<xs:key name="Key_Name_For_{}">\n\t\t<xs:selector xpath="."/>\n\t\t<xs:field xpath="{}"/>\n\t</xs:key>\n'
texteFieldUnitaire="./{}:{}/@name |"
+defBaseXSDASSD = '\t<xs:simpleType name="AccasAssd">\n\t\t<xs:restriction base="xs:string">\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
defBaseXSDUserASSD='\t<xs:simpleType name="AccasUserAssd">\n\t\t<xs:restriction base="xs:string">\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
defBaseXSDUserASSDMultiple='\t<xs:simpleType name="AccasUserAssdMultiple">\n\t\t<xs:restriction base="xs:string">\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
tupleNonHomogeneElt = '\t\t\t<xs:element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
tupleDebutComplexeType = '\t<xs:complexType name="{}">\n\t\t<xs:sequence>'
tupleMilieuComplexeType = '\n\t\t\t<xs:element name="n{}" type="{}_n{}_tuple" minOccurs="1" maxOccurs="1"/>'
-tupleFinComplexeType = '\n\t\t</xs:sequence>\n\t</xs:complexType>\n'
+tupleFinComplexeType = '\n\t\t</xs:sequence>\n\t\t<xs:attribute name="sdType" type="xs:string" fixed="Tuple"/>\n\t</xs:complexType>\n'
# MATRICE
eltMatrice = '\t\t\t <xs:element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
matriceSimpleType = '\t<xs:simpleType name="{}_line">\n\t\t<xs:restriction>\n\t\t\t<xs:simpleType>\n\t\t\t\t<xs:list>\n\t\t\t\t\t<xs:simpleType>\n\t\t\t\t\t\t<xs:restriction base="{}_element"/>\n\t\t\t\t\t</xs:simpleType>\n\t\t\t\t</xs:list>\n\t\t\t</xs:simpleType>\n\t\t\t<xs:minLength value="{}"/>\n\t\t\t<xs:maxLength value="{}"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n'
matriceSimpleType +='\t<xs:group name="{}_matrix">\n\t\t<xs:sequence>\n\t\t\t<xs:element name="line" type="{}:{}_line" minOccurs="{}" maxOccurs="{}"/>\n\t\t </xs:sequence>\n\t</xs:group>\n'
-matriceSimpleType +='\t<xs:complexType name="{}"> \n\t\t<xs:group ref="{}:{}_matrix" minOccurs="1" maxOccurs="1"/>\n\t</xs:complexType>\n'
+matriceSimpleType +='\t<xs:complexType name="{}"> \n\t\t<xs:group ref="{}:{}_matrix" minOccurs="1" maxOccurs="1"/>\n\t\t<xs:attribute name="sdType" type="xs:string" fixed="Matrice"/>\n\t</xs:complexType>\n'
# CHAINES AVEC BLANC
debutChaineAvecBlancsInto = '\t<xs:simpleType name="{}_enum">\n\t\t<xs:restriction base="xs:string">\n'
if self.jdc.cata.modeleMetier:self.jdc.toXml(self.fichier)
if self.jdc.cata.modeleMetier and self.jdc.isValid():
- if self.generator != self.XMLgenerator :
- self.XMLgenerator.gener(self.jdc)
- self.XMLgenerator.writeDefault(fn)
+ if self.generator != self.XMLGenerator :
+ self.XMLGenerator.gener(self.jdc)
+ self.XMLGenerator.writeDefault(fn)
if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
#if hasattr(self.generator, "writeDefault"):
self.maConfiguration.mesGenerators = generator
self.maConfiguration.mesconvertisseurs = convert
- try : self.XMLgenerator=generator.plugins['xml']()
- except : self.XMLgenerator=None
+ try : self.XMLGenerator=generator.plugins['xml']()
+ except : self.XMLGenerator=None
+ try : self.pythonGenerator=generator.plugins['python']()
+ except : self.pythonGenerator=None
if self.formatFichierOut in generator.plugins.keys():
a.close()
except :
checksum='Fichier trop long \n'
- ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM"
+ ligne="#CHECKSUM:"+cecksum[0:-1]+":FIN CHECKSUM"
return ligne
#----------------------#
self.fichierOut = fichier
if not (self.writeFile(fichier,formatLigne=formatLigne)): return (0, None)
if self.jdc.cata.modeleMetier and self.jdc.isValid():
- if self.generator != self.XMLgenerator :
- self.XMLgenerator.gener(self.jdc)
- self.XMLgenerator.writeDefault(fichier)
+ if self.generator != self.XMLGenerator :
+ self.XMLGenerator.gener(self.jdc)
+ self.XMLGenerator.writeDefault(fichier)
return(1,self.fichier)
if self.jdc.isValid() and hasattr(self.generator, "writeDefault"):
self.generator.writeDefault(fichier)
dejaAffiche=0
if (len(liste)) != self.nbLigs :
QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
+ return
for i in range(self.nbLigs):
inter=liste[i]
if (len(inter)) != self.nbCols :
try:
self.definition.validators.convert(lval)
except ValError as e:
- self.cr.fatal(
- "invalid keyword %s : %s\nCriteria : %s" % (tr(self.nom)), str(e), self.definition.validators.info())
+ self.cr.fatal("invalid keyword {}:{}\nCriteria : {}".format(tr(self.nom), str(e), self.definition.validators.info()))
valid = 0
else:
# si pas de cr demande, on sort a la toute premiere erreur