diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index ac1fc5c1129..4d7b0f45d06 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -107,6 +107,7 @@ class view(osv.osv): for view in self.browse(cr, uid, ids, context): # RNG-based validation is not possible anymore with 7.0 forms # TODO 7.0: provide alternative assertion-based validation! + # TODO 7.0: and do the tests on the result of fields_view_get instead of each arch. view_docs = [etree.fromstring(view.arch.encode('utf8'))] if view_docs[0].tag == 'data': # A element is a wrapper for multiple root nodes diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index e4e3a8f9b8d..d75f330afa2 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -23,8 +23,9 @@ import logging import re import urllib import zipimport +import base64 -from openerp import modules, pooler, release, tools +from openerp import modules, pooler, release, tools, addons from openerp.tools.parse_version import parse_version from openerp.tools.translate import _ from openerp.osv import fields, osv, orm @@ -160,6 +161,18 @@ class module(osv.osv): res[key][k] = "\n".join(sorted(v)) return res + def _get_icon_image(self, cr, uid, ids, field_name=None, arg=None, context=None): + res = dict.fromkeys(ids, '') + for module in self.browse(cr, uid, ids, context=context): + path = addons.get_module_resource(module.name, 'static', 'src', 'img', 'icon.png') + if path: + image_file = tools.file_open(path, 'rb') + try: + res[module.id] = image_file.read().encode('base64') + finally: + image_file.close() + return res + _columns = { 'name': fields.char("Technical Name", size=128, readonly=True, required=True, select=True), 'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True), @@ -211,6 +224,7 @@ class module(osv.osv): 'certificate' : fields.char('Quality Certificate', size=64, readonly=True), 'application': fields.boolean('Application', readonly=True), 'icon': fields.char('Icon URL', size=128), + 'icon_image': fields.function(_get_icon_image, string='Icon', type="binary"), } _defaults = { diff --git a/openerp/addons/base/module/module_view.xml b/openerp/addons/base/module/module_view.xml index 6808bc19cf6..182e0582788 100644 --- a/openerp/addons/base/module/module_view.xml +++ b/openerp/addons/base/module/module_view.xml @@ -122,9 +122,8 @@
- +