Skip to content

Instantly share code, notes, and snippets.

@katyukha
Last active August 29, 2015 14:03
Show Gist options
  • Save katyukha/3412cea6fbc34692673e to your computer and use it in GitHub Desktop.
Save katyukha/3412cea6fbc34692673e to your computer and use it in GitHub Desktop.
Simple function to generate views on OE models
xml_template = """<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
%(views)s
</data>
</openerp>
"""
view_template = """
<record id="%(view_id)s_%(view_type)s_view" model="ir.ui.view">
<field name="name">%(view_name)s</field>
<field name="model">%(view_model)s</field>
<field name="arch" type="xml">
<%(view_type)s string="%(view_name)s">
%(view_fields)s
</%(view_type)s>
</field>
</record>
"""
field_template = """
<field name="%(name)s"/>"""
action_template = """
<record id="%(act_name)s_view_action" model="ir.actions.act_window">
<field name="name">%(model)s.View</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">%(model)s</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<!--<field name="view_id" ref=""/>-->
</record>
<menuitem id="menu_id" name="Name"
parent="" sequence="10"
action="%(act_name)s_view_action"/>
"""
def generate_views_for_model(*models):
total_views = ""
for model in models:
view_fields = ""
for fname, fval in model._columns.iteritems():
view_fields += field_template % {'name': fname}
views = ""
for view_type in ('search', 'tree', 'form'):
view = view_template % {
'view_id': "%s_view" % str(model._name or model._inherit).replace(".", '_'),
'view_name': str(model._name or model._inherit),
'view_model': str(model._name or model._inherit),
'view_type': view_type,
'view_fields': view_fields,
}
views += view
total_views += """
<!-- Views for model %s -->
""" % str(model._name or model._inherit)
total_views += views
total_views += action_template % {
'act_name': str(model._name or model._inherit).replace(".", '_'),
'model': str(model._name or model._inherit),
}
total_views += """
<!-- end views for model %s -->
""" % str(model._name or model._inherit)
return xml_template % {'views': total_views}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment