raise an exception if the root element is not <terp/> or <openerp/>

bzr revid: stephane@tinyerp.com-20080910132330-y0ogf3o2kj3l9mw0
This commit is contained in:
Stephane Wirtel 2008-09-10 15:23:30 +02:00
parent 47800c2c26
commit de9ce4a0e1
2 changed files with 20 additions and 5 deletions

View File

@ -203,10 +203,17 @@
</rng:define>
<rng:start>
<rng:element name="terp">
<rng:oneOrMore>
<rng:ref name="data" />
</rng:oneOrMore>
</rng:element>
<rng:choice>
<rng:element name="openerp">
<rng:oneOrMore>
<rng:ref name="data" />
</rng:oneOrMore>
</rng:element>
<rng:element name="terp">
<rng:oneOrMore>
<rng:ref name="data" />
</rng:oneOrMore>
</rng:element>
</rng:choice>
</rng:start>
</rng:grammar>

View File

@ -678,6 +678,14 @@ form: module.record_id""" % (xml_id,)
def parse(self, xmlstr):
d = xml.dom.minidom.parseString(xmlstr)
de = d.documentElement
if not de.nodeName in ['terp', 'openerp']:
self.logger.notifyChannel("init", netsvc.LOG_ERROR, "Mismatch xml format" )
raise Exception( "Mismatch xml format: only terp or openerp as root tag" )
if de.nodeName == 'terp':
self.logger.notifyChannel("init", netsvc.LOG_WARNING, "The tag <terp /> is deprecated, use <openerp/>")
for n in [i for i in de.childNodes if (i.nodeType == i.ELEMENT_NODE and i.nodeName=="data")]:
for rec in n.childNodes:
if rec.nodeType == rec.ELEMENT_NODE: