[FIX] orm: typo in fields_view_get.
bzr revid: vmt@openerp.com-20110620095642-3vx11f7cqad2e71k
This commit is contained in:
parent
f46cfc589d
commit
8645487d61
|
@ -1616,11 +1616,15 @@ class orm_template(object):
|
||||||
""" Locate a node in a source (parent) architecture.
|
""" Locate a node in a source (parent) architecture.
|
||||||
|
|
||||||
Given a complete source (parent) architecture (i.e. the field
|
Given a complete source (parent) architecture (i.e. the field
|
||||||
`arch` in a view), and a 'spec' node (a node in a inheriting
|
`arch` in a view), and a 'spec' node (a node in an inheriting
|
||||||
view that specifies the location in the source view of what
|
view that specifies the location in the source view of what
|
||||||
should be changed), return (if it exists) the node in the
|
should be changed), return (if it exists) the node in the
|
||||||
source view matching the specification.
|
source view matching the specification.
|
||||||
|
|
||||||
|
:param source: a parent architecture to modify
|
||||||
|
:param spec: a modifying node in an inheriting view
|
||||||
|
:return: a node in the source matching the spec
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if spec.tag == 'xpath':
|
if spec.tag == 'xpath':
|
||||||
nodes = source.xpath(spec.get('expr'))
|
nodes = source.xpath(spec.get('expr'))
|
||||||
|
@ -1644,15 +1648,20 @@ class orm_template(object):
|
||||||
return node
|
return node
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def apply_specs(source, inherit, inherit_id=None):
|
def apply_inheritance_specs(source, specs_arch, inherit_id=None):
|
||||||
""" Apply an inheriting view.
|
""" Apply an inheriting view.
|
||||||
|
|
||||||
Apply to a source architecture all the spec nodes (i.e. nodes
|
Apply to a source architecture all the spec nodes (i.e. nodes
|
||||||
describing where and what changes to apply to some parent
|
describing where and what changes to apply to some parent
|
||||||
architecture) given by an inheriting view.
|
architecture) given by an inheriting view.
|
||||||
|
|
||||||
|
:param source: a parent architecture to modify
|
||||||
|
:param specs_arch: a modifying architecture in an inheriting view
|
||||||
|
:param inherit_id: the database id of the inheriting view
|
||||||
|
:return: a modified source where the specs are applied
|
||||||
|
|
||||||
"""
|
"""
|
||||||
specs_tree = etree.fromstring(encode(inherit))
|
specs_tree = etree.fromstring(encode(specs_arch))
|
||||||
# Queue of specification nodes (i.e. nodes describing where and
|
# Queue of specification nodes (i.e. nodes describing where and
|
||||||
# changes to apply to some parent architecture).
|
# changes to apply to some parent architecture).
|
||||||
specs = [specs_tree]
|
specs = [specs_tree]
|
||||||
|
@ -1706,14 +1715,22 @@ class orm_template(object):
|
||||||
raise_view_error("Element '%s' not found in parent view '%%(parent_xml_id)s'" % tag, inherit_id)
|
raise_view_error("Element '%s' not found in parent view '%%(parent_xml_id)s'" % tag, inherit_id)
|
||||||
return source
|
return source
|
||||||
|
|
||||||
def apply_chained_specs(source, inherit_id):
|
def apply_view_inheritance(source, inherit_id):
|
||||||
""" Apply all the (directly and indirectly) inheriting views. """
|
""" Apply all the (directly and indirectly) inheriting views.
|
||||||
|
|
||||||
|
:param source: a parent architecture to modify (with parent
|
||||||
|
modifications already applied)
|
||||||
|
:param inherit_id: the database id of the parent view
|
||||||
|
:return: a modified source where all the modifying architecture
|
||||||
|
are applied
|
||||||
|
|
||||||
|
"""
|
||||||
# get all views which inherit from (ie modify) this view
|
# get all views which inherit from (ie modify) this view
|
||||||
cr.execute('select arch,id from ir_ui_view where inherit_id=%s and model=%s order by priority', (inherit_id, self._name))
|
cr.execute('select arch,id from ir_ui_view where inherit_id=%s and model=%s order by priority', (inherit_id, self._name))
|
||||||
sql_inherit = cr.fetchall()
|
sql_inherit = cr.fetchall()
|
||||||
for (inherit, id) in sql_inherit:
|
for (inherit, id) in sql_inherit:
|
||||||
source = apply_specs(source, inherit, id)
|
source = apply_inheritance_specs(source, inherit, id)
|
||||||
source = apply_chained_specs(source, id)
|
source = apply_view_inheritance(source, id)
|
||||||
return source
|
return source
|
||||||
|
|
||||||
result = {'type': view_type, 'model': self._name}
|
result = {'type': view_type, 'model': self._name}
|
||||||
|
@ -1756,9 +1773,9 @@ class orm_template(object):
|
||||||
result['view_id'] = sql_res['id']
|
result['view_id'] = sql_res['id']
|
||||||
|
|
||||||
source = etree.fromstring(encode(sql_res['arch']))
|
source = etree.fromstring(encode(sql_res['arch']))
|
||||||
result['arch'] = apply_chained_specs(source, result['view_id'])
|
result['arch'] = apply_view_inheritance(source, result['view_id'])
|
||||||
|
|
||||||
result['name'] = sql_res['nam']
|
result['name'] = sql_res['name']
|
||||||
result['field_parent'] = sql_res['field_parent'] or False
|
result['field_parent'] = sql_res['field_parent'] or False
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue