diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 654c04ee30b..3d31a7fecba 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -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', diff --git a/openerp/addons/base/ir/ir_model_report.sxw b/openerp/addons/base/ir/ir_model_report.sxw deleted file mode 100644 index 83769b93b94..00000000000 Binary files a/openerp/addons/base/ir/ir_model_report.sxw and /dev/null differ diff --git a/openerp/addons/base/ir/ir_model_report.xml b/openerp/addons/base/ir/ir_model_report.xml index 9fcf97b6c49..9b8027badb0 100644 --- a/openerp/addons/base/ir/ir_model_report.xml +++ b/openerp/addons/base/ir/ir_model_report.xml @@ -2,14 +2,13 @@ - + diff --git a/openerp/addons/base/ir/report_ir_model.xml b/openerp/addons/base/ir/report_ir_model.xml new file mode 100644 index 00000000000..11e33e943f4 --- /dev/null +++ b/openerp/addons/base/ir/report_ir_model.xml @@ -0,0 +1,96 @@ + + + + + + diff --git a/openerp/addons/base/module/module_report.xml b/openerp/addons/base/module/module_report.xml index 27094b6b98d..c6e34a40f1d 100644 --- a/openerp/addons/base/module/module_report.xml +++ b/openerp/addons/base/module/module_report.xml @@ -1,8 +1,15 @@ - - - + + + diff --git a/openerp/addons/base/module/report/ir_module_reference.rml b/openerp/addons/base/module/report/ir_module_reference.rml deleted file mode 100644 index 240d75fbccf..00000000000 --- a/openerp/addons/base/module/report/ir_module_reference.rml +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Introspection report on objects - - - - - - - - - - - - - - -
- [[ repeatIn(objects,'module') ]] - - - - Module - - - Name - - - Version - - - Directory - - - Web - - - - - - - [[ module.name ]] - - - [[ module.shortdesc]] - - - [[module.latest_version]] - - - [[ module.name ]] - - - [[ module.website ]] - - - - - - - [[ module.description ]] - - - - Reports : - [[ format(module.reports_by_module) ]] - - - - Menu : - [[ format(module.menus_by_module) ]] - - - - View : - [[ format(module.views_by_module) ]] - - - - - - - Dependencies : - - - - - [[ repeatIn(module.dependencies_id,'dependencies_id') ]] - [[ dependencies_id.name ]] - [[ dependencies_id.state ]] - - - -
- - - - [[ repeatIn(findobj(module.name) ,'object') ]] - - - - - - - Object: [[ object.model ]] [[ objdoc(object.model) ]] - - - - - [[ repeatIn(objdoc2(object.model) or [], 'sline') ]] - [[ sline ]] - - - -
- - - -
-
- [[ repeatIn(findflds(object.model, module.name), 'field') ]] - - - - [[ field[0] ]] - - - [[ field[1].get('string', 'Unknown') ]], [[ field[1]['type'] ]] [[field[1].get('required',False) and ', required']] [[field[1].get('readonly',False) and ', readonly']] - [[ field[1].get('help', '') ]] - - - - - - -
-
-
-
-
diff --git a/openerp/addons/base/module/report/ir_module_reference.sxw b/openerp/addons/base/module/report/ir_module_reference.sxw deleted file mode 100644 index 48e94634f98..00000000000 Binary files a/openerp/addons/base/module/report/ir_module_reference.sxw and /dev/null differ diff --git a/openerp/addons/base/module/report/ir_module_reference_print.py b/openerp/addons/base/module/report/ir_module_reference_print.py index 4aeeddeea24..4b76c37f00f 100644 --- a/openerp/addons/base/module/report/ir_module_reference_print.py +++ b/openerp/addons/base/module/report/ir_module_reference_print.py @@ -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) \ No newline at end of file diff --git a/openerp/addons/base/module/report/report_ir_module_reference.xml b/openerp/addons/base/module/report/report_ir_module_reference.xml new file mode 100644 index 00000000000..f87c3a97a51 --- /dev/null +++ b/openerp/addons/base/module/report/report_ir_module_reference.xml @@ -0,0 +1,68 @@ + + + + + +