diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 6f9a3d85850..a5115deccc5 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -152,12 +152,15 @@ def get_module_resource(module, *args): def get_modules(): """Returns the list of module names """ + def listdir(dir): + def clean(name): + name = os.path.basename(name) + if name[-4:] == '.zip': + name = name[:-4] + return name + return map(clean, os.listdir(dir)) - module_list = os.listdir(ad) - module_names = [os.path.basename(m) for m in module_list] - module_list += [m for m in os.listdir(_ad) if m not in module_names] - - return module_list + return list(set(listdir(ad) + listdir(_ad))) def create_graph(module_list, force=None): if not force: @@ -166,8 +169,6 @@ def create_graph(module_list, force=None): packages = [] for module in module_list: - if module[-4:]=='.zip': - module = module[:-4] try: mod_path = get_module_path(module) if not mod_path: @@ -184,8 +185,9 @@ def create_graph(module_list, force=None): raise if info.get('installable', True): packages.append((module, info.get('depends', []), info)) - - current,later = Set([p for p, dep, data in packages]), Set() + + dependencies = dict([(p, deps) for p, deps, data in packages]) + current, later = Set([p for p, dep, data in packages]), Set() while packages and current > later: package, deps, datas = packages[0] @@ -206,9 +208,10 @@ def create_graph(module_list, force=None): later.add(package) packages.append((package, deps, datas)) packages.pop(0) - + for package in later: - logger.notifyChannel('init', netsvc.LOG_ERROR, 'addon:%s:Unmet dependency' % package) + unmet_deps = filter(lambda p: p not in graph, dependencies[package]) + logger.notifyChannel('init', netsvc.LOG_ERROR, 'addon:%s:Unmet dependencies: %s' % (package, ', '.join(unmet_deps))) return graph diff --git a/bin/addons/base/base_data.xml b/bin/addons/base/base_data.xml index db9c548a9af..30b3464eb9a 100644 --- a/bin/addons/base/base_data.xml +++ b/bin/addons/base/base_data.xml @@ -220,10 +220,15 @@ Costa Rica cr - - Serbia and Montenegro - cs + + Serbia + rs + + Montenegro + me + + Cuba cu diff --git a/bin/addons/base/module/report/ir_module_reference.rml b/bin/addons/base/module/report/ir_module_reference.rml index e8237f0937d..472c8d7427c 100644 --- a/bin/addons/base/module/report/ir_module_reference.rml +++ b/bin/addons/base/module/report/ir_module_reference.rml @@ -136,7 +136,7 @@ - [[ module.description ]] + [[ format(module.description or '') ]]
[[ repeatIn(findobj(module.name) ,'object') ]] @@ -144,14 +144,14 @@ Object: [[ object.model ]] Description : [[ object.name ]] - [[ objdoc(object.model) ]] + [[ format(objdoc(object.model)) ]] - [[ repeatIn(findflds(object.model), 'field') ]] [[ field[0] ]] + [[ repeatIn(findflds(object.model), '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']] diff --git a/bin/addons/base/module/report/ir_module_reference_print.py b/bin/addons/base/module/report/ir_module_reference_print.py index b5c3468a0b3..47235430eff 100644 --- a/bin/addons/base/module/report/ir_module_reference_print.py +++ b/bin/addons/base/module/report/ir_module_reference_print.py @@ -37,12 +37,11 @@ class ir_module_reference_print(report_sxw.rml_parse): return modobj.__doc__ def _object_find(self, module): + ids2 = self.pool.get('ir.model.data').search(self.cr, self.uid, [('module','=',module), ('model','=','ir.model')]) + ids = [] + for mod in self.pool.get('ir.model.data').browse(self.cr, self.uid, ids2): + ids.append(mod.res_id) modobj = self.pool.get('ir.model') - if module=='base': - ids = modobj.search(self.cr, self.uid, [('model','=like','res%')]) - ids += modobj.search(self.cr, self.uid, [('model','=like','ir%')]) - else: - ids = modobj.search(self.cr, self.uid, [('model','=like',module+'%')]) return modobj.browse(self.cr, self.uid, ids) def _fields_find(self, obj): diff --git a/bin/addons/base/module/wizard/wizard_import_lang.py b/bin/addons/base/module/wizard/wizard_import_lang.py index 27e5eff26d8..82b67ab2ae4 100644 --- a/bin/addons/base/module/wizard/wizard_import_lang.py +++ b/bin/addons/base/module/wizard/wizard_import_lang.py @@ -34,8 +34,10 @@ view_form=""" - @@ -53,8 +55,8 @@ - - + + @@ -79,12 +81,16 @@ + + + + diff --git a/bin/addons/base/res/res_user.py b/bin/addons/base/res/res_user.py index d9f84a0d29d..a26e7ec6ede 100644 --- a/bin/addons/base/res/res_user.py +++ b/bin/addons/base/res/res_user.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -96,7 +96,7 @@ class users(osv.osv): _columns = { 'name': fields.char('Name', size=64, required=True, select=True), 'login': fields.char('Login', size=64, required=True), - 'password': fields.char('Password', size=64, invisible=True), + 'password': fields.char('Password', size=64, invisible=True, help="Keep empty if you don't want the user to be able to connect on the system."), 'signature': fields.text('Signature', size=64), 'address_id': fields.many2one('res.partner.address', 'Address'), 'active': fields.boolean('Active'), @@ -138,6 +138,10 @@ class users(osv.osv): ids = self.pool.get('ir.actions.act_window').search(cr, uid, [('usage','=','menu')]) return ids and ids[0] or False + def _get_group(self,cr, uid, context={}): + ids = self.pool.get('res.groups').search(cr, uid, [('name','=','Employee')]) + return ids or False + _defaults = { 'password' : lambda obj,cr,uid,context={} : '', 'context_lang': lambda *args: 'en_US', @@ -145,6 +149,7 @@ class users(osv.osv): 'menu_id': _get_menu, 'action_id': _get_menu, 'company_id': _get_company, + 'groups_id': _get_group, } def company_get(self, cr, uid, uid2): company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id diff --git a/bin/report/report_sxw.py b/bin/report/report_sxw.py index 67f93fdb811..a776e4ee6c3 100644 --- a/bin/report/report_sxw.py +++ b/bin/report/report_sxw.py @@ -385,7 +385,7 @@ class rml_parse(object): def _eval(self, expr): try: res = eval(expr, self.localcontext) - if not res: + if (res is None) or (res=='') or (res is False): res = '' except Exception,e: import traceback, sys diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 557c1486516..f8207bcc585 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -375,6 +375,14 @@ form: module.record_id""" % (xml_id,) and rec.getAttribute('auto_refresh').encode('utf-8') # groups_id = rec.hasAttribute('groups') and rec.getAttribute('groups').encode('utf-8') + # def ref() added because , if context has ref('id') eval wil use this ref + + active_id=str("active_id") # for further reference in client/bin/tools/__init__.py + + def ref(str_id): + return self.id_get(cr, None, str_id) + context=eval(context) + res = { 'name': name, 'type': type, @@ -582,7 +590,7 @@ form: module.record_id""" % (xml_id,) rec_src = rec.getAttribute("search").encode('utf8') rec_src_count = rec.getAttribute("count") - severity = rec.getAttribute("severity").encode('ascii') or netsvc.LOG_ERROR + severity = rec.getAttribute("severity").encode('ascii') or netsvc.LOG_ERROR rec_string = rec.getAttribute("string").encode('utf8') or 'unknown' diff --git a/bin/tools/misc.py b/bin/tools/misc.py index af765d58a7f..934bdd7a236 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -659,6 +659,7 @@ def get_languages(): 'ro_RO': 'Romanian', 'ru_RU': 'Russian', 'sv_SE': 'Swedish', + 'ca_ES': 'CatalĂ ', } return languages