diff --git a/addons/account_analytic_plans/account_analytic_plans_view.xml b/addons/account_analytic_plans/account_analytic_plans_view.xml index 5ea8333e761..2af0df89122 100644 --- a/addons/account_analytic_plans/account_analytic_plans_view.xml +++ b/addons/account_analytic_plans/account_analytic_plans_view.xml @@ -74,7 +74,7 @@ - + diff --git a/addons/l10n_cn/account_chart_small_business_template.xml b/addons/l10n_cn/account_chart_small_business_template.xml index 810191cccd5..6034baf9c71 100644 --- a/addons/l10n_cn/account_chart_small_business_template.xml +++ b/addons/l10n_cn/account_chart_small_business_template.xml @@ -4,7 +4,7 @@ - + - 会计科目 + 2011会计科目 0 view + + 资产类 + 1 + + view + + 1001 - + liquidity - 现金 + 库存现金 1002 - + view 银行存款 @@ -42,7 +49,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1012 - + other 其他货币资金 @@ -51,7 +58,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1101 - + other 短期投资 @@ -60,7 +67,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1121 - + other 应收票据 @@ -68,7 +75,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1122 - + receivable 应收账款 @@ -76,15 +83,15 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1123 - + payable 预付账款 - + 1131 - + other 应收股利 @@ -92,7 +99,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1132 - + other 应收利息 @@ -100,8 +107,8 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1221 - - other + + receivable 其他应收款 @@ -109,7 +116,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1401 - + other 材料采购 @@ -117,7 +124,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1402 - + other 在途物资 @@ -125,7 +132,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1403 - + other 原材料 @@ -133,7 +140,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1404 - + other 材料成本差异 @@ -141,7 +148,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1405 - + other 库存商品 @@ -150,7 +157,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1407 - + other 商品进销差价 @@ -158,7 +165,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1408 - + other 委托加工物资 @@ -167,7 +174,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1411 - + other 周转材料 @@ -176,7 +183,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1421 - + other 消耗性生物资产 @@ -185,7 +192,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1501 - + other 长期债券投资 @@ -194,7 +201,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1511 - + other 长期股权投资 @@ -203,7 +210,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1601 - + other 固定资产 @@ -211,7 +218,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1602 - + other 累计折旧 @@ -220,7 +227,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1604 - + other 在建工程 @@ -228,7 +235,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1605 - + other 工程物资 @@ -237,34 +244,34 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1606 - + other 固定资产清理 - + 1621 - + other 生产性生物资产 - + - + 1622 - + other 生产性生物资产累计折旧 - + 1701 - + other 无形资产 @@ -273,7 +280,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1702 - + other 累计摊销 @@ -282,7 +289,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1801 - + other 长期待摊费用 @@ -292,18 +299,25 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 1901 - + other 待处理财产损溢 - + - - + + + + 负债类 + 2 + + view + + 2001 - + other 短期借款 @@ -312,7 +326,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2201 - + other 应付票据 @@ -320,7 +334,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2202 - + payable 应付账款 @@ -328,7 +342,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2203 - + receivable 预收账款 @@ -336,7 +350,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2211 - + other 应付职工薪酬 @@ -344,7 +358,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2221 - + other 应交税费 @@ -353,41 +367,41 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2231 - + other 应付利息 - + 2232 - + other 应付利润 - + 2241 - + payable 其他应付款 - + 2401 - + other 递延收益 - + 2501 - + other 长期借款 @@ -396,7 +410,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 2701 - + other 长期应付款 @@ -404,10 +418,17 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html + + 所有者权益类 + 3 + + view + + 3001 - + other 实收资本 @@ -415,7 +436,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 3002 - + other 资本公积 @@ -423,7 +444,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 3101 - + other 盈余公积 @@ -431,71 +452,85 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 3103 - + other 本年利润 - + 3104 - + other 利润分配 + + 成本类 + 4 + + view + + 4001 - + other 生产成本 - + 4101 - + other 制造费用 - + 4301 - + other 研发支出 - + 4401 - + other 工程施工 - + 4403 - + other 机械作业 - + - + + + 损益类 + 5 + + view + + 5001 - + other 主营业务收入 @@ -503,16 +538,16 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5051 - + other 其他业务收入 - + 5111 - + other 投资收益 @@ -520,7 +555,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5301 - + other 营业外收入 @@ -529,7 +564,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5401 - + other 主营业务成本 @@ -537,7 +572,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5402 - + other 其他业务成本 @@ -546,7 +581,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5403 - + other 营业税金及附加 @@ -554,7 +589,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5601 - + other 销售费用 @@ -562,7 +597,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5602 - + other 管理费用 @@ -570,7 +605,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5603 - + other 财务费用 @@ -579,7 +614,7 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5711 - + other 营业外支出 @@ -587,9 +622,9 @@ http://kjs.mof.gov.cn/zhengwuxinxi/zhengcefabu/201111/t20111107_605525.html 5801 - + other - 所得税 + 所得税费用 diff --git a/addons/l10n_cn/account_chart_template.xml b/addons/l10n_cn/account_chart_template.xml index a09ea67f0d0..ccb8ab62552 100644 --- a/addons/l10n_cn/account_chart_template.xml +++ b/addons/l10n_cn/account_chart_template.xml @@ -24,7 +24,7 @@ liquidity - 现金 + 库存现金 @@ -95,7 +95,7 @@ 1231 - other + receivable 其他应收款 @@ -571,6 +571,14 @@ 应付利息 + + 2241 + + + payable + 其他应付款 + + 2401 diff --git a/addons/l10n_cn/account_chart_type.xml b/addons/l10n_cn/account_chart_type.xml index 16f3f8ae0ac..d55a9fd5c4e 100644 --- a/addons/l10n_cn/account_chart_type.xml +++ b/addons/l10n_cn/account_chart_type.xml @@ -17,7 +17,7 @@ - 一、主营业务收入 + 一、营业收入 pl1 none income @@ -29,7 +29,7 @@ income - 减:主营业务成本 + 减:营业成本 pl3 none expense @@ -47,7 +47,7 @@ income - 减:营业费用 + 销售费用 pl11 none expense @@ -125,10 +125,16 @@ unreconciled asset + + 预付账款 + bs8 + unreconciled + asset + 其他应收款 bs7 - balance + unreconciled asset @@ -197,6 +203,12 @@ balance asset + + 生产性生物资产 + bs47 + balance + asset + 无形资产 bs51 @@ -209,6 +221,12 @@ balance asset + + 待处理财产损溢-无结转 + bs53 + none + asset + 递延税款借项 bs61 @@ -233,6 +251,12 @@ unreconciled liability + + 其他应付款 + bs73 + unreconciled + liability + 预收账款 bs71 @@ -240,11 +264,23 @@ liability - 应付工资 + 应付职工薪酬 bs72 balance liability + + 应付利息 + bs174 + balance + liability + + + 应付利润 + bs175 + balance + liability + 应付股利 bs74 @@ -281,6 +317,13 @@ balance liability + + 递延收益 + bs104 + balance + liability + + 实收资本 bs115 @@ -299,11 +342,35 @@ balance liability + + 本年利润 + bs120 + none + liability + 未分配利润 bs121 balance liability - + + + 成本类-余额结转 + cost + balance + none + + + 成本-无结转 + cost_no + none + none + + + 开发支出 + cost-dev + none + none + diff --git a/addons/mrp_repair/wizard/make_invoice.py b/addons/mrp_repair/wizard/make_invoice.py index 89ea7cad1f0..221404a868c 100644 --- a/addons/mrp_repair/wizard/make_invoice.py +++ b/addons/mrp_repair/wizard/make_invoice.py @@ -54,7 +54,7 @@ class make_invoice(osv.osv_memory): form_res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form') form_id = form_res and form_res[1] or False tree_res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_tree') - tree_id = tree_res and tree_res[1] or Fals + tree_id = tree_res and tree_res[1] or False return { 'domain': [('id','in', newinv.values())], diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 24713cca51f..dfa9be39ff9 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -172,7 +172,7 @@ class stock_move(osv.osv): pricelist_obj = self.pool.get("product.pricelist") pricelist = partner.property_product_pricelist_purchase.id price = pricelist_obj.price_get(cr, uid, [pricelist], - move.product_id.id, move.product_uom_qty, partner, { + move.product_id.id, move.product_uom_qty, partner.id, { 'uom': move.product_uom.id, 'date': move.date, })[pricelist] diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml index 395b5d816bd..6171304e589 100644 --- a/addons/sale_stock/sale_stock_view.xml +++ b/addons/sale_stock/sale_stock_view.xml @@ -40,6 +40,7 @@ parent.partner_id, False, True, parent.date_order, product_packaging, parent.fiscal_position, False, parent.warehouse_id, context) + {'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'uom':False} product_id_change_with_wh( diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 5791b050f23..be43f04d0ce 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -3096,7 +3096,7 @@ class stock_warehouse(osv.osv): 'crossdock_route_id': fields.many2one('stock.location.route', 'Crossdock Route'), 'reception_route_id': fields.many2one('stock.location.route', 'Receipt Route'), 'delivery_route_id': fields.many2one('stock.location.route', 'Delivery Route'), - 'resupply_from_wh': fields.boolean('Resupply From Other Warehouses'), + 'resupply_from_wh': fields.boolean('Resupply From Other Warehouses', help='Unused field'), 'resupply_wh_ids': fields.many2many('stock.warehouse', 'stock_wh_resupply_table', 'supplied_wh_id', 'supplier_wh_id', 'Resupply Warehouses'), 'resupply_route_ids': fields.one2many('stock.location.route', 'supplied_wh_id', 'Resupply Routes', help="Routes will be created for these resupply warehouses and you can select them on products and product categories"), @@ -3156,7 +3156,7 @@ class stock_warehouse(osv.osv): pull_obj.create(cr, uid, vals=pull_rule, context=context) #if the warehouse is also set as default resupply method, assign this route automatically to the warehouse if default_resupply_wh and default_resupply_wh.id == wh.id: - self.write(cr, uid, [warehouse.id], {'route_ids': [(4, inter_wh_route_id)]}, context=context) + self.write(cr, uid, [warehouse.id, wh.id], {'route_ids': [(4, inter_wh_route_id)]}, context=context) _defaults = { 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', context=c), diff --git a/addons/stock/tests/__init__.py b/addons/stock/tests/__init__.py index 4c20f7a769a..c372f3c8fb5 100644 --- a/addons/stock/tests/__init__.py +++ b/addons/stock/tests/__init__.py @@ -2,3 +2,4 @@ from . import test_stock_flow from . import test_owner_available +from . import test_resupply diff --git a/addons/stock/tests/test_resupply.py b/addons/stock/tests/test_resupply.py new file mode 100644 index 00000000000..79ecbf456b7 --- /dev/null +++ b/addons/stock/tests/test_resupply.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +from openerp.addons.stock.tests.common import TestStockCommon +from openerp.tools import mute_logger, float_round + + +class TestResupply(TestStockCommon): + def setUp(self): + super(TestResupply, self).setUp() + self.Warehouse = self.env['stock.warehouse'] + # create 2 WH, BIG and SMALL + # SMALL resupplies from BIG + self.bigwh = self.Warehouse.create({'name': 'BIG', 'code': 'B'}) + self.smallwh = self.Warehouse.create({'name': 'SMALL', 'code': 'S', + 'default_resupply_wh_id': self.bigwh.id, + 'resupply_wh_ids': [(6, 0, [self.bigwh.id])], + }) + # minimum stock rule for Product A on SMALL + Orderpoint = self.env['stock.warehouse.orderpoint'] + Orderpoint.create({'warehouse_id': self.smallwh.id, + 'location_id': self.smallwh.lot_stock_id.id, + 'product_id': self.productA.id, + 'product_min_qty': 100, + 'product_max_qty': 200, + 'product_uom': self.uom_unit.id, + }) + # create some stock on BIG + Wiz = self.env['stock.change.product.qty'] + wiz = Wiz.create({'product_id': self.productA.id, + 'new_quantity': 1000, + 'location_id': self.bigwh.lot_stock_id.id, + }) + wiz.change_product_qty() + + def test_resupply_from_wh(self): + sched = self.env['procurement.order'] + sched.run_scheduler() + # we generated 2 procurements for product A: one on small wh and the + # other one on the transit location + procs = sched.search([('product_id', '=', self.productA.id)]) + self.assertEqual(len(procs), 2) + proc1 = sched.search([('product_id', '=', self.productA.id), + ('warehouse_id', '=', self.smallwh.id)]) + self.assertEqual(proc1.state, 'running') + proc2 = sched.search([('product_id', '=', self.productA.id), + ('warehouse_id', '=', self.bigwh.id)]) + self.assertEqual(proc2.location_id.usage, 'transit') + self.assertNotEqual(proc2.state, 'exception') + proc2.run() + self.assertEqual(proc2.state, 'running') + self.assertTrue(proc2.rule_id) diff --git a/addons/stock_account/stock.py b/addons/stock_account/stock.py index f40e7b3c561..e589b36594e 100644 --- a/addons/stock_account/stock.py +++ b/addons/stock_account/stock.py @@ -240,7 +240,7 @@ class stock_picking(osv.osv): @return: object of the partner to invoice """ return picking.partner_id and picking.partner_id.id - + def action_invoice_create(self, cr, uid, ids, journal_id, group=False, type='out_invoice', context=None): """ Creates invoice based on the invoice state selected for picking. @param journal_id: Id of journal @@ -319,7 +319,7 @@ class stock_picking(osv.osv): if not invoice.origin or invoice_vals['origin'] not in invoice.origin.split(', '): invoice_origin = filter(None, [invoice.origin, invoice_vals['origin']]) merge_vals['origin'] = ', '.join(invoice_origin) - if not invoice.name or invoice_vals['name'] not in invoice.name.split(', '): + if invoice_vals.get('name', False) and (not invoice.name or invoice_vals['name'] not in invoice.name.split(', ')): invoice_name = filter(None, [invoice.name, invoice_vals['name']]) merge_vals['name'] = ', '.join(invoice_name) if merge_vals: diff --git a/addons/survey/survey.py b/addons/survey/survey.py index 612ce78abfa..7a4617c328e 100644 --- a/addons/survey/survey.py +++ b/addons/survey/survey.py @@ -21,6 +21,7 @@ from openerp.osv import fields, osv from openerp.tools.translate import _ +from openerp import SUPERUSER_ID from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT as DF from openerp.addons.website.models.website import slug from urlparse import urljoin @@ -1143,7 +1144,7 @@ class survey_user_input_line(osv.Model): ('question_id', '=', question.id)], context=context) if old_uil: - self.unlink(cr, uid, old_uil, context=context) + self.unlink(cr, SUPERUSER_ID, old_uil, context=context) if answer_tag in post and post[answer_tag].strip() != '': vals.update({'answer_type': 'suggestion', 'value_suggested': post[answer_tag]}) @@ -1174,7 +1175,7 @@ class survey_user_input_line(osv.Model): ('question_id', '=', question.id)], context=context) if old_uil: - self.unlink(cr, uid, old_uil, context=context) + self.unlink(cr, SUPERUSER_ID, old_uil, context=context) ca = dict_keys_startswith(post, answer_tag) comment_answer = ca.pop(("%s_%s" % (answer_tag, 'comment')), '').strip() @@ -1205,7 +1206,7 @@ class survey_user_input_line(osv.Model): ('question_id', '=', question.id)], context=context) if old_uil: - self.unlink(cr, uid, old_uil, context=context) + self.unlink(cr, SUPERUSER_ID, old_uil, context=context) no_answers = True ca = dict_keys_startswith(post, answer_tag) diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 75d03986438..b84be1a5440 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -8,6 +8,7 @@ from openerp import SUPERUSER_ID, api, tools from openerp.addons.website.models import website from openerp.http import request from openerp.osv import osv, fields +from openerp.tools import html_escape _logger = logging.getLogger(__name__) @@ -143,6 +144,14 @@ class view(osv.osv): # ensure there's only one match [root] = arch.xpath(section_xpath) + # html text need to be escaped for xml storage + def escape_node(node): + node.text = node.text and html_escape(node.text) + node.tail = node.tail and html_escape(node.tail) + escape_node(replacement) + for descendant in replacement.iterdescendants(): + escape_node(descendant) + root.text = replacement.text root.tail = replacement.tail # replace all children diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index 1adb11712ec..c8e7efb9044 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -174,6 +174,16 @@ class TestViewSaving(common.TransactionCase): ) ) + def test_save_escaped_text(self): + view_id = self.registry('ir.ui.view').create(self.cr, self.uid, { + 'arch':'hello world', + 'type':'qweb' + }) + view = self.registry('ir.ui.view').browse(self.cr, self.uid, view_id) + replacement = 'hello world & <angle brackets>!' + view.save(replacement, xpath='/t') + self.assertEqual(view.render(), replacement, 'html special characters wrongly escaped') + def test_save_only_embedded(self): Company = self.registry('res.company') company_id = 1 diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 4e5063f4d27..efa32ae5e71 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -542,7 +542,7 @@ class website_sale(http.Controller): partner_lang = request.lang if request.lang in [lang.code for lang in request.website.language_ids] else None - billing_info = {} + billing_info = {'customer': True} if partner_lang: billing_info['lang'] = partner_lang billing_info.update(self.checkout_parse('billing', checkout, True)) diff --git a/doc/cla/individual/cysnake4713.md b/doc/cla/individual/cysnake4713.md new file mode 100644 index 00000000000..911c1b318e9 --- /dev/null +++ b/doc/cla/individual/cysnake4713.md @@ -0,0 +1,11 @@ +China, 2015-07-09 + +I hereby agree to the terms of the Odoo Individual Contributor License +Agreement v1.0. + +I declare that I am authorized and able to make this agreement and sign this +declaration. + +Signed, + +Matt Cai 蔡旸 cysnake4713@gmail.com https://github.com/cysnake4713 diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index 7acbf86a8cc..cadd668514c 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -1029,7 +1029,7 @@ class view(osv.osv): def get_trans(text): if not text or not text.strip(): return None - text = h.unescape(text.strip()) + text = text.strip() if len(text) < 2 or (text.startswith('')): return None return translate_func(text)