[IMP] base : Convert Model Overview and Technical Guide rml reports in qweb report

This commit is contained in:
rsi-odoo
2015-02-04 15:28:50 +01:00
committed by Damien Bouvy
parent 1a2b4f4de7
commit 1c3f7c5ad7
9 changed files with 214 additions and 339 deletions
+2
View File
@@ -56,12 +56,14 @@ The kernel of OpenERP, needed for all installation.
'ir/ir_values_view.xml',
'ir/osv_memory_autovacuum.xml',
'ir/ir_model_report.xml',
'ir/report_ir_model.xml',
'ir/ir_logging_view.xml',
'ir/ir_qweb.xml',
'workflow/workflow_view.xml',
'module/module_view.xml',
'module/module_data.xml',
'module/module_report.xml',
'module/report/report_ir_module_reference.xml',
'module/wizard/base_module_update_view.xml',
'module/wizard/base_language_install_view.xml',
'module/wizard/base_import_language_view.xml',
Binary file not shown.
+7 -8
View File
@@ -2,14 +2,13 @@
<openerp>
<data>
<report id="report_ir_model_overview"
string="Model Overview"
model="ir.model"
name="ir.model.overview"
report_type="sxw"
file="base/ir/ir_model_report.sxw"
header="False"
/>
<report
id="report_ir_model_overview"
string="Model Overview"
model="ir.model"
report_type="qweb-pdf"
name="base.report_irmodeloverview"
file="base.report_irmodeloverview"/>
</data>
</openerp>
@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_irmodeloverview">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<div class="page">
<table class="table table-bordered mb64">
<tr>
<td colspan="12">
<strong>Object: <span t-field="o.model"/>
<p>Name: <span t-field="o.name"/></p></strong>
</td>
<td colspan="8">
<p>Type: <span t-field="o.state"/></p>
<p t-if="o.osv_memory">In-memory: True</p>
<p t-if="not o.osv_memory">In-memory: False</p>
<p>Modules: <span t-field="o.modules"/></p>
</td>
</tr>
<tr>
<td colspan="20"><u><strong>Security</strong></u></td>
</tr>
<tr>
<td colspan="4"><strong>Group</strong></td>
<td><strong>R</strong></td>
<td><strong>W</strong></td>
<td><strong>C</strong></td>
<td><strong>U</strong></td>
<td colspan="12"><strong>Name</strong></td>
</tr>
<tr t-foreach="o.access_ids" t-as="access">
<td colspan="4"><span t-field="access.group_id.name"/></td>
<td><t t-if="access.perm_read">X</t></td>
<td><t t-if="access.perm_write">X</t></td>
<td><t t-if="access.perm_create">X</t></td>
<td><t t-if="access.perm_unlink">X</t></td>
<td colspan="12"><span t-field="access.name"/></td>
</tr>
<tr>
<td colspan="20"><u><strong>Fields</strong></u></td>
</tr>
<tr>
<td colspan="3"><strong>Name</strong></td>
<td colspan="3"><strong>Label</strong></td>
<td colspan="2"><strong>Type</strong></td>
<td colspan="4"><strong>Attribute</strong></td>
<td><strong>Rq</strong></td>
<td><strong>Ro</strong></td>
<td><strong>Tr</strong></td>
<td><strong>Sel</strong></td>
<td colspan="4"><strong>Modules</strong></td>
</tr>
<tr t-foreach="o.field_id" t-as="field">
<td colspan="3"><span t-field="field.name"/></td>
<td colspan="3"><span t-field="field.field_description"/></td>
<td colspan="2"><span t-field="field.ttype"/></td>
<td colspan="4">
<p t-if="field.relation"><span>- relation = <span t-field="field.relation"/></span></p>
<p t-if="field.relation_field"><span>- field = <span t-field="field.relation_field"/></span></p>
<div t-if="field.selection"><span>- selection = <span t-field="field.selection"/></span></div>
<div t-if="field.size"><span>- size = <span t-field="field.size"/></span></div>
<div t-if="field.on_delete"><span>- ondelete = <span t-field="field.on_delete"/></span></div>
<div t-if="field.domain"><span>- domain = <span t-field="field.domain"/></span></div>
<div t-if="field.groups"><span>- groups = <span t-field="[g.name for g in field.groups]"/></span></div>
</td>
<td><t t-if="field.required">X</t></td>
<td><t t-if="field.readonly">X</t></td>
<td><t t-if="field.translate">X</t></td>
<td><t t-esc="field.select_level"/></td>
<td colspan="4"><span t-field="field.modules"/></td>
</tr>
<tr>
<td colspan="20"><u><strong>Views</strong></u></td>
</tr>
<tr>
<td><strong>Seq</strong></td>
<td><strong>Type</strong></td>
<td colspan="4"><strong>Name</strong></td>
<td colspan="6"><strong>XML ID</strong></td>
<td colspan="8"><strong>Inherited</strong></td>
</tr>
<tr t-foreach="o.view_ids" t-as="view">
<td><span t-field="view.priority"/></td>
<td><span t-field="view.type"/></td>
<td colspan="4"><span t-field="view.name"/></td>
<td colspan="6"><span t-field="view.xml_id"/></td>
<td colspan="8"><span t-field="view.inherit_id.xml_id or view.inherit_id.name"/></td>
</tr>
</table>
</div>
</t>
</t>
</template>
</data>
</openerp>
+10 -3
View File
@@ -1,8 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report auto="False" id="ir_module_reference_print" model="ir.module.module" name="ir.module.reference" rml="base/module/report/ir_module_reference.rml" string="Technical guide"/>
<report
id="ir_module_reference_print"
string="Technical guide"
model="ir.module.module"
report_type="qweb-pdf"
auto="False"
file="base.report_irmodulereference"
name="base.report_irmodulereference"/>
</data>
</openerp>
@@ -1,268 +0,0 @@
<?xml version="1.0"?>
<document filename="test.pdf">
<template title="Test" allowSplitting="20">
<pageTemplate id="first">
<frame id="first" x1="42.0" y1="42.0" width="511" height="758"/>
<header>
<pageGraphics>
<setFont name="Helvetica-Bold" size="9"/>
<drawString x="1.0cm" y="28.1cm">[[ company.name ]]</drawString>
<drawRightString x="20cm" y="28.1cm"> Reference Guide </drawRightString>
<lineMode width="0.7"/>
<stroke color="black"/>
<lines>1cm 28cm 20cm 28cm</lines>
</pageGraphics>
</header>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="module_tbl_heading">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
</blockTableStyle>
<blockTableStyle id="module_tbl_content">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="4,0" stop="4,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="4,0" stop="4,0"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
</blockTableStyle>
<blockTableStyle id="depen_tbl">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Tableau3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
</blockTableStyle>
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="P1" fontName="Helvetica-Oblique" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Times-Roman" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Times-Roman"/>
<paraStyle name="Footer" fontName="Times-Roman"/>
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="11.0" leading="14" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_8_underline" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
</stylesheet>
<images/>
<story>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="139.0,220.0,152.0" repeatRows="1" style="Table1">
<tr>
<td>
<para style="terp_header_Centre">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_header_Centre">Introspection report on objects</para>
</td>
<td>
<para style="terp_header_Centre">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<para style="Standard">
<font color="white"> </font>
</para>
<para style="Standard">
<font color="white"> </font>
</para>
<section>
<para style="Text body">[[ repeatIn(objects,'module') ]]</para>
<blockTable colWidths="102.0,102.0,102.0,102.0,102.0" style="module_tbl_heading">
<tr>
<td>
<para style="terp_tblheader_General_Centre">Module</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Name</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Version</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Directory</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Web</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="102.0,102.0,102.0,102.0,102.0" style="module_tbl_content">
<tr>
<td>
<para style="terp_default_Centre_8">[[ module.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ module.shortdesc]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[module.latest_version]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ module.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ module.website ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8">[[ module.description ]]</para>
<para style="terp_default_Bold_8">
<font color="white"> </font>
</para>
<para style="terp_default_8_underline">Reports :</para>
<para style="terp_default_8">[[ format(module.reports_by_module) ]]</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8_underline">Menu :</para>
<para style="terp_default_8">[[ format(module.menus_by_module) ]]</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8_underline">View :</para>
<para style="terp_default_8">[[ format(module.views_by_module) ]]</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="510.0" style="depen_tbl">
<tr>
<td>
<para style="terp_default_8_underline">Dependencies :</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_8">[[ repeatIn(module.dependencies_id,'dependencies_id') ]]</para>
<para style="terp_default_8">[[ dependencies_id.name ]] - [[ dependencies_id.state ]]</para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="terp_default_9">[[ repeatIn(findobj(module.name) ,'object') ]]</para>
<para style="terp_default_1">
<font color="white"> </font>
</para>
<blockTable colWidths="510.0" repeatRows="1" style="Tableau3">
<tr>
<td>
<para style="terp_tblheader_Details">Object: [[ object.model ]] [[ objdoc(object.model) ]]</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_9">[[ repeatIn(objdoc2(object.model) or [], 'sline') ]]</para>
<para style="terp_default_9"> [[ sline ]] </para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_1">
<font color="white"> </font>
</para>
</section>
<section>
<para style="P1">[[ repeatIn(findflds(object.model, module.name), 'field') ]]</para>
<blockTable colWidths="113.0,397.0" repeatRows="1" style="Table2">
<tr>
<td>
<para style="terp_default_9">[[ field[0] ]]</para>
</td>
<td>
<para style="terp_default_9">[[ field[1].get('string', 'Unknown') ]], [[ field[1]['type'] ]] [[field[1].get('required',False) and ', required']] [[field[1].get('readonly',False) and ', readonly']] </para>
<para style="terp_default_9">[[ field[1].get('help', '') ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_1">
<font color="white"> </font>
</para>
</section>
</section>
</section>
</story>
</document>
@@ -19,71 +19,42 @@
#
##############################################################################
import time
from openerp import models, api
from openerp.report import report_sxw
class ir_module_reference_print(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(ir_module_reference_print, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'findobj': self._object_find,
'objdoc': self._object_doc,
'objdoc2': self._object_doc2,
'findflds': self._fields_find,
})
def _object_doc(self, obj):
modobj = self.pool[obj]
strdocs= modobj.__doc__
if not strdocs:
return None
else:
strdocs=strdocs.strip().splitlines(True)
res = ''
for stre in strdocs:
if not stre or stre.isspace():
break
res += stre
return res
def _object_doc2(self, obj):
modobj = self.pool[obj]
strdocs= modobj.__doc__
if not strdocs:
return None
else:
strdocs=strdocs.strip().splitlines(True)
res = []
fou = False
for stre in strdocs:
if fou:
res.append(stre.strip())
elif not stre or stre.isspace():
fou = True
return res
class IrModelReferenceReport(models.AbstractModel):
_name = 'report.base.report_irmodulereference'
@api.model
def _object_find(self, module):
ids2 = self.pool['ir.model.data'].search(self.cr, self.uid, [('module','=',module), ('model','=','ir.model')])
ids = []
for mod in self.pool['ir.model.data'].browse(self.cr, self.uid, ids2):
ids.append(mod.res_id)
modobj = self.pool['ir.model']
return modobj.browse(self.cr, self.uid, ids)
model_data_obj = self.env['ir.model.data']
models_data = model_data_obj.search([('model','=','ir.model'), ('module','=',module.name)])
res_ids = [model_data.res_id for model_data in models_data]
return self.env['ir.model'].browse(res_ids)
def _fields_find(self, obj, module):
@api.multi
def _fields_find(self, model, module):
res = []
data_obj = self.pool['ir.model.data']
modobj = self.pool[obj]
fname_wildcard = 'field_' + modobj._name.replace('.', '_') + '_%'
module_fields_ids = data_obj.search(self.cr, self.uid, [('model', '=', 'ir.model.fields'), ('module', '=', module), ('name', 'like', fname_wildcard)])
if module_fields_ids:
module_fields_res_ids = [x['res_id'] for x in data_obj.read(self.cr, self.uid, module_fields_ids, ['res_id'])]
module_fields_names = [x['name'] for x in self.pool['ir.model.fields'].read(self.cr, self.uid, module_fields_res_ids, ['name'])]
res = modobj.fields_get(self.cr, self.uid, allfields=module_fields_names).items()
model_obj = self.env[model]
model_fields = self.env['ir.model.fields']
fname_wildcard = 'field_' + model_obj._name.replace('.', '_') + '_%'
module_fields_ids = self.env['ir.model.data'].search([('model', '=', 'ir.model.fields'), ('module', '=', module.name), ('name', 'like', fname_wildcard)])
module_fields_res_ids = [x.res_id for x in module_fields_ids]
if module_fields_res_ids:
module_fields_names = [x.name for x in model_fields.browse(module_fields_res_ids)]
res = model_obj.fields_get(allfields=module_fields_names).items()
res.sort()
return res
report_sxw.report_sxw('report.ir.module.reference', 'ir.module.module',
'addons/base/module/report/ir_module_reference.rml',
parser=ir_module_reference_print, header=False)
@api.multi
def render_html(self, data=None):
report_obj = self.env['report']
module_report = report_obj._get_report_from_name('base.report_irmodulereference')
selected_modules = self.env['ir.module.module'].browse(self.ids)
docargs = {
'doc_ids': self.ids,
'doc_model': module_report.model,
'docs': selected_modules,
'findobj': self._object_find,
'findfields': self._fields_find,
}
return report_obj.render('base.report_irmodulereference', docargs)
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_irmodulereference">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="report.internal_layout">
<div class="page">
<h3 class="text-center">Introspection report on objects</h3>
<table class="table table-bordered mt32">
<thead>
<tr>
<th class="text-center">Module</th>
<th class="text-center">Name</th>
<th class="text-center">Version</th>
<th class="text-center">Directory</th>
<th class="text-center">Web</th>
</tr>
</thead>
<tbody>
<tr class="text-center">
<td><span t-field="o.name"/></td>
<td><span t-field="o.shortdesc"/></td>
<td><span t-field="o.latest_version"/></td>
<td><span t-field="o.name"/></td>
<td><span t-field="o.website"/></td>
</tr>
</tbody>
</table>
<span t-field="o.description"/>
<div>
<strong>Reports :</strong>
</div>
<span t-field="o.reports_by_module"/>
<div>
<strong>Menu :</strong>
</div>
<span t-field="o.menus_by_module"/>
<div>
<strong>View :</strong>
</div>
<span t-field="o.views_by_module"/>
<div>
<strong>Dependencies :</strong>
</div>
<div t-foreach="o.dependencies_id" t-as="dependency_id">
<span t-field="dependency_id.name"/> - <span t-field="dependency_id.module_id.state"/>
</div>
<table t-foreach="findobj(o)" t-as="obj" class="table table-condensed mt16 mb32">
<tr>
<th colspan="2">Object: <span t-esc="obj.model"/></th>
</tr>
<tr t-foreach="findfields(obj.model, o)" t-as="field">
<td class="col-xs-3"><t t-esc="field[0]"/></td>
<td>
<span t-esc="field[1].get('string','Unknown')"/><span>, </span><span t-esc="field[1].get('type')"/><span t-if="field[1].get('required')">, required</span><span t-if="field[1].get('readonly',False)">, readonly</span>
<div t-esc="field[1].get('help', '')"/>
</td>
</tr>
</table>
</div>
</t>
</t>
</t>
</template>
</data>
</openerp>