[FIX] list only installed modules

bzr revid: jba@openerp.com-20110107114233-f5p2h1rasyoxwfdp
This commit is contained in:
Jacques-Etienne Baudoux 2011-01-07 12:42:33 +01:00
parent e6cddbf400
commit de013193a6
1 changed files with 14 additions and 8 deletions

View File

@ -40,6 +40,18 @@ def _get_fields_type(self, cr, uid, context=None):
field_types.remove(types)
return field_types
def _in_modules(self, cr, uid, ids):
#return list of installed modules where self is defined
res = osv.osv.get_xml_ids(self, cr, uid, ids)
for k,v in res.iteritems():
res[k]=set(map(lambda x: x.split('.')[0],v))
module_pool=self.pool.get("ir.module.module")
installed_modules=[module for module in reduce(lambda x, y: x|y, res.values())
if module_pool.search(cr,uid,[('name','=',module),('state','=','installed')])]
for k,v in res.iteritems():
res[k]=', '.join([m for m in v if m in installed_modules])
return res
class ir_model(osv.osv):
_name = 'ir.model'
_description = "Objects"
@ -64,10 +76,7 @@ class ir_model(osv.osv):
return [('id', 'in', [id for id in is_osv_mem if bool(is_osv_mem[id]) == value])]
def _in_modules(self, cr, uid, ids, field_name, arg, context=None):
res = osv.osv.get_xml_ids(self, cr, uid, ids)
for k,v in res.iteritems():
res[k]=', '.join(map(lambda x: x.split('.')[0],v))
return res
return _in_modules(self, cr, uid, ids)
def _view_ids(self, cr, uid, ids, field_name, arg, context=None):
models=self.browse(cr,uid,ids)
@ -166,10 +175,7 @@ class ir_model_fields(osv.osv):
_description = "Fields"
def _in_modules(self, cr, uid, ids, field_name, arg, context=None):
res = osv.osv.get_xml_ids(self, cr, uid, ids)
for k,v in res.iteritems():
res[k]=', '.join(map(lambda x: x.split('.')[0],v))
return res
return _in_modules(self, cr, uid, ids)
_columns = {
'name': fields.char('Name', required=True, size=64, select=1),