diff --git a/bin/addons/base/ir/ir_model.py b/bin/addons/base/ir/ir_model.py index 7fc27f6cc78..1e718144187 100644 --- a/bin/addons/base/ir/ir_model.py +++ b/bin/addons/base/ir/ir_model.py @@ -73,7 +73,7 @@ class ir_model(osv.osv): def write(self, cr, user, ids, vals, context=None): if context: - del context['__last_update'] + context.pop('__last_update', None) return super(ir_model,self).write(cr, user, ids, vals, context) def create(self, cr, user, vals, context=None): diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index b1e15b34cf4..5c4c50fae47 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -35,7 +35,7 @@ def _check_xml(self, cr, uid, ids, context={}): if not relaxng.validate(eview): logger = netsvc.Logger() logger.notifyChannel('init', netsvc.LOG_ERROR, 'The view does not fit the required schema !') - logger.notifyChannel('init', netsvc.LOG_ERROR, relaxng.error_log.last_error) + logger.notifyChannel('init', netsvc.LOG_ERROR, tools.ustr(relaxng.error_log.last_error)) return False return True diff --git a/bin/osv/expression.py b/bin/osv/expression.py index b849e77bd08..b89e7ff3d96 100644 --- a/bin/osv/expression.py +++ b/bin/osv/expression.py @@ -198,10 +198,22 @@ class expression(object): self.__exp[i] = (left, 'in', right) else: # other field type + # add the time part to datetime field when it's not there: + if field._type == 'datetime' and self.__exp[i][2] and len(self.__exp[i][2]) == 10: + + self.__exp[i] = list(self.__exp[i]) + + if operator in ('>', '>='): + self.__exp[i][2] += ' 00:00:00' + elif operator in ('<', '<='): + self.__exp[i][2] += ' 23:59:59' + + self.__exp[i] = tuple(self.__exp[i]) + if field.translate: if operator in ('like', 'ilike', 'not like', 'not ilike'): right = '%%%s%%' % right - + operator = operator == '=like' and 'like' or operator query1 = '( SELECT res_id' \ @@ -224,7 +236,7 @@ class expression(object): ' SELECT id' \ ' FROM "' + working_table._table + '"' \ ' WHERE "' + left + '" ' + operator + instr + ")" - + query2 = [working_table._name + ',' + left, context.get('lang', False) or 'en_US', 'model', diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 220b272f4dd..614e271061e 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -876,7 +876,7 @@ def convert_xml_import(cr, module, xmlfile, idref=None, mode='init', noupdate=Fa except Exception, e: logger = netsvc.Logger() logger.notifyChannel('init', netsvc.LOG_ERROR, 'The XML file does not fit the required schema !') - logger.notifyChannel('init', netsvc.LOG_ERROR, relaxng.error_log.last_error) + logger.notifyChannel('init', netsvc.LOG_ERROR, tools.ustr(relaxng.error_log.last_error)) raise if idref is None: diff --git a/bin/tools/translate.py b/bin/tools/translate.py index 0fb0bd8589c..2e46f6ecfce 100644 --- a/bin/tools/translate.py +++ b/bin/tools/translate.py @@ -545,20 +545,28 @@ def trans_generate(lang, modules, dbname=None): modobj = pool.get('ir.module.module') installed_modids = modobj.search(cr, uid, [('state', '=', 'installed')]) installed_modules = map(lambda m: m['name'], modobj.read(cr, uid, installed_modids, ['name'])) + + if tools.config['root_path'] in tools.config['addons_path'] : + path_list = [tools.config['root_path']] + else : + path_list = [tools.config['root_path'],tools.config['addons_path']] - for root, dirs, files in tools.osutil.walksymlinks(tools.config['root_path']): - for fname in fnmatch.filter(files, '*.py'): - fabsolutepath = join(root, fname) - frelativepath = fabsolutepath[len(tools.config['root_path'])+1:] - module = get_module_from_path(frelativepath) - is_mod_installed = module in installed_modules - if (('all' in modules) or (module in modules)) and is_mod_installed: - code_string = tools.file_open(fabsolutepath, subdir='').read() - iter = re.finditer( - '[^a-zA-Z0-9_]_\([\s]*["\'](.+?)["\'][\s]*\)', - code_string, re.M) - for i in iter: - push_translation(module, 'code', frelativepath, 0, encode(i.group(1))) + for path in path_list: + for root, dirs, files in tools.osutil.walksymlinks(path): + for fname in fnmatch.filter(files, '*.py'): + fabsolutepath = join(root, fname) + frelativepath = fabsolutepath[len(path):] + module = get_module_from_path(frelativepath) + is_mod_installed = module in installed_modules + if (('all' in modules) or (module in modules)) and is_mod_installed: + code_string = tools.file_open(fabsolutepath, subdir='').read() + iter = re.finditer('[^a-zA-Z0-9_]_\([\s]*["\'](.+?)["\'][\s]*\)', + code_string, re.S) + + if module in installed_modules : + frelativepath =str("addons"+frelativepath) + for i in iter: + push_translation(module, 'code', frelativepath, 0, encode(i.group(1))) out = [["module","type","name","res_id","src","value"]] # header