From 44e02f756b0066f61e1bbea648f92ea23a0aac02 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 16:33:04 +0100 Subject: [PATCH 01/70] =?UTF-8?q?[FIX]=C2=A0file=5Fopen=20should=20not=20s?= =?UTF-8?q?earch=20zip=20files=20outside=20its=20root=20directory.=20=20Fi?= =?UTF-8?q?x=20the=20returned=20value=20with=20pathinfo=3DTrue.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lp bug: https://launchpad.net/bugs/928507 fixed lp bug: https://launchpad.net/bugs/928376 fixed bzr revid: florent.xicluna@gmail.com-20120208153304-9443zx2z09bws10x --- openerp/tools/misc.py | 89 ++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index a5c72900fc7..3c9210214b1 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -134,7 +134,7 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): @param name name of the file @param mode file open mode @param subdir subdirectory - @param pathinfo if True returns tupple (fileobject, filepath) + @param pathinfo if True returns tuple (fileobject, filepath) @return fileobject if pathinfo is False else (fileobject, filepath) """ @@ -142,44 +142,51 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): adps = addons.module.ad_paths rtp = os.path.normcase(os.path.abspath(config['root_path'])) - if name.replace(os.path.sep, '/').startswith('addons/'): + if os.path.isabs(name): + # It is an absolute path + # Is it below 'addons_path' or 'root_path'? + name = os.path.normcase(os.path.normpath(name)) + for root in adps + [rtp]: + if name.startswith(root): + base = root.rstrip(os.sep) + name = name[len(base) + 1:] + break + else: + # It is outside the OpenERP root: skip zipfile lookup. + base, name = os.path.split(name) + return _fileopen(name, mode=mode, basedir=base, pathinfo=pathinfo) + + if name.replace(os.sep, '/').startswith('addons/'): subdir = 'addons' - name = name[7:] + name2 = name[7:] + elif subdir: + name = os.path.join(subdir, name) + if name.replace(os.sep, '/').startswith('addons/'): + subdir = 'addons' + name2 = name[7:] + else: + name2 = name - # First try to locate in addons_path + # First, try to locate in addons_path if subdir: - subdir2 = subdir - if subdir2.replace(os.path.sep, '/').startswith('addons/'): - subdir2 = subdir2[7:] - - subdir2 = (subdir2 != 'addons' or None) and subdir2 - for adp in adps: try: - if subdir2: - fn = os.path.join(adp, subdir2, name) - else: - fn = os.path.join(adp, name) - fn = os.path.normpath(fn) - fo = file_open(fn, mode=mode, subdir=None, pathinfo=pathinfo) - if pathinfo: - return fo, fn - return fo + return _fileopen(name2, mode=mode, basedir=adp, + pathinfo=pathinfo) except IOError: pass - if subdir: - name = os.path.join(rtp, subdir, name) - else: - name = os.path.join(rtp, name) + # Second, try to locate in root_path + return _fileopen(name, mode=mode, basedir=rtp, pathinfo=pathinfo) - name = os.path.normpath(name) - # Check for a zipfile in the path - head = name - zipname = False +def _fileopen(path, mode, basedir, pathinfo): + head = os.path.normpath(path) + name = os.path.normpath(os.path.join(basedir, path)) name2 = False - while True: + zipname = False + # Check for a zipfile in the path, but stop at the 'basedir' level + while os.sep in head: head, tail = os.path.split(head) if not tail: break @@ -187,9 +194,10 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): zipname = os.path.join(tail, zipname) else: zipname = tail - if zipfile.is_zipfile(head+'.zip'): + zpath = os.path.join(basedir, head + '.zip') + if zipfile.is_zipfile(zpath): from cStringIO import StringIO - zfile = zipfile.ZipFile(head+'.zip') + zfile = zipfile.ZipFile(zpath) try: fo = StringIO() fo.write(zfile.read(os.path.join( @@ -197,20 +205,21 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): os.sep, '/'))) fo.seek(0) if pathinfo: - return fo, name + return (fo, name) return fo except Exception: - name2 = os.path.normpath(os.path.join(head + '.zip', zipname)) - pass - for i in (name2, name): - if i and os.path.isfile(i): - fo = file(i, mode) + name2 = os.path.normpath(os.path.join(zpath, zipname)) + # Look for a normal file + for fname in (name2, name): + if fname and os.path.isfile(fname): + fo = open(fname, mode) if pathinfo: - return fo, i + return (fo, fname) return fo - if os.path.splitext(name)[1] == '.rml': - raise IOError, 'Report %s doesn\'t exist or deleted : ' %str(name) - raise IOError, 'File not found : %s' % name + # Not found + if name.endswith('.rml'): + raise IOError('Report %r doesn\'t exist or deleted' % name) + raise IOError('File not found: %s' % name) #---------------------------------------------------------- From 69a5eca5b48740c44e35ac5b0285e22a17c5dd8d Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 8 Feb 2012 18:39:32 +0100 Subject: [PATCH 02/70] [IMP] Give precedence to module directories instead of zips while locating resources The previous behavior gave the precedence to zipped modules, without any apparent reason, and this is sub-optimal for several reasons: 1. The default is to have regular modules, not zipped modules, so looking first for a regular module is more efficient. 2. Keeping a zipped module next to a regular module with the same name is not a documented or supported feature. 3. Even if you were relying on this behavior having the extracted module take precedence is more practical: you could simply extract the zipped module to test a quick fix. We have another issue related to this feature because the code looking for zipped modules escapes the addons paths chroot and goes up to the filesystem root looking for a zip module at each step. This is described in bug 928376 and a fix for it should follow. lp bug: https://launchpad.net/bugs/928376 fixed bzr revid: odo@openerp.com-20120208173932-pwhz53vxxdzbo8ja --- openerp/modules/module.py | 25 ++++++++++++++----------- openerp/tools/misc.py | 24 +++++++++++++++--------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/openerp/modules/module.py b/openerp/modules/module.py index 58a4547ff07..3d3bc0d9adf 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -280,25 +280,28 @@ def get_module_as_zip(modulename, b64enc=True, src=True): def get_module_resource(module, *args): """Return the full path of a resource of the given module. - @param module: the module - @param args: the resource path components + :param module: module name + :param list(str) args: resource path components within module - @return: absolute path to the resource + :rtype: str + :return: absolute path to the resource TODO name it get_resource_path TODO make it available inside on osv object (self.get_resource_path) """ - a = get_module_path(module) - if not a: return False - resource_path = opj(a, *args) - if zipfile.is_zipfile( a +'.zip') : - zip = zipfile.ZipFile( a + ".zip") + mod_path = get_module_path(module) + if not mod_path: return False + resource_path = opj(mod_path, *args) + if os.path.isdir(mod_path): + # the module is a directory - ignore zip behavior + if os.path.exists(resource_path): + return resource_path + elif zipfile.is_zipfile(mod_path + '.zip'): + zip = zipfile.ZipFile( mod_path + ".zip") files = ['/'.join(f.split('/')[1:]) for f in zip.namelist()] resource_path = '/'.join(args) if resource_path in files: - return opj(a, resource_path) - elif os.path.exists(resource_path): - return resource_path + return opj(mod_path, resource_path) return False def get_module_icon(module): diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index a5c72900fc7..e0be5ffaef9 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -175,10 +175,22 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): name = os.path.normpath(name) - # Check for a zipfile in the path + # Give higher priority to module directories, which is + # a more common case than zipped modules. + if os.path.isfile(name): + fo = file(name, mode) + if pathinfo: + return fo, name + return fo + + # Support for loading modules in zipped form. + # This will not work for zipped modules that are sitting + # outside of known addons paths. head = name zipname = False - name2 = False + # FIXME: implement chrooting inside addons paths and fix + # for incorrect path_info behavior. Work in progress by + # Florent X linked to bug 928376 while True: head, tail = os.path.split(head) if not tail: @@ -200,14 +212,8 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): return fo, name return fo except Exception: - name2 = os.path.normpath(os.path.join(head + '.zip', zipname)) pass - for i in (name2, name): - if i and os.path.isfile(i): - fo = file(i, mode) - if pathinfo: - return fo, i - return fo + if os.path.splitext(name)[1] == '.rml': raise IOError, 'Report %s doesn\'t exist or deleted : ' %str(name) raise IOError, 'File not found : %s' % name From 9c03b140ce4444479d64130a6b75f3b44db79701 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 10 Jul 2012 14:51:35 +0530 Subject: [PATCH 03/70] [FIX]event: add oe_google_map class bzr revid: kjo@tinyerp.com-20120710092135-wskq7ga5da8jqdrc --- addons/event/event_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index 142ba2bb2a4..a3a7bff8107 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -138,7 +138,7 @@ - +
From 3bd4660e92f57d1bd1a8b985f2590e13db31f710 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Wed, 8 Aug 2012 12:36:12 +0530 Subject: [PATCH 04/70] [IMP] account : Convert invoice line to editable list and call the onchange method to set all the information. bzr revid: mdi@tinyerp.com-20120808070612-20q3wyqkevgtjnx6 --- addons/account/account_invoice.py | 6 ++++++ addons/account/account_invoice_view.xml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index b1c5db23df6..7000ca189dc 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1361,10 +1361,16 @@ class account_invoice_line(osv.osv): 'company_id': fields.related('invoice_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True), 'partner_id': fields.related('invoice_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True) } + + def default_account_id(self, cr, uid, ids, context=None): + prop = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context) + return prop and prop.id or False + _defaults = { 'quantity': 1, 'discount': 0.0, 'price_unit': _price_unit_default, + 'account_id': default_account_id, } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 501a50b96c2..8fbd85f2599 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -347,7 +347,7 @@ - + Date: Thu, 9 Aug 2012 10:57:30 +0530 Subject: [PATCH 05/70] [FIX]purchase :set a po line editable bzr revid: mma@tinyerp.com-20120809052730-4c0ykb7k54v6ju44 --- addons/purchase/purchase_view.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 47216a11cac..9c8b508553d 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -218,11 +218,12 @@ - + + - - + + From 1a36733f5be49a3de6d45548cf5b4f41caad7ceb Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 9 Aug 2012 14:14:30 +0530 Subject: [PATCH 06/70] [IMP]hr_expense : made expense line editable bzr revid: cha@tinyerp.com-20120809084430-fvhy9nfph9xiwwna --- addons/hr_expense/hr_expense.py | 29 ++++++++++++++++++++++----- addons/hr_expense/hr_expense_view.xml | 16 +++++++++++++-- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index b1192701dfb..74eac5d99c2 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -253,15 +253,23 @@ class hr_expense_line(osv.osv): res = dict(cr.fetchall()) return res + def _get_uom_id(self, cr, uid, context=None): + try: + proxy = self.pool.get('ir.model.data') + result = proxy.get_object_reference(cr, uid, 'product', 'product_uom_unit') + return result[1] + except Exception, ex: + return False + _columns = { 'name': fields.char('Expense Note', size=128, required=True), 'date_value': fields.date('Date', required=True), 'expense_id': fields.many2one('hr.expense.expense', 'Expense', ondelete='cascade', select=True), 'total_amount': fields.function(_amount, string='Total', digits_compute=dp.get_precision('Account')), 'unit_amount': fields.float('Unit Price', digits_compute=dp.get_precision('Account')), - 'unit_quantity': fields.float('Quantities' ), + 'unit_quantity': fields.float('Quantities'), 'product_id': fields.many2one('product.product', 'Product', domain=[('hr_expense_ok','=',True)]), - 'uom_id': fields.many2one('product.uom', 'Unit of Measure'), + 'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True), 'description': fields.text('Description'), 'analytic_account': fields.many2one('account.analytic.account','Analytic account'), 'ref': fields.char('Reference', size=32), @@ -270,20 +278,31 @@ class hr_expense_line(osv.osv): _defaults = { 'unit_quantity': 1, 'date_value': lambda *a: time.strftime('%Y-%m-%d'), + 'uom_id': _get_uom_id, } _order = "sequence, date_value desc" - def onchange_product_id(self, cr, uid, ids, product_id, uom_id, employee_id, context=None): + def onchange_product_id(self, cr, uid, ids, product_id, context=None): res = {} if product_id: product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) res['name'] = product.name amount_unit = product.price_get('standard_price')[product.id] res['unit_amount'] = amount_unit - if not uom_id: - res['uom_id'] = product.uom_id.id + res['uom_id'] = product.uom_id.id return {'value': res} + def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None): + res = {'value':{}} + if product_id: + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) + if uom.category_id.id != product.uom_id.category_id.id: + res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} + uom_id = product.uom_id.id + res['value'].update({'uom_id': uom_id}) + return res + hr_expense_line() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 67c08ee8a65..57b7a4cc37f 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -92,7 +92,7 @@
- + @@ -102,12 +102,24 @@
+ + + + + + + + + + + +
From 4cc8dce4ec176928cf7d092f587f9c1b6ec9db75 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 9 Aug 2012 16:21:03 +0530 Subject: [PATCH 07/70] [IMP] hr_expense : added condition to function bzr revid: cha@tinyerp.com-20120809105103-tm0m7g854zglxfrg --- addons/hr_expense/hr_expense.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 74eac5d99c2..d822d466901 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -294,13 +294,14 @@ class hr_expense_line(osv.osv): def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None): res = {'value':{}} - if product_id: - product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) - if uom.category_id.id != product.uom_id.category_id.id: - res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} - uom_id = product.uom_id.id - res['value'].update({'uom_id': uom_id}) + if uom_id: + if product_id: + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) + if uom.category_id.id != product.uom_id.category_id.id: + res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} + uom_id = product.uom_id.id + res['value'].update({'uom_id': uom_id}) return res hr_expense_line() From cfa66e42f8e99609aaddd09a612884a4c373c1fe Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 16 Aug 2012 18:06:17 +0530 Subject: [PATCH 08/70] [IMP] hr_expense: improve code as per suggestion bzr revid: cha@tinyerp.com-20120816123617-afade73y5wqune2r --- addons/hr_expense/hr_expense.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 3683eff9f1d..fca62261814 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -254,12 +254,8 @@ class hr_expense_line(osv.osv): return res def _get_uom_id(self, cr, uid, context=None): - try: - proxy = self.pool.get('ir.model.data') - result = proxy.get_object_reference(cr, uid, 'product', 'product_uom_unit') - return result[1] - except Exception, ex: - return False + result = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'product', 'product_uom_unit') + return result and result[1] or False _columns = { 'name': fields.char('Expense Note', size=128, required=True), @@ -294,14 +290,15 @@ class hr_expense_line(osv.osv): def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None): res = {'value':{}} - if uom_id: - if product_id: - product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) - if uom.category_id.id != product.uom_id.category_id.id: - res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} - uom_id = product.uom_id.id - res['value'].update({'uom_id': uom_id}) + if not uom_id: + return res + if product_id: + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) + if uom.category_id.id != product.uom_id.category_id.id: + res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} + uom_id = product.uom_id.id + res['value'].update({'uom_id': uom_id}) return res hr_expense_line() From b478264bded10e59ef4ff83997fe03757dcd9d75 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 16 Aug 2012 19:11:49 +0530 Subject: [PATCH 09/70] [IMP] hr_expense: made change in condition bzr revid: cha@tinyerp.com-20120816134149-wjumyv73z72sh6w5 --- addons/hr_expense/hr_expense.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index fca62261814..44ecef2ebba 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -290,15 +290,14 @@ class hr_expense_line(osv.osv): def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None): res = {'value':{}} - if not uom_id: + if not uom_id or not product_id: return res - if product_id: - product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) - if uom.category_id.id != product.uom_id.category_id.id: - res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} - uom_id = product.uom_id.id - res['value'].update({'uom_id': uom_id}) + product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) + uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) + if uom.category_id.id != product.uom_id.category_id.id: + res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} + uom_id = product.uom_id.id + res['value'].update({'uom_id': uom_id}) return res hr_expense_line() From 811466be2faef29b9a0f53f4ae5126a8a8134bba Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Fri, 17 Aug 2012 11:21:34 +0530 Subject: [PATCH 10/70] [IMP] account : Improved the onchange uos_id method. bzr revid: mdi@tinyerp.com-20120817055134-4p4gcsgusmyk34wd --- addons/account/account_invoice.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 225904f28b7..f0d2f2d8360 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1479,10 +1479,11 @@ class account_invoice_line(osv.osv): prod = self.pool.get('product.product').browse(cr, uid, product, context=context) prod_uom = self.pool.get('product.uom').browse(cr, uid, uom, context=context) if prod.uom_id.category_id.id != prod_uom.category_id.id: - warning = { + warning = { 'title': _('Warning!'), 'message': _('The selected unit of measure is not compatible with the unit of measure of the product.') - } + } + res['value'].update({'uos_id': prod.uom_id.id}) return {'value': res['value'], 'warning': warning} return res From 32201e28604f119a0c59f6aee8fe4b511f637c6f Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Fri, 17 Aug 2012 11:26:39 +0530 Subject: [PATCH 11/70] [IMP] account : Improved the code. bzr revid: mdi@tinyerp.com-20120817055639-sc5c9awb2h8d59zl --- addons/account/account_invoice.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index f0d2f2d8360..44531a1a266 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -1362,7 +1362,7 @@ class account_invoice_line(osv.osv): 'partner_id': fields.related('invoice_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True) } - def default_account_id(self, cr, uid, ids, context=None): + def _default_account_id(self, cr, uid, ids, context=None): prop = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context) return prop and prop.id or False @@ -1370,7 +1370,7 @@ class account_invoice_line(osv.osv): 'quantity': 1, 'discount': 0.0, 'price_unit': _price_unit_default, - 'account_id': default_account_id, + 'account_id': _default_account_id, } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): From 5458cc1d9239c51b2dc1c0eb97d5f0258e1effdb Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 17 Aug 2012 14:12:42 +0530 Subject: [PATCH 12/70] [IMP] hr_expense: made little changes in code bzr revid: cha@tinyerp.com-20120817084242-79xf2pa2souihp8d --- addons/hr_expense/hr_expense.py | 3 +-- addons/hr_expense/hr_expense_view.xml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 44ecef2ebba..2df0deb6fc4 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -296,8 +296,7 @@ class hr_expense_line(osv.osv): uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context) if uom.category_id.id != product.uom_id.category_id.id: res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')} - uom_id = product.uom_id.id - res['value'].update({'uom_id': uom_id}) + res['value'].update({'uom_id': product.uom_id.id}) return res hr_expense_line() diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index c9224d43932..8917588daf5 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -108,7 +108,7 @@ - + From 4b364238c3ee93130b2918d481a0296e34cd234a Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 17 Aug 2012 15:17:27 +0530 Subject: [PATCH 13/70] [IMP] hr_expense: made little changes in demo data bzr revid: cha@tinyerp.com-20120817094727-8u7dt2djaawz4lc0 --- addons/hr_expense/hr_expense_demo.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/hr_expense/hr_expense_demo.xml b/addons/hr_expense/hr_expense_demo.xml index e1d6b0a00b0..eddaf03ad38 100644 --- a/addons/hr_expense/hr_expense_demo.xml +++ b/addons/hr_expense/hr_expense_demo.xml @@ -11,6 +11,8 @@ service Car Travel Expenses CarTRA + + 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 From 004a1a64ee3e0ba79cf8460df13799e27f282365 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Wed, 29 Aug 2012 11:23:33 +0530 Subject: [PATCH 14/70] [ADD] Added 'groups_id' field into 'ir_ui_view' model. bzr revid: mdi@tinyerp.com-20120829055333-6iw12tthxeidkkus --- openerp/addons/base/ir/ir.xml | 11 +++++++++-- openerp/addons/base/ir/ir_ui_view.py | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 49bb719bad7..9cfb4c3b8bf 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -599,8 +599,15 @@ - - + + + + + + + + + diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index b2805884f18..7b8165ec694 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -63,6 +63,9 @@ class view(osv.osv): 'name': fields.char('View Name',size=64, required=True), 'model': fields.char('Object', size=64, required=True, select=True), 'priority': fields.integer('Sequence', required=True), + 'groups_id': fields.many2many('res.groups', 'ir_ui_view_group_rel', + 'view_id', 'group_id', 'Groups', help="If you have groups, the visibility of this view will be based on these groups. "\ + "If this field is empty, OpenERP will compute visibility based on the related object's read access."), 'type': fields.function(_type_field, type='selection', selection=[ ('tree','Tree'), ('form','Form'), From 3b2423c5dae204fa262d41dff4f40c35accc6d1e Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 29 Aug 2012 15:37:32 +0200 Subject: [PATCH 15/70] [IMP] ir.ui.view: filter inheriting views based on groups bzr revid: rco@openerp.com-20120829133732-ijyy3y05mlbazgya --- openerp/addons/base/ir/ir_ui_view.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index 3caacfc1494..bad2c3d85af 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -169,20 +169,25 @@ class view(osv.osv): :rtype: list of tuples :return: [(view_arch,view_id), ...] """ + user_groups = frozenset(self.pool.get('res.users').browse(cr, 1, uid, context).groups_id) if self.pool._init: # Module init currently in progress, only consider views from modules whose code was already loaded - query = """SELECT v.arch, v.id FROM ir_ui_view v LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id) + query = """SELECT v.id FROM ir_ui_view v LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id) WHERE v.inherit_id=%s AND v.model=%s AND md.module in %s ORDER BY priority""" query_params = (view_id, model, tuple(self.pool._init_modules)) else: # Modules fully loaded, consider all views - query = """SELECT v.arch, v.id FROM ir_ui_view v + query = """SELECT v.id FROM ir_ui_view v WHERE v.inherit_id=%s AND v.model=%s ORDER BY priority""" query_params = (view_id, model) cr.execute(query, query_params) - return cr.fetchall() + view_ids = [v[0] for v in cr.fetchall()] + # filter views based on user groups + return [(view.arch, view.id) + for view in self.browse(cr, 1, view_ids, context) + if not (view.groups_id and user_groups.isdisjoint(view.groups_id))] def write(self, cr, uid, ids, vals, context=None): if not isinstance(ids, (list, tuple)): From 6ee4afd62bab7b7aa956fc18a48c877077d11ebe Mon Sep 17 00:00:00 2001 From: "Purnendu Singh (OpenERP)" Date: Thu, 30 Aug 2012 15:40:50 +0530 Subject: [PATCH 16/70] [MERGE] sale: merge the changes of lp:~openerp-dev/openobject-addons/trunk-editable_list_sale-rco bzr revid: psi@tinyerp.com-20120830101050-xa4z1xz6knhpatkc --- addons/sale/sale_view.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index c4edc162f08..ea6de33f8ba 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -357,6 +357,20 @@ + + + sale.order.form.editable.list + sale.order + + + + + + + + + sale.order.list.select sale.order From 42f184bf6fdf4d06a74554f0e9987cec763f29b9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 30 Aug 2012 18:12:37 +0200 Subject: [PATCH 17/70] [REM] Removed TranslateDialog. Use ir.translation#translate() instead bzr revid: fme@openerp.com-20120830161237-twthb37lkbv6yn3t --- addons/web/static/src/js/view_form.js | 22 ++--- addons/web/static/src/js/views.js | 119 -------------------------- addons/web/static/src/xml/base.xml | 22 ----- 3 files changed, 12 insertions(+), 151 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 0b0366a9ee4..2034bfb741f 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -22,10 +22,6 @@ instance.web.form.FieldManagerMixin = { * Must return the asked field as in fields_get. */ get_field: function(field_name) {}, - /** - * Called by the field when the translate button is clicked. - */ - open_translate_dialog: function(field) {}, /** * Returns true when the view is in create mode. */ @@ -1049,9 +1045,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM is_create_mode: function() { return this.get("actual_mode") === "create"; }, - open_translate_dialog: function(field) { - return this._super(field); - }, }); /** @@ -1882,6 +1875,10 @@ instance.web.form.FieldInterface = { * Must set the focus on the field. Return false if field is not focusable. */ focus: function() {}, + /** + * Called when the translate button is clicked. + */ + on_translate: function() {}, }; /** @@ -1936,9 +1933,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w this._super(); if (this.field.translate) { this.$el.addClass('oe_form_field_translatable'); - this.$el.find('.oe_field_translate').click(_.bind(function() { - this.field_manager.open_translate_dialog(this); - }, this)); + this.$el.find('.oe_field_translate').click(this.on_translate); } this.$label = this.view.$el.find('label[for=' + this.id_for_label + ']'); if (instance.session.debug) { @@ -2000,6 +1995,13 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w set_input_id: function(id) { this.id_for_label = id; }, + on_translate: function() { + var self = this; + var trans = new instance.web.DataSet(this, 'ir.translation', this.view.dataset.get_context()); + return trans.call('translate', [this.view.dataset.model, this.view.datarecord.id, this.name]).then(function(action) { + self.do_action(action); + }); + }, }); /** diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index e453ecbc905..b83ddb1cc3f 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1050,119 +1050,6 @@ instance.web.Sidebar = instance.web.Widget.extend({ } }); -instance.web.TranslateDialog = instance.web.Dialog.extend({ - dialog_title: {toString: function () { return _t("Translations"); }}, - init: function(view) { - // TODO fme: should add the language to fields_view_get because between the fields view get - // and the moment the user opens the translation dialog, the user language could have been changed - this.view_language = view.session.user_context.lang; - this['on_button_' + _t("Save")] = this.on_btn_save; - this['on_button_' + _t("Close")] = this.on_btn_close; - this._super(view, { - width: '80%', - height: '80%', - destroy_on_close: false, - }); - this.view = view; - this.view_type = view.fields_view.type || ''; - this.$fields_form = null; - this.$view_form = null; - this.$sidebar_form = null; - this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name; }); - this.languages = null; - this.languages_loaded = $.Deferred(); - (new instance.web.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(), - [['translatable', '=', '1']])).read_slice(['code', 'name'], { sort: 'id' }).then(this.on_languages_loaded); - }, - start: function() { - var self = this; - this._super(); - return $.when(this.languages_loaded).then(function() { - self.$el.html(instance.web.qweb.render('TranslateDialog', { widget: self })); - self.$fields_form = self.$el.find('.oe_translation_form'); - self.$fields_form.find('.oe_trad_field').change(function() { - $(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value'))); - }); - }); - }, - on_languages_loaded: function(langs) { - this.languages = langs; - this.languages_loaded.resolve(); - }, - do_load_fields_values: function(callback) { - var self = this, - deffered = []; - this.$fields_form.find('.oe_trad_field').val('').removeClass('touched'); - _.each(self.languages, function(lg) { - var deff = $.Deferred(); - deffered.push(deff); - var callback = function(values) { - _.each(self.translatable_fields_keys, function(f) { - var value = values[0][f] || ''; - self.$fields_form.find('.oe_trad_field[name="' + lg.code + '-' + f + '"]').val(value).attr('data-value', value); - }); - deff.resolve(); - }; - if (lg.code === self.view_language) { - var values = {}; - _.each(self.translatable_fields_keys, function(field) { - values[field] = self.view.fields[field].get_value(); - }); - callback([values]); - } else { - self.view.dataset.read_ids([self.view.datarecord.id], self.translatable_fields_keys, { - context: { 'lang': lg.code } - }).then(callback); - } - }); - $.when.apply(null, deffered).then(callback); - }, - open: function(field) { - var self = this; - this._super(); - $.when(this.languages_loaded).then(function() { - if (self.view.translatable_fields && self.view.translatable_fields.length) { - self.do_load_fields_values(function() { - if (field) { - var $field_input = self.$el.find('tr[data-field="' + field.name + '"] td:nth-child(2) *:first-child'); - self.$el.scrollTo($field_input); - $field_input.focus(); - } - }); - } else { - sup.call(self); - } - }); - }, - on_btn_save: function() { - var trads = {}; - var self = this; - var trads_mutex = new $.Mutex(); - self.$fields_form.find('.oe_trad_field.touched').each(function() { - var field = $(this).attr('name').split('-'); - if (!trads[field[0]]) { - trads[field[0]] = {}; - } - trads[field[0]][field[1]] = $(this).val(); - }); - _.each(trads, function(data, code) { - if (code === self.view_language) { - _.each(data, function(value, field) { - self.view.fields[field].set_value(value); - }); - } - trads_mutex.exec(function() { - return self.view.dataset.write(self.view.datarecord.id, data, { context : { 'lang': code } }); - }); - }); - this.close(); - return trads_mutex; - }, - on_btn_close: function() { - this.close(); - } -}); - instance.web.View = instance.web.Widget.extend({ // name displayed in view switchers display_name: '', @@ -1214,12 +1101,6 @@ instance.web.View = instance.web.Widget.extend({ action_views_ids: {} }); }, - open_translate_dialog: function(field) { - if (!this.translate_dialog) { - this.translate_dialog = new instance.web.TranslateDialog(this); - } - this.translate_dialog.open(field); - }, /** * Fetches and executes the action identified by ``action_data``. * diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 511e37f4ab4..d97cc57f5ea 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1202,28 +1202,6 @@ - - - - - - - - - - -
-
Field
-
-
-
- - - - -
-
-
From df557637d1010cad27029405925333e121ea58a2 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 30 Aug 2012 18:15:53 +0200 Subject: [PATCH 18/70] [ADD] ir.translation#translate() bzr revid: fme@openerp.com-20120830161553-hmf4fbsnqd2dhq7z --- openerp/addons/base/ir/ir_translation.py | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py index 61e40e807d4..78dda4ab5b5 100644 --- a/openerp/addons/base/ir/ir_translation.py +++ b/openerp/addons/base/ir/ir_translation.py @@ -318,6 +318,31 @@ class ir_translation(osv.osv): result = super(ir_translation, self).unlink(cursor, user, ids, context=context) return result + def translate(self, cr, uid, model, id, field=None, context=None): + trans_model = self.pool.get(model) + domain = ['&', ('res_id', '=', id), ('name', 'ilike', model + ',')] + for f, info in trans_model._all_columns.items(): + if info.parent_model and info.column.translate: + domain_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0] + domain.insert(0, '|') + domain.extend(['&', ('res_id', '=', domain_id), ('name', '=', "%s,%s" % (info.parent_model, f))]) + + action = { + 'name': 'Translate', + 'view_type': 'list', + 'view_mode': 'list', + 'res_model': 'ir.translation', + 'type': 'ir.actions.act_window', + 'domain': domain, + 'views': [(False, 'list'), (False, 'form')], + } + if field: + info = trans_model._all_columns[field] + action['context'] = { + 'search_default_name': "%s,%s" % (info.parent_model or model, field) + } + return action + def _get_import_cursor(self, cr, uid, context=None): """ Return a cursor-like object for fast inserting translations """ From a652cc9ef0e78692b2c37e992acf7463580ab490 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 31 Aug 2012 11:54:00 +0200 Subject: [PATCH 19/70] [IMP] sale, sale_analytic_plans: add missing fields in sale order lines, and make list non-editable for group analytic accounting bzr revid: rco@openerp.com-20120831095400-gaztg6293sz43pd1 --- addons/sale/sale_view.xml | 4 ++-- addons/sale_analytic_plans/sale_analytic_plans_view.xml | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 8e964fb5b88..922c3d90d8b 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -262,8 +262,6 @@ - - + @@ -281,6 +280,7 @@ + diff --git a/addons/sale_analytic_plans/sale_analytic_plans_view.xml b/addons/sale_analytic_plans/sale_analytic_plans_view.xml index 6701ede5ae5..6c788866520 100644 --- a/addons/sale_analytic_plans/sale_analytic_plans_view.xml +++ b/addons/sale_analytic_plans/sale_analytic_plans_view.xml @@ -22,6 +22,11 @@ + + + + + sale.order.line.form2.inherit sale.order.line From 5426eb7508768f954ac1d1e78ef20a9c0d8fd736 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 31 Aug 2012 12:05:35 +0200 Subject: [PATCH 20/70] [FIX] sale order: fix order lines in form bzr revid: rco@openerp.com-20120831100535-1awx1kj0ezrzw38d --- addons/sale/sale_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 922c3d90d8b..a2f44034db3 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -280,7 +280,7 @@ - + From a2aa1dfdce68b3ef0ec41ad085b506fd8735c6b1 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 31 Aug 2012 12:12:13 +0200 Subject: [PATCH 21/70] [IMP] purchase: add missing fields in purchase order lines bzr revid: rco@openerp.com-20120831101213-cueqapr741v9ntzo --- addons/purchase/purchase_view.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index dfa4c5a0651..35882574619 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -216,11 +216,14 @@ - + + + + From 7829c44833ef624d8e3d24369655164312366c41 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 31 Aug 2012 15:50:29 +0200 Subject: [PATCH 22/70] [IMP] account: make the lines in invoice form editable, and add missing fields bzr revid: rco@openerp.com-20120831135029-dki57juih0qcw5as --- addons/account/account_invoice_view.xml | 33 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index f638b51b4e1..610485ec3a0 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -191,17 +191,23 @@ - - - - + + + + + + + + - - - - @@ -342,17 +348,22 @@ - - + + + + From 67da3486c7c0785d1b9130ba4d9eb2c574eb8958 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Fri, 31 Aug 2012 18:33:50 +0200 Subject: [PATCH 23/70] [IMP] Remove demo users bzr revid: cto@openerp.com-20120831163350-gfi23hw34ltw7v5o --- addons/hr/hr_demo.xml | 115 +------------------------------- addons/project/project_demo.xml | 85 ++++++----------------- 2 files changed, 23 insertions(+), 177 deletions(-) diff --git a/addons/hr/hr_demo.xml b/addons/hr/hr_demo.xml index 20d3e093505..8cb5ade52fe 100644 --- a/addons/hr/hr_demo.xml +++ b/addons/hr/hr_demo.xml @@ -4,107 +4,6 @@ - - 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 - - - - - Fabien - fp - fp - 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 - - - - Antony - al - al - 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 - - - - Minh - mit - mit - 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 - - - - Nicolas - niv - niv - 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 - - - - Stéphane - stw - stw - /9j/4AAQSkZJRgABAgAAAQABAAD//gAEKgD/4gv4SUNDX1BST0ZJTEUAAQEAAAvoAAAAAAIAAABtbnRyUkdCIFhZWiAH2QADABsAFQAkAB9hY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA9tYAAQAAAADTLQAAAAAp+D3er/JVrnhC+uTKgzkNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBkZXNjAAABRAAAAHliWFlaAAABwAAAABRiVFJDAAAB1AAACAxkbWRkAAAJ4AAAAIhnWFlaAAAKaAAAABRnVFJDAAAB1AAACAxsdW1pAAAKfAAAABRtZWFzAAAKkAAAACRia3B0AAAKtAAAABRyWFlaAAAKyAAAABRyVFJDAAAB1AAACAx0ZWNoAAAK3AAAAAx2dWVkAAAK6AAAAId3dHB0AAALcAAAABRjcHJ0AAALhAAAADdjaGFkAAALvAAAACxkZXNjAAAAAAAAAB9zUkdCIElFQzYxOTY2LTItMSBibGFjayBzY2FsZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAACSgAAAPhAAAts9jdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//2Rlc2MAAAAAAAAALklFQyA2MTk2Ni0yLTEgRGVmYXVsdCBSR0IgQ29sb3VyIFNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAAAABQAAAAAAAAbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWFlaIAAAAAAAAAMWAAADMwAAAqRYWVogAAAAAAAAb6IAADj1AAADkHNpZyAAAAAAQ1JUIGRlc2MAAAAAAAAALVJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUMgNjE5NjYtMi0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLXRleHQAAAAAQ29weXJpZ2h0IEludGVybmF0aW9uYWwgQ29sb3IgQ29uc29ydGl1bSwgMjAwOQAAc2YzMgAAAAAAAQxEAAAF3///8yYAAAeUAAD9j///+6H///2iAAAD2wAAwHX/2wBDAAUEBAUEAwUFBAUGBgUGCA4JCAcHCBEMDQoOFBEVFBMRExMWGB8bFhceFxMTGyUcHiAhIyMjFRomKSYiKR8iIyL/2wBDAQYGBggHCBAJCRAiFhMWIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL/wgARCACvALQDACIAAREBAhEB/8QAHAAAAQUBAQEAAAAAAAAAAAAABgIDBAUHAQAI/8QAGQEAAwEBAQAAAAAAAAAAAAAAAQIDAAQF/8QAGQEAAwEBAQAAAAAAAAAAAAAAAQIDAAQF/9oADAMAAAERAhEAAAHJi4NLM9joubaLWJH5KivIcgZQuiC7fnsLxL2EGq4E+uEpUupdwu/Vy2MpTK6G6MM2Uywau8QrBhOOXxpaWtSy8iJIt5GJJwhaTBtdwoa9g7U2lG2lUNrWnngRlRxGcuC6Mdx1DdMZQrTOMTb0CwIzq6o7UXIX45DSFT4v8uBJZhUo5BT1wCnQWVqqU6zTXWLTqlcSkIjrElsbSqgcY6HHmZ1seqj3G2PTIb46CklGiKvMR9R0BUCdADSxCIOx7dPA4MQpbLqLUrWQCYX3MiVFeOKq6KaK03PCWzpu29YoDLiFnVN0ELk+BXmqoUuGAr3FDZhBIwqdySBDi4ySUQuil+Ca3kmnx53oeTdURYUmQi2JVVuC7WwVrWQ6RHs1amtau/JRhJlkqterH9DwEo80WnWXx5IL0OH0qVjJ9n9Jrdj+V9Et8kcBPKahLs42iW03NVXcaRzex9BV+Z0FYH+XIU/PzQs8P3hVB5mGKZLL8FWa8rpXSc007MqLzvvI3lJ4GlWlT6fXIRH9XhKKe6Ho9klhaZei2tlVuBR4BbZfhCg36SBwcxhmntgZJU6QXY3v2QEDvFpRuc97ZcuFPWilEL7wH4EbyVdm1smXf5bfGm79K/P2/wB+Ga2w6whsWtGdXrjuuq87PgFcCI7yNE+50ZRYJWjA4bsuPPL2rBMOuukqa2savjeN7pGN24r9Evhhjfk7Tz0vOu7fihCAc3Edsx773PRHU92UpCti5dTKdKVpSZuhDjO3kqTj2VE6GNNWxc+pY4lDt/XjWOT64jo/fQdsU57nPT3OpBV5Pjl9T3D/xAAtEAABBAIBBAAFAwUBAAAAAAABAAIDBAUREgYQEyEUICIjMRUlMyQyNDVBRf/aAAgBAAABBQJh1JGfpCxR/oOxOkLDXLIz8VNYc5GYlhl+kva5OPKXn6hd6XrvXvSwKvehnV+3K+6ojtiw/uh2fotmi4t3JalGPZGyUaTWMcbdbxmJnJzzxlZJxlEpLmShy5hB7V5GryNThC8qA/a/7Dkpqcf65aRzdpHLW3ts2nDH0YRXhsTMEVg8iXoHk1v0Sl6L0yQ8g9zZI2hsPxtVCMSI26rXeWKROGjV9wKX89gVU1NdUrXEWQGNKCuDRHvsCg7k9v8AqCVW/wAb/wBCoNxE7VP+MIVZLC/TJ1+lzqfHWGqm0xZQysiFjKQKW0HiSw0IWmFWvdaP0bHaL3JVgZJX+AgQrMAOPgKFONvakfqCota5eJi8Ma8MadCGZbIw2JHOY/dSo+WOWN3NrHKQf0uuInP0KEbe0luKbZn5M/xjasB+Oc59RVTqwPzjvz3s/ShKArb4nzNDK+LemuCIMql1G5xJ7M9IyMONZQeW/ir4WF2O9UlEdTLHf3d7g3TltFwMp5zTc38ncmOPOk/+vzEXjuL/AKoP5MhJFFiqEXmi+AroVY2gKlibN6CvjYBjzSrxxWIfE7sfavxOq2IH7lmglEbSQnS7dhmfdyTfPiP+FEaAOqkcj7EYbLE2KHJyJld4ZbpfDu6XjDcY6bipJtqWUkdyHZOsdxP+KeWOk2o2GR3xPwsnKP8ATAoY+T5g1pGzWpY15aC2JS3mtD8k7kXue7pJw8EganjRtTsrxTZzZGVtcMbA/JZiO0/HWp5obTjChEuQjD5A919s2Pdy0BK4JkrQ7HWqETZMnXBnyYIbBbup0WnBYCWSvbeNh6yMZkpaDe3SY/ds3H+98SEyUCOScaJ32zbfJjfkb2xtmRleT+QKDflbLuCxO0K7kI42H8rpL/adQt1nzoKN3ht2HeabWu1r7nSfyN/KgnbHA6Zpdeg8F3fjrHOWBWkuTTlzi+Tt0p6y3Uzf3/x+w2SaUk79lcUBz6O+YtJXicsuzcsqaPtnij36V9ZfqYfvbf761yaonvMkmwtqnC2XowjXygoO0A7ayB4RlRJ2gt7W+2ArEYeWlWsx2uma3OTptzXO6YlCPT9kKLA2HPqV2w47KUhj7x+VkEjlFj4XxXpfJO53EQkmVwG/WtIDk+GIV64PvW06vyM+o2s+okpjtO6naBlz8uKsfS7HQPIOkGl5cfe+TQPZesPH5szz97+246kJ9WXaQTvTF1J/P2PejL4rvkK4enPTWFx8Lk8fbLOKx04q3YuoYy6Jwfj5PcO/UkfJ0EBlfaI866jH2+x7j0WzyOa5zFzDV5XIyOXkcVvaB0WO2MLfjOPHuqw/TI3kowI4i7k9dQDeO+aCwGxH8u9/NA/Tqj+Ela6A2M9rD9V+2YbyxHbX099po2SnI/LWfyDXbjrz67WX7W+1tvko9t/T8n//xAAjEQABBAICAgIDAAAAAAAAAAABAAIQEQMSBDEgIRMiI0FR/9oACAECEQE/AXoyzESLRxIiouKh/SC1C190qRTxJMWn9RssZtyddp10vdeNp3UsNFbBFyc71LQD2iILvrfgbai9GyIDfraulsrK0LmGoBj5LFFekXILYpuNj3LNgGNuwjhamy7oIcIn2Ss2MM6gJ0Nhhorke2Q3LphI/qxHbACuVRFw3tEwJ+T6alWnLiZwGlhXJeC2vFsnqNG/ty/EFkyB56WEMeKIWRmjqlvfhXgx2rrXK9kGCh4//8QAIREAAgICAgMAAwAAAAAAAAAAAAECEBExEiEDIEETMlH/2gAIAQERAT8Bju5Nom8s4o48SPTOXdKWKjsb6Ms5PIq2hGCKyJHFC3WCUfpG/tIVK3oSvGKbawkfq6j2YHWzB9HUdnE4xE8Omu641gkuzBlxQptup/MH5kiM+V4VTp6IbqMctEupHjENHH6YHeO81HpHki85IIjSqerVcv4diWBykiLys19Ja9M+j7PDqkPXr//EADkQAAEDAgMFBQUGBwEAAAAAAAEAAhEDIRASMSAyQVFhBBMicZFScoGhsSMwQoKSwRRDYnPR4fCi/9oACAEAAAY/AghgPM7FvReExZWMNKAdwRAHFMBwg7VjLfZKAnK/kU85yOmAw/NjB4rPTMcV3bDPtPUtZJ5laKKgQLD4UDKE6K+FirrVarVS4AnBqCyUsmU3uF/L/St5v6UWmpwjQKi0Eklg8SaOPFQ0Xxyu0Kex3AWV9g1X3bC0PomPZurKTdTTNvJdEEEMT5Kkzg2+0yoNdEcQvIfuneSZ5JyPvYEdcPs4tqtQtR6JuQF3ujRNaRfKpquhFragVl4jhI54A4N81eSOUrdUAv8A1FbvzUNzAdDg4YPzAFbjfRbjfRbjfRUXNEBzSFmp08zY5q4Ce46MGHD0UFdUydcBKeW/BDxn1TZ9lEB5jzUvMmcB1QVT4bFN/suUuROnknXbcSbqcBTZvOMIsI8Q5oTh8EWNQqNY8t4GF+RXdrqm4N88KmxUjUXVjwV1LBFrxhdUneyZU8KgnYbI8JdCbQY05iU7vZLRpdbnzUDMB72D6vZg0hh0J1TabqcZh4p1WSlTDf6uK8M5eeMcEaZ3TdpV1na0QvFGD6r9MpDf3XZ6zJJZrjqFPHMI9FSFSHOLiBPwTpcwANs1o4q8NHVAVHtLl9m7M3mi/u4LnHx810RUcNjtOffZU8PRRxCgnDoqRa1rmt/A4SE40mhtPupAjCfwjVQ1ZeOb9lTdUzMDDI5qW0785koz81ZS8knqu0tvMjyxz1TDVHZqfxciHOZJ4huio0qz3OYTLr8FVpVGzByO+CkCCrFXx7plV3dVGacOqthLmz5r2avN6jvQfJfZX+CzU2HLzUHXBtGpXIpv/lC914cKjWiSRYK2FQ8qJ+oXa517w4faLwY9krf9cbN8K8ulrW+GeaPTBtTMQ6ZkcE19iCOChFs+Iq2Fb+yfqF2rzB/8jBrnMztbwRc1mUY03ey1v+NtzXficEVUaN3UIEawmta1jDFyG6qX1HH4rXGp/ZP1Cq+636YOFCm5518IlXx/L9HbdsKbxxsgwaK87LutI/UJ3uBN80/uXQHiHSnPfEnF/Pu6n7/cWBVOTJldSiMbYUXE7xJWXtFJtT3kHdmqPp303grdqn8n+14e0MP5Vv0j8T/hfaOYxnOZX8CHS1zXNzHqjQD89pnLG0zLTJzaJrqvamtceHJBsyGfVX3l5q6jCG6nRUqI0pMDU3DUqJvyhXVkCg8fjpA/XadQeMzNVPd+hUqSrLW+Fl2Vp9vN6XT/ACTHdV54dTgOuHZz/RH/AHrtU3dYW781LlDdFZfh/UFlHJaj1TK28W8F46LhLYs6UxzdDdNdgXO0VtFlbusth2V3vD6bYdm16r/Ss354WKucZQ7PUMPabI7BPPCkeVT9tvK7h9xHNBZKu7zxd6Y1f6SD88Z2ev3AOADtMAMe0M5sOI2f/8QAJxABAAICAQMDBAMBAAAAAAAAAQARITFBUWFxEIGRobHB8CDR8eH/2gAIAQAAAT8hufeWQUv7Er9AFsqF315EwBFtnMx28VfvLTq6IHBbZgWQpUwRQGNxd+5AcHgnLBQcM3Besqz45/5CEvfuMrTroDgzol030l57QcnvFZ5/Y9SnThGI1suDP9zIMBm4vifMAFzWSVvEYgp5iWLffTzFpdt4YyHaOu4COGNRBWQlxsnVU9J/jyv/AIZi/rO4LE9GbuhB+p+JTaxvLfz2ijinu/uZeDwJhdKVFx1qCXfyzaF35jmM897AHcGWiSgogrkxQm7p5SwyvPxHdcTcLxAVYvMaErNBdegCcB7E3GoKbKgLtEjgb6o/BxCPo5zC/rAq2rfEv8xXv6TCMwtqYC2wO2Kdba0CcWqxEw8YlaRlXvDGDDkIPScJlt+79pb+6Js612jvovRyrrzTrxuP1fWB5CsFZY1RlEJ4uUk6dZ0kZSUB0idZrrGBopCZNSpQFvJDQwUHAi2ZuY8tT9bKgh0JLWu2C/DFPT2cMeTz+GC4pVWX1n+Yn+AleviQluFOpHJh24e0M8s3hmBm43EOtS+beYXt0+8sl7cDFec3iLQVABpT9orNOLXFFiWHl6K/ErFziAL32XsTiUjoSL9PMV/o5/hntxQ+GGqe0UKK97MPL2spdsqXh8xBZNrKQgyQ9moQVddPRjthGNULBhWkLXPnPwjZ7N5agwOsNS5+EOHoxfAfmDLlxuJae2YlIKNCxhLcA5d4LbEttCU8L7CC5NHRzz+95nFytGaqdXGVvzMAyt4ARmxqB2PJ+9Yt/wBpeEnAvRRtFgq6EwTw858+YD8RWvfcIS6m3WXLgoqrHMyKe2IKHOC7GWWkGcdcQvbzMFV5hr8iKYoBB2p+pL2m1w9s9pfHtXlcA+/iwBoU1W0yNly4fG7bYXnNJiVa93T09q8QFUCgalzu3oTjmKK+iqwfSByw0qHIaj6T6oMXdPX+oe8OwaeMLqUulxEKlobVKBeW7uAAMtjsD+5c66/Ccf1LOzz/ADERkjD3nXmMmvariKRtry39dzgMsLbI8pT0uXGf+uI3ogC4y4aa1ynvr3h6k3dtUSr788JMu0xjiEuc8wfjapyarF+feFihbywuuHtGN+lUrgET4v2j+y8n7RZ8hDTkG+JbKo3mZMux9VVvfr2ljZYHmOlrAgCjCCsg86qtRyT5JfbXdFG4ikorYE8yBfufj+CdJkdUMaZcdhCustTEDsiRE4hXLRM5StqNnR7wIwpLxK4qMVn3lLcO/ot0M7jh9EICKyW5w/nMyinARexCC+39Gn8Sl3Ob4PgjEq28Qt7OusMHxCrmUxVqsutRZ1Jp9IoVPmMqGI7+6n0QsS9szxexUHXEtgImElcTFBklrXC/X2/jqXNGnYhO73PsJ+ZdNRtg8zu6lerGDSu4yosvgwycV8X7xGsEAG47afNFSiZ6JUGB79KiL+NbnUHLEFrOxGxcP0P8i+5KObXEBXWY9CdIzG+sZWV4eX+oIOGkWnh2Tvu7g8c/WUoO+XTkvKIxj25Ag5J9of5HLkjcZ3j3mALL6n3YM+j6eYHQbaYa/WGSK3E8MsMsAymur7B7TMbPpAG+Et7cT3HWBMxCJWoHWVO0D2K/E90siC3sxDvRzOvPQi63xUK+k3Ov43NAn1ofiPPo+hFtGgVddfafSqgfAzde0Y6eYAeiBse4RWwY6wrqA0gC/TtG3YT8TKT4Mz3Ey6g0zA2ufos/lD2bi8+nD1c682h0Y9X8IUGA7y80Ri/8QtzAiNtRbx8xzn2Qwk7PTsr8xTzt+RqJtZUZ3kQveWToSpijtjDqKR1L+nf0e3rt6ESCQMLC42UXof8AVxZh9/6VF6cHgv7y8Kj8RRdj3zFbRTTZK8SxSBfSb/v0a6KNcS9GCrjL8r9PGL9Xozn1Mw+DamZt0S2N8x3iXK9cn1D+VL2UzHTMO5tCYY7whr0z/YfwPyxjqae6vWpjuBl7CLZOHzFmceo02TqldMqfEq8B8Qee0odP0XDc6LzWI7nEcDv6VMks5J//2gAMAwAAARECEQAAEBdEOjLEJ/si44FIY7sRfZh+We9X51X0GL/Me04gpkGvqiG2MaP/AK53RzpXcZRfettJIrv0dBr4MUxqzvmNNzBW+fC9FStO0Gg8a5N8Dj9HtAVqRV22QzmNXu5/d5fhG5AHJyv/xAAjEQADAAICAgICAwAAAAAAAAAAAREQITFBUWGBkSAwccHh/9oACAECEQE/EF1kiiaRDSKILJqyLEibjPWJGqDTSXQ1LqkxBaG3Lgps2ihiEMtIbgGqXNLNkCUPEdjUivR1c1PA6SEoFGLZoHahKmIbTrSHs3BNwsd4ulyMWlxs9iYBpFTwDXZqj2iOd+/8K1+ysRG6is16V3BOk2x8C1oZ1+McMR2In/yhJIkfMr4IWl8+hIA+Bkkfs6Coa5uikfaSFc91GiN/0NOHAxs5ZWisnxfCbL5H9IXnpNcnPgWfHDUX6S9S9EJeGh4cvx//xAAfEQEBAQADAAMBAQEAAAAAAAABABEQITFBUWEgccH/2gAIAQERAT8Qk48Ty9KG7mj2TvpDsk1++BDRftPUfqUSdUJgiBc5LNLNkQGR7ab1Cup8gpDbP26M8HUcQZBrkF5PcoH1y0QlGw41DODEkfaMOke+peyChDcf+N2VeuAAImfxfEndI2JliTeVlinh/wCjeANkXnD1Gm/Nl6ODuLpO7afBDUbY5DWR8jL07tfUXreTOFjCFATDvAOAHsd1ysbC1mC7s/yu5GxJ5Ds9uT+Qxl2Z9Sce6P42/8QAJxABAAICAQMEAwEBAQEAAAAAAQARITFBUWFxgZGhscHR8BDhIPH/2gAIAQAAAT8QyW4EtVIVpYQ+YVt0vm/zKJj/ADIir4gAgFCb/wCmsd4iAQtQyaCnZv56RDmzea5dXG4WV5AsVdH4MQJZ0EZOfuVNWmisr3413xGAbGjtnv3rEzb3RvKbHthIFFtSlzrj3meWk8wgLUyDeZamveULLLzA1T21+h36PZmFji4Bemh8Ye0y7wCpEFnBLCN5ToJQ+Zjep+EoPAfy/mVDH7hALmVvO/HmIML2WBh1KFa1004RGviyDoHlynAXiYoEtOy7zMJY9QvC48/ESqqo4T/kEpQrnlg/aehGVhbVNa+IE1tUVZA466jZ18hd1R/cRJKpa2o9DtAdgoFZOmvSYDwgXEFT7Lynya4/RF/2Jd1TLrY6qMAq2+CewwWvpSQQF2DGH8xMq66DA8n85ib4Geiz1vJ+JgT4Ot8BYxycxuJgUxgqugOFy2Zg1KLnKtXcopZ2YKTglujOMYsgNcOrl24LDGeKS4YPN/3aMF1LFO1n/wA9YoFg6uczAWNHpWT6lB2gqcX/AN+IvcVVRbbuuTXSGRo5bP7lFxFHHLH1DEXRDY+JTjXLfP8AVAWYwBH6xFDdrfk/8m3Vn5qYeg+YJpd7z0/5zEGqzw78nruEcNQUfcemJY4muDYGH1MKctlRQUa2kpGZyhUDYYvdRSpqLZTyJAoZpYXnfETQ0DmMm837wxZYT4qIcu1MmlTZF7R7/wDIKr0s2A9LL/LnyaniKlyCgt06ENTn9kP1KKefwxJAx+XVe0G0fSzvz0nVIoGzAChcwmgK5iESTK0XrjZHvVcy+kAAisE9NS/K0u+ubjFFak5fJmuDzEWEoJyQgrBtL73GxxbdWW08Z+WWAZpuAlogcC5fuWVI4YC3q84R9YqGN+f7gOi6AD2uJdgLa2L7UrRL67iYGUOvIPRT8zB3lECThd09Xifz34my/wCrtOI/H6oqanSjI3XcT2gkxmO1z1e0IAtQLrleBLKjOju79pxCO0upRLo4ofe4hIW89kxaWu45eSAD2IUJnEby2YRF2qfKvmKcPBoiUdcdfWJKuigyXmOJK3C3msJGWDiXjmNnuqlgaxnHDv3+JQnf8ftLFkQwuD/CWDoMOwi/UBkAWwkAIovsREbHBrQq7ukJjAjlICJfcmsJb1q9okEoKAu7zT04IBDQdH9/XFcDEFqWwObz/wAlqxdNXVz3rHpFJqvC7lwZBH2loWUa7NJnLyC6oZXg13ZU8hX0H+V14AL1x+YVKUo/X5igdVjBCCGoKAgvY+gxDJYDMokB268sW0IihgHqihgebbuATJu+Lmf27g1VLfa0hkqe+dLN5yXrgcSsAaND0mkMTJo+sJZnChZYjDurhDdPbXm76ta29oli6CwI6HIUPa0UdFcoH5g/XwcPn/BgPsO9yYukcod7xMFECjirZONK4iRfFnFdXk+WYPkGn3U4+PthYJSpTVMEFv61OAAMo7fIlekowwC+8bLJUGvFxJVbTMxQpKd3WBfEYXg6vHvQKB24ohPEBNzedw9SioDvZVfHmw/MAq1ZWaV/oTtnjCABM8vxKKnFrymay0nv6yoGiRV11w18kJ1Gaxb7D9sG2VlAVXAOTvWM3woVtwaoIZJdLhdnrYWKdQkMC9BTiBWYEzi/EErn0iKHM2kMM6mUB0duYeMvW3mX2uD5uaHTF6lmNLmX4tkjXEoSXWQdYYFMTbKaG/LQjTshVwKr5lCy+1z2GnMXCMK93wM4eCXVWLkqg9vtCmEB2Sr5Snl7QCwKttVXNK1ooqAE62Gs9K5+IjMnAqL74iFRtRfMKVqWkKAHTku8VVU2NsAepdRqRbvrK9qFtlugI9iZBUnmn7gFWkouzr3GWaRLgwrpQpWkQKKgYUg7KU12XcQoC8KV/v7iJfsHMByI6SkQJwEosoYaHrKzRLHSGAtvDQekQtgMF1EWDu0+TMu4VZAXF8NnGWu8WSYFhZ6sweWnpzGYFi6L6hH3hKDDmX4Ny5FUtLPQWvi5Y11JtmXAC10S4IgVhWXlou7uKcQmUrnb63KoD/szkXAtuFK5BXvraRMU6u19YFzcI4tIvFhcDKBV5EWz4jtjRARc5I4Z2VWPeEBc7UySzKsfHEAQtsDpnfH/ADBWPeYeJyKkyMS1lHf+7S2CHmZLJURimWhawdojXqe0D8RmaVZEEQRUQ2M9uoQL4JgQTArHtOEvcceZXBWDKcKLDH2cy+wtsIBfQ1G+OIlC3IwBCjW1flYsg6zUtjCmIqLrW3sgAVDXPoz7QYWPMHOPEJAqt9/pl/8AIAOsF4PrBZvPqq269WvaKEkbG8wA0yRcmg7NnpEIK5oZLZ+MRFfIVgzdi3xXSoFUu6o+xD0mUUYVbUy4ilw1Nxu4iIFBxrmr8Q0swMyhDLHRlAULd95dAVgpE4ijZ6QI+pOfF3XaxzOZ0jLsJszNrDs94QLJL/3T9yxBTUTFDnyvWK0ShfdlQwK62Jp4mRboOIijNjnROzXaXlG0M82/iNxr9+mIDdmQ9EJzkqEbHJvee8JA5RDVcRIyiqwfmI4t1GkNZ7TOPeM6RY59olCtN3GndZRO52gl92a1WXEOxYtr4iUeVjV6PQmXMBYE3NiO5hLy4l8EnACrmRGYBqr9/UhCPcA9fpElFOXRphZlQ9VKAZOQrtVpkLVlKr0WU+n4HfP5QjOcafgDL5YI2wZcLAYo0Fe6y4aeMFLCvycwTDXSczRhMeEYrL0dAtRaHXLhgCVtWsbAtnipQCRvlWHYP08INDddL/EI7oGhm+h7ywBRp3mbAF8U47wmQso2CtBMlgA00W+XvAAvB+thOMyokWOij9kVUkKAWu+IrIBbgqDZYyrrLs013zcoIbD1T6Jln+HidK/wZGrTWXkU7OfMxnBMDXOABvpBCVug9esQF5J5gS6sVAJMqacye1cEzV7SgquHSFr9fWVYfqQBBDOnk6IEZUaInmUGqgqqaNSxHO5lINY9jLBAxGWlJxGyuLFB0mqhIouSrw780+kW/Z+yJnmWPR/2KAU/MLFrtVAeVoIWzHn90MoHkJIi5djrEirPKew3EmScd7ds92uJRKXRZLmlJQ3s3JhioXSMAeCZlqdjUCWFl4P3CaoIHXb8s4I9Jhh8iPtL/wAVj/WAlER7xPELBEyEt2h+1T2lsQ1ZnAhmANgGHujwuu6fwjFGld3vFcCzoRg8kNNh+GGdrKy8C+G32EdbktPeKR2lBbeISyPQZmRdW3mOT9xwDUq4FfwRscxYGXY/1Uq8xvBAJ0uz7go5SrtnUoJ0pbxKWFq9ZKpjmYHeJ1VLj3lgvSvhmVMUYgvibMjn15gOITNI2JB8pNOE/tgq0dJArPRFsPtBC9O3+L3ay74JZBJd0wWOTEmWlmb6Z9JyVmXyf35iW9ucj+e0swp0xVWM3HXadInIGZ0CwOgcogLFxYzlzKa9D1lL3StI4URvfWCz17gJXuR5FZGmLnLOlT71DJ/gswwbkZ//2Q== - - - - Christophe - chs - chs - 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 - - - - Quentin - qdp - qdp - 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 - - - - Fabien M. - fme - fme - - - - Francois - fpi - fpi - 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 - - - - Julien - jth - jth - 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 - - - - Nicoleta - ngh - ngh - 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 - - - - Valérie - vad - vad - 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 - - - - Aline - apr - apr - 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 - - - - Phuong - phu - phu - - @@ -193,7 +92,7 @@ Fabien Pinckaers - + @@ -205,7 +104,6 @@ Antony Lesuisse - @@ -217,7 +115,6 @@ Minh Tran - @@ -231,7 +128,6 @@ Nicolas Vanhoren - @@ -244,7 +140,6 @@ Stéphane Wirtel - @@ -257,7 +152,6 @@ Christophe Simonis - @@ -270,7 +164,7 @@ Quentin De Paoli - + @@ -283,7 +177,6 @@ Fabien Meghazi - @@ -295,7 +188,6 @@ Francois Pietquin - @@ -308,7 +200,6 @@ Julien Thewys - @@ -321,7 +212,6 @@ Nicoleta Gherlea - @@ -334,7 +224,6 @@ Valérie Descamps - diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index aaad6b167a0..320ad72c0d3 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -7,49 +7,6 @@ - - Nicolas - - niv - niv - - - Antony - - al - al - - - Quentin - - qdp - qdp - - - Francois - - fpi - fpi - - - Julien - - jth - jth - - - Minh - - mit - mit - - - Valérie - - vad - vad - - Contact's suggestion @@ -93,7 +50,7 @@ ref('base.user_niv'), ref('base.user_al'), ref('base.user_qdp')])]"/> - + Implement new website for Sale and Warehouse Management for a customer. project.task @@ -102,7 +59,7 @@ Research & Development - + project.task @@ -149,7 +106,7 @@ - + 4 Prepare Requirements Document @@ -159,7 +116,7 @@ - + 4 Make SRS @@ -168,7 +125,7 @@ - + 4 Budget Planning @@ -179,7 +136,7 @@ - + 4 Develop module for Sale Management @@ -193,7 +150,7 @@ - + 2 Develop module for Warehouse @@ -207,7 +164,7 @@ - + 2 Integrate Modules @@ -216,7 +173,7 @@ - + 2 Internal testing + Software Install @@ -225,7 +182,7 @@ - + 2 New portal system @@ -237,7 +194,7 @@ - + 2 Document history management @@ -246,7 +203,7 @@ - + 2 Social network integration @@ -256,7 +213,7 @@ - + 2 User interface improvements @@ -270,7 +227,7 @@ - + 2 Improve+clean code and functionality @@ -282,7 +239,7 @@ - + 2 Design Use Cases @@ -293,7 +250,7 @@ - + 2 Dataflow Design @@ -302,7 +259,7 @@ - + 2 User Interface design @@ -316,7 +273,7 @@ - + 2 Set target for all deparments @@ -327,7 +284,7 @@ - + 2 Integration of core components @@ -338,7 +295,7 @@ - + 2 Deploy and review on live system @@ -458,7 +415,7 @@ Thanks, Ok, I have checked the mail, I will update the document and let you know. comment - + From 4da6c7b2bc55dba63d9b80417f35c79fe61e7b85 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Fri, 31 Aug 2012 18:55:21 +0200 Subject: [PATCH 24/70] [FIX] make tests works bzr revid: cto@openerp.com-20120831165521-6h5q0r2abgt0nlpt --- addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml | 6 +++--- addons/project/project_demo.xml | 4 ++-- addons/project/test/task_process.yml | 2 +- addons/project_timesheet/test/work_timesheet.yml | 5 +++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml index f4f9326890f..bf6f19b653c 100644 --- a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml +++ b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml @@ -9,7 +9,7 @@ - I assign this product(Service on Timesheet) and journal(Timesheet Journal) to employee "Quentin Paolino" - - !record {model: hr.employee, id: hr.employee_qdp}: + !record {model: hr.employee, id: hr.employee_demo}: product_id: product.product_product_consultant journal_id: hr_timesheet.analytic_journal - @@ -69,7 +69,7 @@ - account_id: account.analytic_agrolait date: !eval time.strftime('%Y-%m-%d') name: 'Develop yaml for hr module' - user_id: base.user_qdp + user_id: base.user_demo unit_amount: 6.00 amount: -90.00 product_id: product.product_product_consultant @@ -97,7 +97,7 @@ date: !eval time.strftime('%Y-%m-%d') name: 'Develop yaml for hr module' unit_amount: 2.00 - user_id: base.user_qdp + user_id: base.user_demo amount: -90.00 product_id: product.product_product_consultant general_account_id: account.a_expense diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index 320ad72c0d3..51dedd61c63 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -106,7 +106,7 @@ - + 4 Prepare Requirements Document @@ -203,7 +203,7 @@ - + 2 Social network integration diff --git a/addons/project/test/task_process.yml b/addons/project/test/task_process.yml index ad4bbe53bb3..e37b2116714 100644 --- a/addons/project/test/task_process.yml +++ b/addons/project/test/task_process.yml @@ -11,7 +11,7 @@ - state == "pending" - !record {model: project.task.delegate, id: delegate_id}: - user_id: base.user_niv + user_id: base.user_demo planned_hours: 12.0 planned_hours_me: 2.0 - diff --git a/addons/project_timesheet/test/work_timesheet.yml b/addons/project_timesheet/test/work_timesheet.yml index 2f75f908735..4867f92b4b1 100644 --- a/addons/project_timesheet/test/work_timesheet.yml +++ b/addons/project_timesheet/test/work_timesheet.yml @@ -6,7 +6,7 @@ name: Test Timesheet records task_id: project.project_task_10 hours: 20.0 - user_id: base.user_fpi + user_id: base.user_demo company_id: base.main_company - I check Timesheet line for employee in current Timesheet @@ -16,6 +16,7 @@ start = (datetime.date.today().strftime('%Y-%m-%d')) task_work = self.search(cr, uid, [("name","=","Social network integration: Test Timesheet records")],context)[0] task_ids = self.browse(cr, uid, task_work, context) - assert task_ids.user_id.id == ref("base.user_fpi"), 'Error, The User in Timesheet is not Correct' + assert task_ids.user_id.id == ref("base.user_demo"), 'Error, The User in Timesheet is not Correct' assert task_ids.date == start, 'Error, The Date in Timesheet is not ok' assert task_ids.product_uom_id.name == "Hour", 'Error, The Hour in Timesheet is not ok' + From 86e9df4c9cb030d2ff4d2a58409cd7dfe51a1c14 Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Fri, 31 Aug 2012 19:03:56 +0200 Subject: [PATCH 25/70] [FIX] Multicompany demo users bzr revid: cto@openerp.com-20120831170356-tgtyr7mipknzpohm --- addons/multi_company/multi_company_demo.xml | 43 ++------------------- 1 file changed, 4 insertions(+), 39 deletions(-) diff --git a/addons/multi_company/multi_company_demo.xml b/addons/multi_company/multi_company_demo.xml index 462a355e789..d120550e3b9 100644 --- a/addons/multi_company/multi_company_demo.xml +++ b/addons/multi_company/multi_company_demo.xml @@ -52,47 +52,12 @@ - - editor_demo - OpenERP Editor - editor_demo - - - + + - - sales_demo_us - OpenERP Salesman US - sales_demo_us - - - + + - - sales_demo_be - OpenERP Salesman BE - sales_demo_be - - - - - - sales_demo_in - OpenERP Salesman IN - sales_demo_in - - - - - - odoo_demo - Odoo - odoo_demo - - - - - - - @@ -17,7 +15,6 @@ Phuong - @@ -26,7 +23,6 @@ Francois - @@ -34,7 +30,6 @@ Julien - @@ -42,7 +37,6 @@ Aline - From ad9e544f047eb8759ab7b362e6e81042eba04c3a Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Mon, 3 Sep 2012 14:06:00 +0200 Subject: [PATCH 28/70] [FIX] Bad employeee demo bzr revid: cto@openerp.com-20120903120600-dpeq5gnnmn5qd500 --- addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml index bf6f19b653c..352861263b8 100644 --- a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml +++ b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml @@ -9,7 +9,7 @@ - I assign this product(Service on Timesheet) and journal(Timesheet Journal) to employee "Quentin Paolino" - - !record {model: hr.employee, id: hr.employee_demo}: + !record {model: hr.employee, id: hr.employee_qdp}: product_id: product.product_product_consultant journal_id: hr_timesheet.analytic_journal - From 279ef4d7490d7d4318c2cab1439a0c715876693b Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Mon, 3 Sep 2012 14:10:21 +0200 Subject: [PATCH 29/70] resizing of product picture bzr revid: mit@openerp.com-20120903121021-ilstibfz2oybqpc9 --- addons/stock/static/src/css/stock.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/stock/static/src/css/stock.css b/addons/stock/static/src/css/stock.css index 449c1102fce..1efbaf5e3c4 100644 --- a/addons/stock/static/src/css/stock.css +++ b/addons/stock/static/src/css/stock.css @@ -9,8 +9,8 @@ } .oe_product_img { - width: 150px; - height: 150px; + width: 80px; + height: 80px; text-align: center; overflow: hidden; -moz-border-radius: 3px; @@ -25,15 +25,15 @@ } .oe_product_photo { - width: 150px; + width: 80px; height: auto; - clip: rect(5px, 100px, 105px, 0px); + clip: rect(5px, 70px, 75px, 0px); } .oe_product_photo_wide { - height: 150px; + height: 80px; width: auto; - clip: rect(0px, 110px, 100px, 10px); + clip: rect(0px, 80px, 70px, 10px); } .oe_product_desc { From 8295b4f18192e97ce30cc75f7b41d0306a9e4b23 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 14:48:18 +0200 Subject: [PATCH 30/70] [IMP] ir.tranlsation#translate: create ir.translation entries for a particular record bzr revid: fme@openerp.com-20120903124818-myjy2616uv3blyki --- openerp/addons/base/ir/ir_translation.py | 28 ++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py index 231b9ba0e93..05f5071a2d7 100644 --- a/openerp/addons/base/ir/ir_translation.py +++ b/openerp/addons/base/ir/ir_translation.py @@ -331,11 +331,31 @@ class ir_translation(osv.osv): def translate(self, cr, uid, model, id, field=None, context=None): trans_model = self.pool.get(model) domain = ['&', ('res_id', '=', id), ('name', 'ilike', model + ',')] + langs_ids = self.pool.get('res.lang').search(cr, uid, [], context=context) + langs = [lg.get('code') for lg in self.pool.get('res.lang').read(cr, uid, langs_ids, ['code'], context=context)] + main_lang = langs.pop(0) + translatable_fields = [] for f, info in trans_model._all_columns.items(): - if info.parent_model and info.column.translate: - domain_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0] - domain.insert(0, '|') - domain.extend(['&', ('res_id', '=', domain_id), ('name', '=', "%s,%s" % (info.parent_model, f))]) + if info.column.translate: + if info.parent_model: + domain_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0] + translatable_fields.append({ 'name': f, 'id': domain_id, 'model': info.parent_model }) + domain.insert(0, '|') + domain.extend(['&', ('res_id', '=', domain_id), ('name', '=', "%s,%s" % (info.parent_model, f))]) + else: + translatable_fields.append({ 'name': f, 'id': id, 'model': model }) + if len(langs): + fields = [f.get('name') for f in translatable_fields] + record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0] + for lg in langs: + for f in translatable_fields: + # Check if record exists, else create it (at once) + sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value) + SELECT %s, %s, %s, 'field', %s, %s WHERE NOT EXISTS + (SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s); + """ + name = "%s,%s" % (f['model'], f['name']) + cr.execute(sql, (lg, record[f['name']], name, f['id'], record[f['name']], lg, name, f['id'])) action = { 'name': 'Translate', From d5459171bd7cc19379fe897b10192ba3733cf884 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Mon, 3 Sep 2012 14:57:40 +0200 Subject: [PATCH 31/70] [FIX] point_of_sale: Show the Opening and Closing balance only if the session is closed bzr revid: stw@openerp.com-20120903125740-xxl4x298imiyo0y9 --- addons/point_of_sale/point_of_sale_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 0e906186285..a9abc545bc1 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -930,7 +930,7 @@ -
+
@@ -947,7 +947,7 @@
- + From 19ca7c3e4ed9201a75c9b26287ceb68f4ff3923f Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 15:04:27 +0200 Subject: [PATCH 32/70] [ADD] Add 'name' field to ir.translation search view bzr revid: fme@openerp.com-20120903130427-f2sriqp15c7ybuhx --- openerp/addons/base/ir/ir.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index fd4bb2f89b4..cecec8437c6 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1173,6 +1173,7 @@ + From e754257c0bd82ca8f301ba3617f7cf20bcf74b0a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 15:10:16 +0200 Subject: [PATCH 33/70] [IMP] Make the translation tree an editable list bzr revid: fme@openerp.com-20120903131016-a0ocg43lnnm2j9eg --- openerp/addons/base/ir/ir.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index cecec8437c6..09ff7c036f3 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1214,7 +1214,7 @@ Translations ir.translation - + From 06469d039f051e00c096ae31b480d4ee51bfbe85 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 15:29:23 +0200 Subject: [PATCH 34/70] [MOV] Moved Technical Translation to debug select box bzr revid: fme@openerp.com-20120903132923-uqjz5j7h562g3ji9 --- addons/web/static/src/js/views.js | 25 +++++++++++-------------- addons/web/static/src/xml/base.xml | 1 + 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index b83ddb1cc3f..0cd729fa733 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -749,6 +749,17 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ case 'toggle_layout_outline': current_view.rendering_engine.toggle_layout_debugging(); break; + case 'translate': + this.do_action({ + name: "Technical Translation", + res_model : 'ir.translation', + domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']], + views: [[false, 'list'], [false, 'form']], + type : 'ir.actions.act_window', + view_type : "list", + view_mode : "list" + }); + break; case 'fields': this.dataset.call_and_eval( 'fields_get', [false, {}], null, 1).then(function (fields) { @@ -882,10 +893,6 @@ instance.web.Sidebar = instance.web.Widget.extend({ 'files' : [], 'other' : [] }; - if (this.session.uid === 1) { - var item = { label: _t("Translate"), callback: view.on_sidebar_translate, title: _t("Technical translation") }; - this.items.other.push(item); - } this.fileupload_id = _.uniqueId('oe_fileupload'); $(window).on(this.fileupload_id, function() { var args = [].slice.call(arguments).slice(1); @@ -1219,16 +1226,6 @@ instance.web.View = instance.web.Widget.extend({ on_sidebar_export: function() { new instance.web.DataExport(this, this.dataset).open(); }, - on_sidebar_translate: function() { - return this.do_action({ - res_model : 'ir.translation', - domain : [['type', '!=', 'object'], '|', ['name', '=', this.dataset.model], ['name', 'ilike', this.dataset.model + ',']], - views: [[false, 'list'], [false, 'form']], - type : 'ir.actions.act_window', - view_type : "list", - view_mode : "list" - }); - }, sidebar_context: function () { return $.when(); }, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 623d87bea31..b163f99fab3 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -483,6 +483,7 @@ + From b83211505706971779eba2bd61c48d1ba8b46ca4 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Mon, 3 Sep 2012 15:45:33 +0200 Subject: [PATCH 35/70] [FIX] point_of_sale: Return the state of the session in the wizard bzr revid: stw@openerp.com-20120903134533-lqyay7rv7jkusde8 --- .../point_of_sale/wizard/pos_session_opening.py | 17 ++++++++++++----- .../wizard/pos_session_opening.xml | 6 +++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/addons/point_of_sale/wizard/pos_session_opening.py b/addons/point_of_sale/wizard/pos_session_opening.py index 4364998b6a4..d6f95cbb7fc 100644 --- a/addons/point_of_sale/wizard/pos_session_opening.py +++ b/addons/point_of_sale/wizard/pos_session_opening.py @@ -6,14 +6,18 @@ import netsvc from openerp.addons.point_of_sale.point_of_sale import pos_session + class pos_session_opening(osv.osv_memory): _name = 'pos.session.opening' _columns = { 'pos_config_id' : fields.many2one('pos.config', 'Point of Sale', required=True), 'pos_session_id' : fields.many2one('pos.session', 'PoS Session'), - 'pos_state' : fields.selection(pos_session.POS_SESSION_STATE, - 'Session State', readonly=True), + 'pos_state' : fields.related('pos_session_id', 'state', + type='selection', + selection=pos_session.POS_SESSION_STATE, + string='Session State', readonly=True), + 'pos_state_str' : fields.char('State', 32, readonly=True), 'show_config' : fields.boolean('Show Config', readonly=True), 'pos_session_name' : fields.related('pos_session_id', 'name', type='char', size=64, readonly=True), @@ -71,22 +75,25 @@ class pos_session_opening(osv.osv_memory): result = { 'pos_session_id': False, 'pos_state': False, + 'pos_state_str' : '', 'pos_session_username' : False, 'pos_session_name' : False, } if not config_id: - return {'value': result} + return {'value' : result} proxy = self.pool.get('pos.session') session_ids = proxy.search(cr, uid, [ - ('state', '<>', 'closed'), + ('state', '!=', 'closed'), ('config_id', '=', config_id), ], context=context) if session_ids: session = proxy.browse(cr, uid, session_ids[0], context=context) - result['pos_state'] = session.state + result['pos_state'] = str(session.state) + result['pos_state_str'] = dict(pos_session.POS_SESSION_STATE).get(session.state, '') result['pos_session_id'] = session.id result['pos_session_name'] = session.name result['pos_session_username'] = session.user_id.name + return {'value' : result} def default_get(self, cr, uid, fieldnames, context=None): diff --git a/addons/point_of_sale/wizard/pos_session_opening.xml b/addons/point_of_sale/wizard/pos_session_opening.xml index 9279d5fce45..6e44030e582 100644 --- a/addons/point_of_sale/wizard/pos_session_opening.xml +++ b/addons/point_of_sale/wizard/pos_session_opening.xml @@ -12,7 +12,7 @@ - +
From c1ec19eba9c8e44f96cfbd4cf462993cc399c921 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 17:21:49 +0200 Subject: [PATCH 36/70] [IMP] Put some translation editable list fields readonly bzr revid: fme@openerp.com-20120903152149-ss9j9e7xxcgv42f6 --- openerp/addons/base/ir/ir.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 09ff7c036f3..4fb3c82dd24 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1215,11 +1215,11 @@ ir.translation - + - - - + + +
From 203f4636d521386e0f1c0e17dce1e77e438749c1 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 17:53:32 +0200 Subject: [PATCH 37/70] [IMP] Renamed tranlate to translate_fields bzr revid: fme@openerp.com-20120903155332-nw2p14u8maywy7wm --- addons/web/static/src/js/view_form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 7975906e100..b0c8b6618ae 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1998,7 +1998,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w on_translate: function() { var self = this; var trans = new instance.web.DataSet(this, 'ir.translation', this.view.dataset.get_context()); - return trans.call('translate', [this.view.dataset.model, this.view.datarecord.id, this.name]).then(function(action) { + return trans.call('translate_fields', [this.view.dataset.model, this.view.datarecord.id, this.name]).then(function(action) { self.do_action(action); }); }, From 06e6bf71cc2effe244d5a392934a9b3abf93f35a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 3 Sep 2012 17:54:08 +0200 Subject: [PATCH 38/70] [IMP] Always update src to the last value bzr revid: fme@openerp.com-20120903155408-9agsj0y8y6g7ydsj --- openerp/addons/base/ir/ir_translation.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py index 05f5071a2d7..55902389ee4 100644 --- a/openerp/addons/base/ir/ir_translation.py +++ b/openerp/addons/base/ir/ir_translation.py @@ -328,7 +328,7 @@ class ir_translation(osv.osv): result = super(ir_translation, self).unlink(cursor, user, ids, context=context) return result - def translate(self, cr, uid, model, id, field=None, context=None): + def translate_fields(self, cr, uid, model, id, field=None, context=None): trans_model = self.pool.get(model) domain = ['&', ('res_id', '=', id), ('name', 'ilike', model + ',')] langs_ids = self.pool.get('res.lang').search(cr, uid, [], context=context) @@ -353,9 +353,11 @@ class ir_translation(osv.osv): sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value) SELECT %s, %s, %s, 'field', %s, %s WHERE NOT EXISTS (SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s); + UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s; """ + src = record[f['name']] name = "%s,%s" % (f['model'], f['name']) - cr.execute(sql, (lg, record[f['name']], name, f['id'], record[f['name']], lg, name, f['id'])) + cr.execute(sql, (lg, src , name, f['id'], src, lg, name, f['id'], src, lg, name, id)) action = { 'name': 'Translate', From ffc772edfd262a65daad316ffd4d2dc5c60d734b Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Tue, 4 Sep 2012 04:52:49 +0000 Subject: [PATCH 39/70] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20120904045249-1039twan4q8v5oip --- addons/base_action_rule/i18n/nb.po | 536 +++++++++++++++++++++++++++++ addons/hr/i18n/nl.po | 12 +- addons/hr_holidays/i18n/nl.po | 10 +- addons/hr_payroll/i18n/nl.po | 20 +- addons/import_sugarcrm/i18n/fr.po | 36 +- addons/mail/i18n/nl.po | 10 +- addons/pad_project/i18n/fr.po | 15 +- addons/sale_crm/i18n/fr.po | 22 +- addons/share/i18n/nl.po | 11 +- 9 files changed, 610 insertions(+), 62 deletions(-) create mode 100644 addons/base_action_rule/i18n/nb.po diff --git a/addons/base_action_rule/i18n/nb.po b/addons/base_action_rule/i18n/nb.po new file mode 100644 index 00000000000..7aae94c417f --- /dev/null +++ b/addons/base_action_rule/i18n/nb.po @@ -0,0 +1,536 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-09-03 16:43+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_user:0 +msgid "" +"Check this if you want the rule to send an email to the responsible person." +msgstr "" +"Sjekk dette hvis du vil at regelen skal sende en e-post til ansvarlig person." + +#. module: base_action_rule +#: field:base.action.rule,act_remind_partner:0 +msgid "Remind Partner" +msgstr "Påminn partner" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_categ_id:0 +msgid "Partner Category" +msgstr "Partner Kategori" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_watchers:0 +msgid "Mail to Watchers (CC)" +msgstr "Post til overvåkere (CC)" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_to:0 +msgid "Button Pressed" +msgstr "Knapp trykket" + +#. module: base_action_rule +#: field:base.action.rule,model_id:0 +msgid "Object" +msgstr "Objekt" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_email:0 +msgid "Mail to these Emails" +msgstr "Send mail til disse e-postene" + +#. module: base_action_rule +#: field:base.action.rule,act_state:0 +msgid "Set State to" +msgstr "Still stat til" + +#. module: base_action_rule +#: field:base.action.rule,act_email_from:0 +msgid "Email From" +msgstr "E-post fra" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Body" +msgstr "E-post kropp" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Days" +msgstr "Dager" + +#. module: base_action_rule +#: field:base.action.rule,last_run:0 +msgid "Last Run" +msgstr "Siste kjøring" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:328 +#, python-format +msgid "Error!" +msgstr "Feil!" + +#. module: base_action_rule +#: field:base.action.rule,act_reply_to:0 +msgid "Reply-To" +msgstr "Svar til" + +#. module: base_action_rule +#: help:base.action.rule,act_email_cc:0 +msgid "" +"These people will receive a copy of the future communication between partner " +"and users by email" +msgstr "" +"Disse menneskene vil motta en kopi av den fremtidige kommunikasjon mellom " +"partner og brukere av e-post" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Minutes" +msgstr "Minutter" + +#. module: base_action_rule +#: field:base.action.rule,name:0 +msgid "Rule Name" +msgstr "Regelnavn" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_partner:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the partner." +msgstr "" +"Sjekk dette hvis du vil at regelen skal sende en påminnelse via e-post til " +"partneren." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Partner" +msgstr "Forholdene på Modell Partner" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Deadline" +msgstr "Frist" + +#. module: base_action_rule +#: field:base.action.rule,trg_partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_subject)s = Object subject" +msgstr "%(object_subject)s = Object subject" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Reminders" +msgstr "E-post påminnelser" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Special Keywords to be Used in the Body" +msgstr "" + +#. module: base_action_rule +#: field:base.action.rule,trg_state_from:0 +msgid "State" +msgstr "Stat" + +#. module: base_action_rule +#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act +msgid "" +"Use automated actions to automatically trigger actions for various screens. " +"Example: a lead created by a specific user may be automatically set to a " +"specific sales team, or an opportunity which still has status pending after " +"14 days might trigger an automatic reminder email." +msgstr "" +"Bruke automatiserte tiltak for å automatisk utløse tiltak for ulike " +"skjermer. Eksempel: en leder er opprettet av en bestemt bruker kan bli satt " +"automatisk til en bestemt salgsteam, eller en mulighet som fortsatt har " +"status påvente etter 14 dager kan utløse en automatisk påminnelse e-post." + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_email:0 +msgid "Email-id of the persons whom mail is to be sent" +msgstr "E-post ID av personer som post skal sendes" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Action Rule" +msgstr "Handling regel" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Fields to Change" +msgstr "Felter å endre" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Creation Date" +msgstr "Opprettelsesdato" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Last Action Date" +msgstr "Siste handlingsdato" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Hours" +msgstr "Timer" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_id)s = Object ID" +msgstr "%(object_ID)s = Object ID" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Delay After Trigger Date" +msgstr "Forsinkelse Etter utløser Dato" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_attach:0 +msgid "Remind with Attachment" +msgstr "Minn med vedlegg" + +#. module: base_action_rule +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "Ugyldige argumenter" + +#. module: base_action_rule +#: field:base.action.rule,act_user_id:0 +msgid "Set Responsible to" +msgstr "Satt Ansvarlig for å" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "None" +msgstr "Ingen" + +#. module: base_action_rule +#: help:base.action.rule,act_email_to:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'To' field of the header" +msgstr "" +"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke " +"for Til-feltet på header." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_phone)s = Responsible phone" +msgstr "% (object_bruker_telefonen) s = Ansvarlig telefon" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "" +"The rule uses the AND operator. The model must match all non-empty fields so " +"that the rule executes the action described in the 'Actions' tab." +msgstr "" +"Regelen bruker AND-operatoren. Modellen må matche alle-ikke tomme felt, slik " +"at regelen utfører handlingen som er beskrevet i \"Handlinger\"-fanen." + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range_type:0 +msgid "Delay type" +msgstr "forsinkelse typen" + +#. module: base_action_rule +#: help:base.action.rule,regex_name:0 +msgid "" +"Regular expression for matching name of the resource\n" +"e.g.: 'urgent.*' will search for records having name starting with the " +"string 'urgent'\n" +"Note: This is case sensitive search." +msgstr "" +"Regulært uttrykk for matchende navnet på ressursen\n" +"f.eks: \". haster * 'vil søke etter poster som har navn som starter med " +"strengen\" haster \"\n" +"Merk: Dette er små bokstaver søk." + +#. module: base_action_rule +#: field:base.action.rule,act_method:0 +msgid "Call Object Method" +msgstr "Kall objektmetode" + +#. module: base_action_rule +#: field:base.action.rule,act_email_to:0 +msgid "Email To" +msgstr "E-post til." + +#. module: base_action_rule +#: help:base.action.rule,act_mail_to_watchers:0 +msgid "" +"Check this if you want the rule to mark CC(mail to any other person defined " +"in actions)." +msgstr "" +"Sjekk dette hvis du vil at regelen skal merkes CC (mail til en annen person " +"som er definert i handlinger)." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner)s = Partner name" +msgstr "%(partner)s = Navn på partner" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Note" +msgstr "Notat" + +#. module: base_action_rule +#: help:base.action.rule,act_email_from:0 +msgid "" +"Use a python expression to specify the right field on which one than we will " +"use for the 'From' field of the header" +msgstr "" +"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke " +"for Fra-feltet på overskriften" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_range:0 +msgid "Delay after trigger date" +msgstr "Forsinkelse etter triggerdato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions" +msgstr "Betingelser" + +#. module: base_action_rule +#: help:base.action.rule,trg_date_range:0 +msgid "" +"Delay After Trigger Date,specifies you can put a negative number. If you " +"need a delay before the trigger date, like sending a reminder 15 minutes " +"before a meeting." +msgstr "" +"Forsinkelse Etter utløser Dato, spesifiserer du kan sette et negativt tall. " +"Hvis du trenger en forsinkelse før avtrekkeren dato, som å sende en " +"påminnelse 15 minutter før et møte." + +#. module: base_action_rule +#: field:base.action.rule,active:0 +msgid "Active" +msgstr "Aktiv" + +#. module: base_action_rule +#: code:addons/base_action_rule/base_action_rule.py:329 +#, python-format +msgid "No Email ID Found for your Company address!" +msgstr "" + +#. module: base_action_rule +#: field:base.action.rule,act_remind_user:0 +msgid "Remind Responsible" +msgstr "Minn Ansvarlig" + +#. module: base_action_rule +#: help:base.action.rule,sequence:0 +msgid "Gives the sequence order when displaying a list of rules." +msgstr "Gir sekvens ordre når du viser en liste over regler." + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_range_type:0 +msgid "Months" +msgstr "Måneder" + +#. module: base_action_rule +#: field:base.action.rule,filter_id:0 +msgid "Filter" +msgstr "Filtrer" + +#. module: base_action_rule +#: selection:base.action.rule,trg_date_type:0 +msgid "Date" +msgstr "Dato" + +#. module: base_action_rule +#: help:base.action.rule,server_action_id:0 +msgid "" +"Describes the action name.\n" +"eg:on which object which action to be taken on basis of which condition" +msgstr "" +"Beskriver handlingens navn.\n" +"f.eks: på hvilket objekt som tiltak som skal iverksettes på grunnlag av " +"hvilken tilstand" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_ir_cron +msgid "ir.cron" +msgstr "ir.actions.actions" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_description)s = Object description" +msgstr "% (object_beskrivelse) s = Object beskrivelse" + +#. module: base_action_rule +#: constraint:base.action.rule:0 +msgid "Error: The mail is not well formated" +msgstr "Feil: E-posten er ikke godt nok formatert" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Actions" +msgstr "E-post handlinger" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Email Information" +msgstr "E-post Informasjon" + +#. module: base_action_rule +#: model:ir.model,name:base_action_rule.model_base_action_rule +msgid "Action Rules" +msgstr "Handlingsregler" + +#. module: base_action_rule +#: help:base.action.rule,act_mail_body:0 +msgid "Content of mail" +msgstr "Innholdet av post" + +#. module: base_action_rule +#: field:base.action.rule,trg_user_id:0 +msgid "Responsible" +msgstr "Ansvarlig" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(partner_email)s = Partner Email" +msgstr "% (partner_e-post) s = Partner E-post" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_date)s = Creation date" +msgstr "%(object_dato)s = opprettelsesdato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user_email)s = Responsible Email" +msgstr "% (object_brukerens_e-post) s = Ansvarlig e-post" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_body:0 +msgid "Mail body" +msgstr "Mail kropp" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_user:0 +msgid "" +"Check this if you want the rule to send a reminder by email to the user." +msgstr "" +"Kryss av her hvis du vil at regelen skal sende en påminnelse til brukeren " +"via e-post." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Server Action to be Triggered" +msgstr "Server Tiltak som skal Utløses" + +#. module: base_action_rule +#: field:base.action.rule,act_mail_to_user:0 +msgid "Mail to Responsible" +msgstr "send mail til ansvarlig" + +#. module: base_action_rule +#: field:base.action.rule,act_email_cc:0 +msgid "Add Watchers (Cc)" +msgstr "Legg til overvåkere (Cc)" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Model Fields" +msgstr "Forholdene på Modell Felter" + +#. module: base_action_rule +#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act +#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form +msgid "Automated Actions" +msgstr "Automatiserte handinger" + +#. module: base_action_rule +#: field:base.action.rule,server_action_id:0 +msgid "Server Action" +msgstr "Tjenerhandling" + +#. module: base_action_rule +#: field:base.action.rule,regex_name:0 +msgid "Regex on Resource Name" +msgstr "Regex på Ressursnavn" + +#. module: base_action_rule +#: help:base.action.rule,act_remind_attach:0 +msgid "" +"Check this if you want that all documents attached to the object be attached " +"to the reminder email sent." +msgstr "" +"Kryss av her om du vil at alle dokumenter knyttet til objektet festes til " +"påminnelse e-post sendt." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on Timing" +msgstr "Vilkår for timing" + +#. module: base_action_rule +#: field:base.action.rule,sequence:0 +msgid "Sequence" +msgstr "Sekvens" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Actions" +msgstr "Handlinger" + +#. module: base_action_rule +#: help:base.action.rule,active:0 +msgid "" +"If the active field is set to False, it will allow you to hide the rule " +"without removing it." +msgstr "" +"Hvis det aktive feltet er satt til False, vil det tillate deg å skjule " +"regelen uten å fjerne den." + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "%(object_user)s = Responsible name" +msgstr "% (object_bruker) s = Ansvarlig navn" + +#. module: base_action_rule +#: field:base.action.rule,create_date:0 +msgid "Create Date" +msgstr "Opprettet dato" + +#. module: base_action_rule +#: view:base.action.rule:0 +msgid "Conditions on States" +msgstr "Vilkår for tilstander" + +#. module: base_action_rule +#: field:base.action.rule,trg_date_type:0 +msgid "Trigger Date" +msgstr "Uttløser dato" + +#~ msgid "Special Keywords to Be Used in The Body" +#~ msgstr "Spesielle nøkkelord for bruk i meldingsinnhold" + +#, python-format +#~ msgid "No E-Mail ID Found for your Company address!" +#~ msgstr "Ingen E-post ID funnet for din firmaadresse!" diff --git a/addons/hr/i18n/nl.po b/addons/hr/i18n/nl.po index 9a16f1fc1fb..e63c2c1f1cb 100644 --- a/addons/hr/i18n/nl.po +++ b/addons/hr/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-08-26 14:02+0000\n" +"PO-Revision-Date: 2012-09-03 17:10+0000\n" "Last-Translator: Erwin \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:24+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -195,7 +195,7 @@ msgstr "Vrouw" #: help:hr.job,expected_employees:0 msgid "" "Expected number of employees for this job position after new recruitment." -msgstr "" +msgstr "Verwachte aantal werknemers voor deze functie na de nieuwe werving." #. module: hr #: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config @@ -710,12 +710,12 @@ msgstr "Ondergeschikten" #. module: hr #: field:hr.job,no_of_employee:0 msgid "Number of employees currently occupying this job position." -msgstr "" +msgstr "Huidige aantal werknemers welke deze functie bekleden ." #. module: hr #: field:hr.job,no_of_recruitment:0 msgid "Number of new employees you expect to recruit." -msgstr "" +msgstr "Verwachte aantal te werven nieuwe werknemers." #~ msgid "Sunday" #~ msgstr "Zondag" diff --git a/addons/hr_holidays/i18n/nl.po b/addons/hr_holidays/i18n/nl.po index ef84f17a58b..4c44ef380bb 100644 --- a/addons/hr_holidays/i18n/nl.po +++ b/addons/hr_holidays/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-02-19 13:05+0000\n" +"PO-Revision-Date: 2012-09-03 17:12+0000\n" "Last-Translator: Erwin \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:23+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr_holidays #: selection:hr.holidays.status,color_name:0 @@ -416,6 +416,8 @@ msgid "" "When selected, the Allocation/Leave Requests for this type require a second " "validation to be approved." msgstr "" +"Wanneer aangevinkt heeft deze toewijzing of aanvraag een tweede controle " +"nodig om te worden goedgekeurd." #. module: hr_holidays #: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 @@ -787,6 +789,8 @@ msgid "" "If you select this checkbox, the system allows the employees to take more " "leaves than the available ones for this type." msgstr "" +"Indien u deze optie aanvinkt, dan staat u toe dat werknemers meer verlof " +"aanvragen dan dat ze nog beschikbaar hebben." #. module: hr_holidays #: help:hr.holidays.status,leaves_taken:0 diff --git a/addons/hr_payroll/i18n/nl.po b/addons/hr_payroll/i18n/nl.po index 8e9c0b35b6d..2ad4fc5aa0b 100644 --- a/addons/hr_payroll/i18n/nl.po +++ b/addons/hr_payroll/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-01-22 19:09+0000\n" +"PO-Revision-Date: 2012-09-03 17:17+0000\n" "Last-Translator: Erwin \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:33+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: hr_payroll #: field:hr.payslip.line,condition_select:0 @@ -357,7 +357,7 @@ msgstr "Half-jaarlijks" #. module: hr_payroll #: view:hr.salary.rule:0 msgid "Children Definition" -msgstr "" +msgstr "Definitie onderliggende" #. module: hr_payroll #: report:paylip.details:0 report:payslip:0 @@ -465,7 +465,7 @@ msgstr "" #. module: hr_payroll #: view:hr.payslip:0 msgid "Worked Days & Inputs" -msgstr "" +msgstr "Gewerkte dagen & ingaves" #. module: hr_payroll #: field:hr.payslip,details_by_salary_rule_category:0 @@ -522,7 +522,7 @@ msgstr "Bereik" #: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree #: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree msgid "Salary Structures Hierarchy" -msgstr "" +msgstr "Salaris structuur hiërarchie" #. module: hr_payroll #: view:hr.payslip:0 @@ -769,7 +769,7 @@ msgstr "Contributie" #: code:addons/hr_payroll/hr_payroll.py:347 #, python-format msgid "Refund Payslip" -msgstr "" +msgstr "Credit salarisstrook" #. module: hr_payroll #: field:hr.rule.input,input_id:0 @@ -852,7 +852,7 @@ msgstr "Salaris Structuur" #. module: hr_payroll #: field:hr.contribution.register,register_line_ids:0 msgid "Register Line" -msgstr "" +msgstr "Register regel" #. module: hr_payroll #: view:hr.payslip:0 view:hr.payslip.employees:0 @@ -1083,7 +1083,7 @@ msgstr "Totaal" #: help:hr.payslip.line,appears_on_payslip:0 #: help:hr.salary.rule,appears_on_payslip:0 msgid "Used for the display of rule on payslip" -msgstr "" +msgstr "Wordt gebruikt om de regel van de salaristrook weer te geven" #. module: hr_payroll #: view:hr.payslip.line:0 @@ -1093,7 +1093,7 @@ msgstr "Zoek loonafschrift regels" #. module: hr_payroll #: view:hr.payslip:0 msgid "Details By Salary Rule Category" -msgstr "" +msgstr "details per salarisregel categorie" #. module: hr_payroll #: help:hr.payslip.input,code:0 help:hr.payslip.worked_days,code:0 diff --git a/addons/import_sugarcrm/i18n/fr.po b/addons/import_sugarcrm/i18n/fr.po index e9872a1f655..64673de4bc6 100644 --- a/addons/import_sugarcrm/i18n/fr.po +++ b/addons/import_sugarcrm/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-05-24 17:37+0000\n" -"Last-Translator: Numérigraphe \n" +"PO-Revision-Date: 2012-09-03 22:20+0000\n" +"Last-Translator: Nicolas JEUDY \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:42+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: import_sugarcrm #: code:addons/import_sugarcrm/import_sugarcrm.py:1105 @@ -38,7 +38,7 @@ msgstr "(Prochainement)" #. module: import_sugarcrm #: field:import.sugarcrm,document:0 msgid "Documents" -msgstr "" +msgstr "Documents" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -58,7 +58,7 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,contact:0 msgid "Contacts" -msgstr "" +msgstr "Contacts" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -79,7 +79,7 @@ msgstr "Nom de l'instance" #. module: import_sugarcrm #: field:import.sugarcrm,project_task:0 msgid "Project Tasks" -msgstr "" +msgstr "Tâches du projet" #. module: import_sugarcrm #: field:import.sugarcrm,email_from:0 @@ -134,27 +134,27 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,employee:0 msgid "Employee" -msgstr "" +msgstr "Employé" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "Document" -msgstr "" +msgstr "Document" #. module: import_sugarcrm #: help:import.sugarcrm,document:0 msgid "Check this box to import sugarCRM Documents into OpenERP documents" -msgstr "" +msgstr "Cochez cette case pour importer les documents SugarCRM dans OpenERP" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "Import Data From SugarCRM" -msgstr "" +msgstr "Importee les données de SugarCRM" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "CRM" -msgstr "" +msgstr "CRM" #. module: import_sugarcrm #: view:import.message:0 @@ -166,7 +166,7 @@ msgstr "" #. module: import_sugarcrm #: field:import.sugarcrm,call:0 msgid "Calls" -msgstr "" +msgstr "Appels" #. module: import_sugarcrm #: view:import.sugarcrm:0 @@ -176,7 +176,7 @@ msgstr "" #. module: import_sugarcrm #: view:import.message:0 msgid "_Ok" -msgstr "" +msgstr "_Valider" #. module: import_sugarcrm #: help:import.sugarcrm,opportunity:0 @@ -184,11 +184,13 @@ msgid "" "Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads " "and Opportunities" msgstr "" +"Cochez cette case pour importer les Pistes et les Opportunités SugarCRM dans " +"OpenERP." #. module: import_sugarcrm #: field:import.sugarcrm,email_history:0 msgid "Email and Note" -msgstr "" +msgstr "Email et note" #. module: import_sugarcrm #: help:import.sugarcrm,url:0 @@ -208,12 +210,12 @@ msgstr "" #. module: import_sugarcrm #: view:import.sugarcrm:0 msgid "_Import" -msgstr "" +msgstr "_Importer" #. module: import_sugarcrm #: field:import.sugarcrm,user:0 msgid "User" -msgstr "" +msgstr "Utilisateur" #. module: import_sugarcrm #: code:addons/import_sugarcrm/import_sugarcrm.py:1105 diff --git a/addons/mail/i18n/nl.po b/addons/mail/i18n/nl.po index a5e2fee8155..0fef9761c2f 100644 --- a/addons/mail/i18n/nl.po +++ b/addons/mail/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-09 00:36+0000\n" -"PO-Revision-Date: 2012-05-10 17:39+0000\n" -"Last-Translator: Raphael Collet (OpenERP) \n" +"PO-Revision-Date: 2012-09-03 17:14+0000\n" +"Last-Translator: Erwin \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:40+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: mail #: field:mail.compose.message,subtype:0 field:mail.message,subtype:0 @@ -196,7 +196,7 @@ msgstr "Ontvangers" #. module: mail #: model:ir.model,name:mail.model_mail_compose_message msgid "Email composition wizard" -msgstr "" +msgstr "E-mail samenstellen wizard" #. module: mail #: field:mail.compose.message,res_id:0 field:mail.message,res_id:0 diff --git a/addons/pad_project/i18n/fr.po b/addons/pad_project/i18n/fr.po index ad5998d968e..9e549424e26 100644 --- a/addons/pad_project/i18n/fr.po +++ b/addons/pad_project/i18n/fr.po @@ -8,31 +8,32 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-06-22 08:03+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-09-03 22:22+0000\n" +"Last-Translator: Nicolas JEUDY \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:43+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: pad_project #: constraint:project.task:0 msgid "Error ! Task end-date must be greater then task start-date" msgstr "" +"Erreur ! la date de fin de la tâche doit être supérieure a celle de début" #. module: pad_project #: model:ir.model,name:pad_project.model_project_task msgid "Task" -msgstr "" +msgstr "Tâche" #. module: pad_project #: view:project.task:0 msgid "Pad" -msgstr "" +msgstr "Pad" #. module: pad_project #: constraint:project.task:0 msgid "Error ! You cannot create recursive tasks." -msgstr "" +msgstr "Erreur ! Vous ne pouvez pas créer de tâches récursives." diff --git a/addons/sale_crm/i18n/fr.po b/addons/sale_crm/i18n/fr.po index e9463b543de..eac4ce9a5b0 100644 --- a/addons/sale_crm/i18n/fr.po +++ b/addons/sale_crm/i18n/fr.po @@ -7,30 +7,30 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:37+0000\n" -"PO-Revision-Date: 2011-11-25 14:51+0000\n" -"Last-Translator: Numérigraphe \n" +"PO-Revision-Date: 2012-09-03 22:25+0000\n" +"Last-Translator: Nicolas JEUDY \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:07+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: sale_crm #: field:sale.order,categ_id:0 msgid "Category" -msgstr "" +msgstr "Catégorie" #. module: sale_crm #: sql_constraint:sale.order:0 msgid "Order Reference must be unique per Company!" -msgstr "" +msgstr "La référence de commande doit être unique par société !" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:112 #, python-format msgid "Converted to Sales Quotation(%s)." -msgstr "" +msgstr "Convertir en devis (%s)" #. module: sale_crm #: view:crm.make.sale:0 @@ -62,7 +62,7 @@ msgstr "_Créer" #. module: sale_crm #: view:sale.order:0 msgid "My Sales Team(s)" -msgstr "" +msgstr "Mon (mes) équipe(s) de vente" #. module: sale_crm #: help:crm.make.sale,close:0 @@ -75,7 +75,7 @@ msgstr "" #. module: sale_crm #: view:board.board:0 msgid "My Opportunities" -msgstr "" +msgstr "Mes opportunités" #. module: sale_crm #: view:crm.lead:0 @@ -106,7 +106,7 @@ msgstr "Fermer l'opportunité" #. module: sale_crm #: view:board.board:0 msgid "My Planned Revenues by Stage" -msgstr "" +msgstr "Mes revenus planifiés par étape" #. module: sale_crm #: code:addons/sale_crm/wizard/crm_make_sale.py:110 @@ -133,7 +133,7 @@ msgstr "Annuler" #. module: sale_crm #: model:ir.model,name:sale_crm.model_sale_order msgid "Sales Order" -msgstr "Commande de ventes" +msgstr "Commande client" #~ msgid "Crm opportunity quotation" #~ msgstr "Chiffrage de l'opportunité" diff --git a/addons/share/i18n/nl.po b/addons/share/i18n/nl.po index 976d28f66c5..c0d68268f2c 100644 --- a/addons/share/i18n/nl.po +++ b/addons/share/i18n/nl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-06-28 12:52+0000\n" +"PO-Revision-Date: 2012-09-03 17:14+0000\n" "Last-Translator: Erwin \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:34+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n" +"X-Generator: Launchpad (build 15890)\n" #. module: share #: field:share.wizard,embed_option_title:0 @@ -384,6 +384,7 @@ msgid "" "An email notification with instructions has been sent to the following " "people:" msgstr "" +"Een e-mail bevestiging met instructies is verzonden naar de volgende mensen:" #. module: share #: model:ir.model,name:share.model_share_wizard_result_line @@ -415,6 +416,8 @@ msgstr "Kan bewerken" msgid "" "An optional personal message, to be included in the email notification." msgstr "" +"Een optionele persoonlijk bericht, welke kan worden toegevoegd in de e-mail " +"bevestiging." #. module: share #: model:ir.model,name:share.model_res_users @@ -532,6 +535,8 @@ msgid "" "You must configure your email address in the user preferences before using " "the Share button." msgstr "" +"U dient u e-mail adres in te stellen in uw gebruikersinstellingen, voordat u " +"de 'share' knop kunt gebruiken." #. module: share #: help:share.wizard,access_mode:0 From f56863c6720e89f61ed566f8a0b8842274f5e755 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 4 Sep 2012 09:35:02 +0200 Subject: [PATCH 40/70] [FIX] Reset the right python environment bzr revid: stw@openerp.com-20120904073502-xce3wn064f8e0pru --- openerp-server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp-server b/openerp-server index 65073b22798..be0710cbce9 100755 --- a/openerp-server +++ b/openerp-server @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python # -*- coding: utf-8 -*- ############################################################################## # From 76772d06bf6aa8097d93a619add3734a01eaf85f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 10:54:47 +0200 Subject: [PATCH 41/70] [CHG] titlecase discard option in list views as required by apr bzr revid: xmo@openerp.com-20120904085447-wvpc9d2iv7vj20pg --- addons/web/static/src/xml/base.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d5596f5c8da..7e98a6b41a6 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -701,7 +701,7 @@ type="button">Save - discard + Discard From 29b437766f12fcff6463f5b8da19147ca941ae01 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 4 Sep 2012 12:02:50 +0200 Subject: [PATCH 42/70] [FIX] amount_to_text: avoid to have a none in the concat bzr revid: stw@openerp.com-20120904100250-utk61q7ik41lameo --- openerp/tools/amount_to_text_en.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/tools/amount_to_text_en.py b/openerp/tools/amount_to_text_en.py index 9a1ac939e6b..97d690c70e2 100644 --- a/openerp/tools/amount_to_text_en.py +++ b/openerp/tools/amount_to_text_en.py @@ -88,8 +88,8 @@ def amount_to_text(number, currency): end_word = english_number(int(list[1])) cents_number = int(list[1]) cents_name = (cents_number > 1) and 'Cents' or 'Cent' - final_result = start_word +' '+units_name+' and ' + end_word +' '+cents_name - return final_result + + return ' '.join(filter(None, [start_word, units_name, (start_word or units_name) and (end_word or cents_name) and 'and', end_word, cents_name])) #------------------------------------------------------------- From 9612626dacbaf3a7956a68f8bd7696966430c0ec Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 4 Sep 2012 12:19:16 +0200 Subject: [PATCH 43/70] [ADD] Kanban dummy cell click triggers 'add column' button bounce effect bzr revid: fme@openerp.com-20120904101916-wzkxutkcthgyv2fe --- addons/web/static/src/css/base.css | 4 +++- addons/web/static/src/css/base.sass | 2 ++ addons/web_kanban/static/src/js/kanban.js | 9 +++++++++ addons/web_kanban/static/src/xml/web_kanban.xml | 4 +++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index dd168653f03..94cb4d3a007 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -69,7 +69,6 @@ display: none !important; } } - .openerp.openerp_webclient_container { height: 100%; position: relative; @@ -238,6 +237,9 @@ .openerp .ui-widget-content a { color: #7c7bad; } +.openerp .oe_bounce_container { + display: inline-block; +} .openerp.ui-dialog { display: none; padding: 6px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 537988e9c4a..ad5794ab5cf 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -251,6 +251,8 @@ $sheet-max-width: 860px // Jquery ui Overrides {{{ .ui-widget-content a color: $link-color + .oe_bounce_container + display: inline-block // Modal box &.ui-dialog diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index ffec52e8b97..e00f6d9f44e 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -42,6 +42,15 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ this.limit = options.limit || 80; this.add_group_mutex = new $.Mutex(); }, + start: function() { + var self = this; + this._super.apply(this, arguments); + this.$el.on('click', '.oe_kanban_dummy_cell', function() { + if (self.$buttons) { + self.$buttons.find('.oe_kanban_add_column').effect('bounce', {distance: 18, times: 5}, 150); + } + }); + }, destroy: function() { this._super.apply(this, arguments); $('html').off('click.kanban'); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 39bca51c1f5..20b361e9445 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -20,7 +20,9 @@ From fd40dcbeff2973c6501db4eb4e752597ef7fcbd2 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 12:11:39 +0200 Subject: [PATCH 44/70] [FIX] add minimum height to listview rows matching that of edition row fields Also fix reset of border-radius: none is not a valid value for border-radius, change to 0. bzr revid: xmo@openerp.com-20120904101139-xyl0dskdk6dbdfe1 --- addons/web/static/src/css/base.css | 20 ++++++++++--------- addons/web/static/src/css/base.sass | 12 ++++++----- .../web/static/src/js/view_list_editable.js | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 94cb4d3a007..c20cdf92891 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -523,9 +523,9 @@ padding: 0; margin: 0; background: none; - -moz-border-radius: none; - -webkit-border-radius: none; - border-radius: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; @@ -538,9 +538,9 @@ padding: 0; margin: 0; background: none; - -moz-border-radius: none; - -webkit-border-radius: none; - border-radius: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; @@ -2479,10 +2479,11 @@ height: 27px; } .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; border: 1px solid #aaaaff; - border-radius: 0px; - margin: 0px; - -webkit-border-radius: 0px; + margin: 0; } .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { height: 60px; @@ -2582,6 +2583,7 @@ cursor: pointer; } .openerp .oe_list_content > tbody > tr { + height: 27px; border-top: 1px solid #dddddd; } .openerp .oe_list_content > tbody > tr > td.oe_list_field_cell { diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index ad5794ab5cf..5f72b7ae548 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -36,7 +36,7 @@ $sheet-max-width: 860px padding: 0 margin: 0 background: none - @include radius(none) + @include radius(0) @include box-shadow(none) @mixin vertical-gradient($startColor: #555, $endColor: #333) @@ -1911,6 +1911,8 @@ $sheet-max-width: 860px background-color: #d2d2ff td.oe_readonly background-color: #eee + + $row-height: 27px .oe_list_editable .oe_list_content td.oe_list_field_cell @@ -1925,12 +1927,11 @@ $sheet-max-width: 860px display: none .oe_form_field input - height: 27px + height: $row-height input, textarea + @include radius(0) border: 1px solid #aaf - border-radius: 0px - margin: 0px - -webkit-border-radius: 0px + margin: 0 textarea height: 60px &.oe_form_field_float,&.oe_form_view_integer @@ -2015,6 +2016,7 @@ $sheet-max-width: 860px > tbody cursor: pointer > tr + height: $row-height border-top: 1px solid #ddd > td.oe_list_field_cell padding: 3px 6px diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 65f5620c1a9..9998eb5fce2 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -249,7 +249,7 @@ openerp.web.list_editable = function (instance) { var position = $cell.position(); // jquery does not understand !important - field.$el.attr('style', 'width: '+$cell.outerWidth()+'px !important') + field.$el.attr('style', 'width: '+$cell.outerWidth()+'px !important'); field.$el.css({ top: position.top, left: position.left, From af953dab4619c3cb995bae3921e1b7d90ba3dd40 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 4 Sep 2012 12:29:25 +0200 Subject: [PATCH 45/70] [IMP] disable the document_ftp in the run_all_with_test script bzr revid: stw@openerp.com-20120904102925-0yaxin1doamxyrxd --- scripts/run_all_with_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_all_with_tests.sh b/scripts/run_all_with_tests.sh index 4103b6243e2..877a5908b1a 100755 --- a/scripts/run_all_with_tests.sh +++ b/scripts/run_all_with_tests.sh @@ -1,7 +1,7 @@ DATABASE=trunk dropdb ${DATABASE} REPOSITORIES=../../addons/trunk -MODULES=`python -c "import os; print ','.join(os.listdir('${REPOSITORIES}'))"` +MODULES=`python -c "import os; print ','.join(list(set(os.listdir('${REPOSITORIES}')) - set(['document_ftp'])))"` createdb ${DATABASE} rm openerp-server.log ./openerp-server \ From 58a5e1c01321dff78f4ab7d7b74acd171c7e9be4 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 13:04:22 +0200 Subject: [PATCH 46/70] [FIX] reversal of aggregate function and title when extracted Column objects bzr revid: xmo@openerp.com-20120904110422-zgk7icj5lgygnvpo --- addons/web/static/src/js/view_list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index a2dccf2ec73..a83f7891a08 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1995,7 +1995,7 @@ instance.web.list.Column = instance.web.Class.extend({ if (!(aggregation_func in this)) { return {}; } - var C = function (label, fn) { + var C = function (fn, label) { this['function'] = fn; this.label = label; }; From b4e20f0c14e66bb8d5b74910c938a6a90de72f6c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 13:56:27 +0200 Subject: [PATCH 47/70] [IMP] use list.Column's parsed (and potentially altered) modifiers to generate the edition form view This way, listview 'widgets' can alter the modifiers object and influence the corresponding form widget bzr revid: xmo@openerp.com-20120904115627-v626hcb9o0s7bcrp --- addons/web/static/src/js/view_list.js | 5 +++++ .../web/static/src/js/view_list_editable.js | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index a83f7891a08..40bdee3a07f 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -2115,6 +2115,11 @@ instance.web.list.ProgressBar = instance.web.list.Column.extend({ } }); instance.web.list.Handle = instance.web.list.Column.extend({ + init: function () { + this._super.apply(this, arguments); + // Handle overrides the field to not be form-editable. + this.modifiers.readonly = true; + }, /** * Return styling hooks for a drag handle * diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 9998eb5fce2..4ea46c51e07 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -354,14 +354,17 @@ openerp.web.list_editable = function (instance) { 'class': 'oe_form_container', version: '7.0' }); - _(view.arch.children).each(function (widget) { - var modifiers = JSON.parse(widget.attrs.modifiers || '{}'); - widget.attrs.nolabel = true; - if (modifiers['tree_invisible'] || widget.tag === 'button') { - modifiers.invisible = true; - } - widget.attrs.modifiers = JSON.stringify(modifiers); - }); + _(view.arch.children).chain() + .zip(this.columns) + .each(function (ar) { + var widget = ar[0], column = ar[1]; + var modifiers = _.extend({}, column.modifiers); + widget.attrs.nolabel = true; + if (modifiers['tree_invisible'] || widget.tag === 'button') { + modifiers.invisible = true; + } + widget.attrs.modifiers = JSON.stringify(modifiers); + }); return view; }, handle_onwrite: function (source_record) { From b4b104e0d03dccc01e5963b0a71134f925aaa23b Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Tue, 4 Sep 2012 13:56:38 +0200 Subject: [PATCH 48/70] [FIX] Document page css. bzr revid: vta@openerp.com-20120904115638-nccbm09g3cof803q --- addons/document_page/static/src/css/document_page.css | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/document_page/static/src/css/document_page.css b/addons/document_page/static/src/css/document_page.css index 723ff8d9b11..77597fb4281 100644 --- a/addons/document_page/static/src/css/document_page.css +++ b/addons/document_page/static/src/css/document_page.css @@ -1,7 +1,3 @@ -.oe_form_readonly .oe_notebook { - display: none; -} - .oe_document_page ul, .oe_document_page li { padding: 2px 8px; margin: 2px 8px; From 1f1a0ef14b9632847b909485265417b8c6f5fc0f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 14:18:23 +0200 Subject: [PATCH 49/70] [IMP] cancel pending edition when hiding the list view, if editable otherwise the edition disappears but part of the list view (e.g. buttons at the top) remain in the wrong state bzr revid: xmo@openerp.com-20120904121823-kejzzquax2hdedoo --- addons/web/static/src/js/view_list_editable.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 4ea46c51e07..bdd266454dd 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -55,6 +55,12 @@ openerp.web.list_editable = function (instance) { instance.web.bus.off('resize', this, this.resize_fields); this._super(); }, + do_hide: function () { + if (this.editor.is_editing()) { + this.cancel_edition(true); + } + this._super(); + }, /** * Handles the activation of a record in editable mode (making a record * editable), called *after* the record has become editable. From a613b710e92c09ed0da76fef145ef91a7a041d3d Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Tue, 4 Sep 2012 14:41:17 +0200 Subject: [PATCH 50/70] [FIX] Fixed padding in popups. bzr revid: vta@openerp.com-20120904124117-3ilh4ryfu4r0wpqx --- addons/web/static/src/css/base.css | 95 ++++++------- addons/web/static/src/css/base.sass | 204 ++++++++++++++-------------- 2 files changed, 151 insertions(+), 148 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index dd168653f03..f28e3c6aa0d 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -69,7 +69,6 @@ display: none !important; } } - .openerp.openerp_webclient_container { height: 100%; position: relative; @@ -1933,6 +1932,35 @@ margin: -16px -16px 0 -16px; padding: 8px; } +.openerp .oe_form_sheetbg { + padding: 8px 0; +} +.openerp .oe_form_sheet_width { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp .oe_form_sheet { + background: white; + min-height: 330px; + padding: 16px; +} +.openerp .oe_application .oe_form_sheetbg { + background: url(/web/static/src/img/form_sheetbg.png); + border-bottom: 1px solid #dddddd; +} +.openerp .oe_application .oe_form_sheet { + border: 1px solid #afafb6; + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); +} +.openerp .oe_application .oe_form_sheet .ui-tabs { + margin: 0 -16px; +} +.openerp .oe_application .oe_form_sheet .oe_notebook_page { + padding: 0 16px; +} .openerp .oe_form header { position: relative; border-bottom: 1px solid #cacaca; @@ -1972,11 +2000,11 @@ .openerp .oe_form div.oe_form_configuration .oe_form_group_cell div div { padding: 1px 0; } -.openerp ul.oe_form_steps, .openerp ul.oe_form_steps_clickable { +.openerp .oe_form ul.oe_form_steps, .openerp .oe_form ul.oe_form_steps_clickable { display: inline-block; padding-right: 18px; } -.openerp ul.oe_form_steps li, .openerp ul.oe_form_steps_clickable li { +.openerp .oe_form ul.oe_form_steps li, .openerp .oe_form ul.oe_form_steps_clickable li { display: inline-block; margin-right: -20px; background-color: #fcfcfc; @@ -1987,20 +2015,20 @@ background-image: -o-linear-gradient(top, #fcfcfc, #dedede); background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } -.openerp ul.oe_form_steps li:first-child .label, .openerp ul.oe_form_steps_clickable li:first-child .label { +.openerp .oe_form ul.oe_form_steps li:first-child .label, .openerp .oe_form ul.oe_form_steps_clickable li:first-child .label { border-left: 1px solid #cacaca; padding-left: 14px; } -.openerp ul.oe_form_steps li:last-child, .openerp ul.oe_form_steps_clickable li:last-child { +.openerp .oe_form ul.oe_form_steps li:last-child, .openerp .oe_form ul.oe_form_steps_clickable li:last-child { border-right: 1px solid #cacaca; } -.openerp ul.oe_form_steps li:last-child .label, .openerp ul.oe_form_steps_clickable li:last-child .label { +.openerp .oe_form ul.oe_form_steps li:last-child .label, .openerp .oe_form ul.oe_form_steps_clickable li:last-child .label { padding-right: 14px; } -.openerp ul.oe_form_steps li:last-child .arrow, .openerp ul.oe_form_steps_clickable li:last-child .arrow { +.openerp .oe_form ul.oe_form_steps li:last-child .arrow, .openerp .oe_form ul.oe_form_steps_clickable li:last-child .arrow { display: none; } -.openerp ul.oe_form_steps li .label, .openerp ul.oe_form_steps_clickable li .label { +.openerp .oe_form ul.oe_form_steps li .label, .openerp .oe_form ul.oe_form_steps_clickable li .label { color: #4c4c4c; text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede; padding: 7px; @@ -2009,14 +2037,14 @@ margin: 0; position: relative; } -.openerp ul.oe_form_steps li .arrow, .openerp ul.oe_form_steps_clickable li .arrow { +.openerp .oe_form ul.oe_form_steps li .arrow, .openerp .oe_form ul.oe_form_steps_clickable li .arrow { width: 17px; display: inline-block; vertical-align: top; overflow: hidden; margin-left: -5px; } -.openerp ul.oe_form_steps li .arrow span, .openerp ul.oe_form_steps_clickable li .arrow span { +.openerp .oe_form ul.oe_form_steps li .arrow span, .openerp .oe_form ul.oe_form_steps_clickable li .arrow span { position: relative; width: 24px; height: 24px; @@ -2036,7 +2064,7 @@ -o-transform: rotate(45deg); -ms-transform: rotate(45deg); } -.openerp ul.oe_form_steps li.oe_active, .openerp ul.oe_form_steps_clickable li.oe_active { +.openerp .oe_form ul.oe_form_steps li.oe_active, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active { background-color: #729fcf; background-image: -webkit-gradient(linear, left top, left bottom, from(#729fcf), to(#3465a4)); background-image: -webkit-linear-gradient(top, #729fcf, #3465a4); @@ -2045,20 +2073,20 @@ background-image: -o-linear-gradient(top, #729fcf, #3465a4); background-image: linear-gradient(to bottom, #729fcf, #3465a4); } -.openerp ul.oe_form_steps li.oe_active .arrow span, .openerp ul.oe_form_steps_clickable li.oe_active .arrow span { +.openerp .oe_form ul.oe_form_steps li.oe_active .arrow span, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active .arrow span { background-color: #3465a4; background: -moz-linear-gradient(135deg, #3465a4, #729fcf); background: -o-linear-gradient(135deg, #729fcf, #3465a4); background: -webkit-gradient(linear, left top, right bottom, from(#729fcf), to(#3465a4)); } -.openerp ul.oe_form_steps li.oe_active .label, .openerp ul.oe_form_steps_clickable li.oe_active .label { +.openerp .oe_form ul.oe_form_steps li.oe_active .label, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active .label { color: white; text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4; } -.openerp ul.oe_form_steps_clickable li { +.openerp .oe_form ul.oe_form_steps_clickable li { cursor: pointer; } -.openerp ul.oe_form_steps_clickable li:hover { +.openerp .oe_form ul.oe_form_steps_clickable li:hover { background-color: #e8e8e8; background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); @@ -2067,10 +2095,10 @@ background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); } -.openerp ul.oe_form_steps_clickable li:hover .label { +.openerp .oe_form ul.oe_form_steps_clickable li:hover .label { text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede; } -.openerp ul.oe_form_steps_clickable li:hover .arrow span { +.openerp .oe_form ul.oe_form_steps_clickable li:hover .arrow span { background-color: #e8e8e8; background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#cacaca)); background-image: -webkit-linear-gradient(top, #e8e8e8, #cacaca); @@ -2079,10 +2107,10 @@ background-image: -o-linear-gradient(top, #e8e8e8, #cacaca); background-image: linear-gradient(to bottom, #e8e8e8, #cacaca); } -.openerp ul.oe_form_steps_clickable li .label { +.openerp .oe_form ul.oe_form_steps_clickable li .label { color: #7c7bad; } -.openerp ul.oe_form_steps_clickable li.oe_active:hover { +.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover { background-color: #4c85c2; background-image: -webkit-gradient(linear, left top, left bottom, from(#4c85c2), to(#284d7d)); background-image: -webkit-linear-gradient(top, #4c85c2, #284d7d); @@ -2091,10 +2119,10 @@ background-image: -o-linear-gradient(top, #4c85c2, #284d7d); background-image: linear-gradient(to bottom, #4c85c2, #284d7d); } -.openerp ul.oe_form_steps_clickable li.oe_active:hover .label { +.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover .label { text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4; } -.openerp ul.oe_form_steps_clickable li.oe_active:hover .arrow span { +.openerp .oe_form ul.oe_form_steps_clickable li.oe_active:hover .arrow span { background-color: #284d7d; background: -moz-linear-gradient(135deg, #284d7d, #4c85c2); background: -o-linear-gradient(135deg, #4c85c2, #284d7d); @@ -2126,31 +2154,6 @@ .openerp .oe_form .oe_subtotal_footer label.oe_form_label_help { font-weight: normal; } -.openerp .oe_application .oe_form_sheetbg { - background: url(/web/static/src/img/form_sheetbg.png); - padding: 8px 0; - border-bottom: 1px solid #dddddd; -} -.openerp .oe_application .oe_form_sheet_width { - min-width: 650px; - max-width: 860px; - margin: 0 auto; -} -.openerp .oe_application .oe_form_sheet { - background: white; - min-height: 330px; - padding: 16px; - border: 1px solid #afafb6; - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); - box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); -} -.openerp .oe_application .oe_form_sheet .ui-tabs { - margin: 0 -16px; -} -.openerp .oe_application .oe_form_sheet .oe_notebook_page { - padding: 0 16px; -} .openerp .oe_form .oe_form_button { margin: 2px; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 537988e9c4a..4f231331ff7 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1498,11 +1498,34 @@ $sheet-max-width: 860px display: none !important .oe_form .oe_form_field_date width: auto + // Sheet and padding .oe_form_nosheet margin: 16px > header margin: -16px -16px 0 -16px padding: 8px + .oe_form_sheetbg + padding: 8px 0 + .oe_form_sheet_width + min-width: 650px + max-width: $sheet-max-width + margin: 0 auto + .oe_form_sheet + background: white + min-height: 330px + padding: 16px + // Sheet inline mode + .oe_application + .oe_form_sheetbg + background: url(/web/static/src/img/form_sheetbg.png) + border-bottom: 1px solid #ddd + .oe_form_sheet + border: 1px solid $tag-border + @include box-shadow(0 0 10px rgba(0,0,0,0.3)) + .ui-tabs + margin: 0 -16px + .oe_notebook_page + padding: 0 16px // }}} // FormView.custom tags and classes {{{ .oe_form @@ -1532,115 +1555,92 @@ $sheet-max-width: 860px padding: 2px 0 .oe_form_group_cell div div padding: 1px 0 - - - ul.oe_form_steps, ul.oe_form_steps_clickable - display: inline-block - padding-right: 18px - li + ul.oe_form_steps, ul.oe_form_steps_clickable display: inline-block - margin-right: -20px - @include vertical-gradient(#fcfcfc, #dedede) - &:first-child .label - border-left: 1px solid #cacaca - padding-left: 14px - &:last-child - border-right: 1px solid #cacaca - .label - padding-right: 14px - .arrow - display: none - .label - color: #4c4c4c - text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede - padding: 7px + padding-right: 18px + li display: inline-block - padding-left: 24px - margin: 0 - position: relative - .arrow - width: 17px - display: inline-block - vertical-align: top - overflow: hidden - margin-left: -5px - span - position: relative - width: 24px - height: 24px + margin-right: -20px + @include vertical-gradient(#fcfcfc, #dedede) + &:first-child .label + border-left: 1px solid #cacaca + padding-left: 14px + &:last-child + border-right: 1px solid #cacaca + .label + padding-right: 14px + .arrow + display: none + .label + color: #4c4c4c + text-shadow: 0 1px 1px #fcfcfc, 0 -1px 1px #dedede + padding: 7px display: inline-block - margin-left: -12px - margin-top: 3px - box-shadow: -1px 1px 2px rgba(255,255,255,0.2), inset -1px 1px 1px rgba(0,0,0,0.2) - @include skew-gradient(#fcfcfc, #dedede) - @include radius(3px) - @include transform(rotate(45deg)) - li.oe_active - @include vertical-gradient(#729fcf, #3465a4) - .arrow span - @include skew-gradient(#729fcf, #3465a4) - .label - color: white - text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4 - - ul.oe_form_steps_clickable - li - cursor: pointer - &:hover - @include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%)) - .label - text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede + padding-left: 24px + margin: 0 + position: relative + .arrow + width: 17px + display: inline-block + vertical-align: top + overflow: hidden + margin-left: -5px + span + position: relative + width: 24px + height: 24px + display: inline-block + margin-left: -12px + margin-top: 3px + box-shadow: -1px 1px 2px rgba(255,255,255,0.2), inset -1px 1px 1px rgba(0,0,0,0.2) + @include skew-gradient(#fcfcfc, #dedede) + @include radius(3px) + @include transform(rotate(45deg)) + li.oe_active + @include vertical-gradient(#729fcf, #3465a4) .arrow span + @include skew-gradient(#729fcf, #3465a4) + .label + color: white + text-shadow: 0 1px 1px #729fcf, 0 -1px 1px #3465a4 + ul.oe_form_steps_clickable + li + cursor: pointer + &:hover @include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%)) - .label - color: $link-color - li.oe_active - &:hover - @include vertical-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%)) + .label + text-shadow: 0 -1px 1px #fcfcfc, 0 1px 1px #dedede + .arrow span + @include vertical-gradient(darken(#fcfcfc, 8%), darken(#dedede, 8%)) .label - text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4 - .arrow span - @include skew-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%)) + color: $link-color + li.oe_active + &:hover + @include vertical-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%)) + .label + text-shadow: 0 -1px 1px #729fcf, 0 1px 1px #3465a4 + .arrow span + @include skew-gradient(darken(#729fcf, 10%), darken(#3465a4, 10%)) + .oe_subtotal_footer + width: 1% !important + td.oe_form_group_cell + text-align: right + padding: 0 !important + td.oe_form_group_cell_label + border-right: none + .oe_subtotal_footer_separator + width: 108px + border-top: 1px solid #cacaca + font-weight: bold + font-size: 18px + label:after + content: ":" + label.oe_subtotal_footer_separator + font-weight: bold !important + padding: 2px 11px 2px 0px !important + label.oe_form_label_help + font-weight: normal - .oe_form .oe_subtotal_footer - width: 1% !important - td.oe_form_group_cell - text-align: right - padding: 0 !important - td.oe_form_group_cell_label - border-right: none - .oe_subtotal_footer_separator - width: 108px - border-top: 1px solid #cacaca - font-weight: bold - font-size: 18px - label:after - content: ":" - label.oe_subtotal_footer_separator - font-weight: bold !important - padding: 2px 11px 2px 0px !important - label.oe_form_label_help - font-weight: normal - // no sheet in popups - .oe_application - .oe_form_sheetbg - background: url(/web/static/src/img/form_sheetbg.png) - padding: 8px 0 - border-bottom: 1px solid #ddd - .oe_form_sheet_width - min-width: 650px - max-width: $sheet-max-width - margin: 0 auto - .oe_form_sheet - background: white - min-height: 330px - padding: 16px - border: 1px solid $tag-border - @include box-shadow(0 0 10px rgba(0,0,0,0.3)) - .ui-tabs - margin: 0 -16px - .oe_notebook_page - padding: 0 16px // }}} // FormView.group {{{ .oe_form From abdbc220d37ff68312db1b9c43c1ed801b1ad9ec Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 4 Sep 2012 14:49:21 +0200 Subject: [PATCH 51/70] [REM] incomplete and unused bounce CSS animation bzr revid: xmo@openerp.com-20120904124921-yur5k231wp8gn7vy --- addons/web/static/src/css/base.css | 49 ++--------------------------- addons/web/static/src/css/base.sass | 46 +++++++++------------------ 2 files changed, 18 insertions(+), 77 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 25df1334d21..de30642dfd6 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -20,50 +20,6 @@ font-style: normal; } -@-moz-keyframes bounce { - 0% { - -moz-transform: scale(0); - opacity: 0; - } - - 50% { - -moz-transform: scale(1.3); - opacity: 0.4; - } - - 75% { - -moz-transform: scale(0.9); - opacity: 0.7; - } - - 100% { - -moz-transform: scale(1); - opacity: 1; - } -} - -@-webkit-keyframes bounce { - 0% { - -webkit-transform: scale(0); - opacity: 0; - } - - 50% { - -webkit-transform: scale(1.3); - opacity: 0.4; - } - - 75% { - -webkit-transform: scale(0.9); - opacity: 0.7; - } - - 100% { - -webkit-transform: scale(1); - opacity: 1; - } -} - @media print { .oe_topbar, .oe_leftbar, .oe_loading { display: none !important; @@ -2062,10 +2018,11 @@ -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; - -moz-transform: rotate(45deg); -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); + -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } .openerp .oe_form ul.oe_form_steps li.oe_active, .openerp .oe_form ul.oe_form_steps_clickable li.oe_active { background-color: #729fcf; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 3c61702a60c..82c8e1a57ab 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -95,10 +95,23 @@ $sheet-max-width: 860px background: -webkit-gradient(linear, left top, right bottom, from($startColor), to($endColor)) @mixin transform($transform) - -moz-transform: $transform -webkit-transform: $transform - -o-transform: $transform + -moz-transform: $transform -ms-transform: $transform + -o-transform: $transform + transform: $transform + +@mixin keyframes($name) + @-webkit-keyframes #{$name} + @content + @-moz-keyframes #{$name} + @content + @-ms-keyframes #{$name} + @content + @-o-keyframes #{$name} + @content + @keyframes #{$name} + @content // Transforms the (readable) text of an inline element into an mmlicons icon, // allows for actual readable text in-code (and in readers?) with iconic looks @@ -112,35 +125,6 @@ $sheet-max-width: 860px color: $color // }}} -// CSS animation bounces {{{ -@-moz-keyframes bounce - 0% - -moz-transform: scale(0) - opacity: 0 - 50% - -moz-transform: scale(1.3) - opacity: 0.4 - 75% - -moz-transform: scale(0.9) - opacity: 0.7 - 100% - -moz-transform: scale(1) - opacity: 1 - -@-webkit-keyframes bounce - 0% - -webkit-transform: scale(0) - opacity: 0 - 50% - -webkit-transform: scale(1.3) - opacity: 0.4 - 75% - -webkit-transform: scale(0.9) - opacity: 0.7 - 100% - -webkit-transform: scale(1) - opacity: 1 -// }}} @media print .oe_topbar, .oe_leftbar, .oe_loading From c0d92e38b15c6c7dbc662a307fd1e3e259e9469a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 4 Sep 2012 15:31:37 +0200 Subject: [PATCH 52/70] [FIX] Use call_button in order to have the action cleaned by the controller bzr revid: fme@openerp.com-20120904133137-0e0gyu69p89yx3sr --- addons/web/static/src/js/view_form.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b0c8b6618ae..a53807a9d79 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1997,9 +1997,9 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w }, on_translate: function() { var self = this; - var trans = new instance.web.DataSet(this, 'ir.translation', this.view.dataset.get_context()); - return trans.call('translate_fields', [this.view.dataset.model, this.view.datarecord.id, this.name]).then(function(action) { - self.do_action(action); + var trans = new instance.web.DataSet(this, 'ir.translation'); + return trans.call_button('translate_fields', [this.view.dataset.model, this.view.datarecord.id, this.name, this.view.dataset.get_context()]).then(function(r) { + self.do_action(r.result); }); }, }); From 6e5a9053e50f1b74ad53c9a644fe307ecc5c8348 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 4 Sep 2012 15:32:16 +0200 Subject: [PATCH 53/70] [FIX] Fixed remarks of merge proposal bzr revid: fme@openerp.com-20120904133216-7v82tmcqi1n21c3f --- openerp/addons/base/ir/ir_translation.py | 27 ++++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/openerp/addons/base/ir/ir_translation.py b/openerp/addons/base/ir/ir_translation.py index 55902389ee4..3650f28d3f5 100644 --- a/openerp/addons/base/ir/ir_translation.py +++ b/openerp/addons/base/ir/ir_translation.py @@ -330,18 +330,18 @@ class ir_translation(osv.osv): def translate_fields(self, cr, uid, model, id, field=None, context=None): trans_model = self.pool.get(model) - domain = ['&', ('res_id', '=', id), ('name', 'ilike', model + ',')] - langs_ids = self.pool.get('res.lang').search(cr, uid, [], context=context) - langs = [lg.get('code') for lg in self.pool.get('res.lang').read(cr, uid, langs_ids, ['code'], context=context)] - main_lang = langs.pop(0) + domain = ['&', ('res_id', '=', id), ('name', '=like', model + ',%')] + langs_ids = self.pool.get('res.lang').search(cr, uid, [('code', '!=', 'en_US')], context=context) + langs = [lg.code for lg in self.pool.get('res.lang').browse(cr, uid, langs_ids, context=context)] + main_lang = 'en_US' translatable_fields = [] for f, info in trans_model._all_columns.items(): if info.column.translate: if info.parent_model: - domain_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0] - translatable_fields.append({ 'name': f, 'id': domain_id, 'model': info.parent_model }) + parent_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0] + translatable_fields.append({ 'name': f, 'id': parent_id, 'model': info.parent_model }) domain.insert(0, '|') - domain.extend(['&', ('res_id', '=', domain_id), ('name', '=', "%s,%s" % (info.parent_model, f))]) + domain.extend(['&', ('res_id', '=', parent_id), ('name', '=', "%s,%s" % (info.parent_model, f))]) else: translatable_fields.append({ 'name': f, 'id': id, 'model': model }) if len(langs): @@ -351,22 +351,21 @@ class ir_translation(osv.osv): for f in translatable_fields: # Check if record exists, else create it (at once) sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value) - SELECT %s, %s, %s, 'field', %s, %s WHERE NOT EXISTS - (SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s); - UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s; + SELECT %s, %s, %s, 'model', %s, %s WHERE NOT EXISTS + (SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s AND type='model'); + UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s AND type='model'; """ - src = record[f['name']] + src = record[f['name']] or None name = "%s,%s" % (f['model'], f['name']) cr.execute(sql, (lg, src , name, f['id'], src, lg, name, f['id'], src, lg, name, id)) action = { 'name': 'Translate', - 'view_type': 'list', - 'view_mode': 'list', 'res_model': 'ir.translation', 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'tree,form', 'domain': domain, - 'views': [(False, 'list'), (False, 'form')], } if field: info = trans_model._all_columns[field] From c0fbdc25566af3ee35fac1509748a9bb9715a682 Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Tue, 4 Sep 2012 15:50:45 +0200 Subject: [PATCH 54/70] [IMP] kanban tooltip on quickcreate bzr revid: vta@openerp.com-20120904135045-husx3of9jnjhzpqp --- addons/web_kanban/static/src/js/kanban.js | 5 +++-- addons/web_kanban/static/src/xml/web_kanban.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index e00f6d9f44e..e18b7c33d96 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -517,7 +517,6 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({ self.quick.focus(); }); // Add bounce effect on image '+' of kanban header when click on empty space of kanban grouped column. - var add_btn = this.$el.find('.oe_kanban_add'); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); if (this.state.folded) { this.do_toggle_fold(); @@ -526,10 +525,12 @@ instance.web_kanban.KanbanGroup = instance.web.Widget.extend({ this.$records.data('widget', this); this.$has_been_started.resolve(); this.compute_cards_auto_height(); + var add_btn = this.$el.find('.oe_kanban_add'); + add_btn.tipsy({delayIn: 500, delayOut: 1000}); this.$records.click(function (ev) { if (ev.target == ev.currentTarget) { if (!self.state.folded) { - add_btn.effect('bounce', {distance: 18, times: 5}, 150); + add_btn.effect('bounce', {distance: 18, times: 5}, 150); } } }); diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 20b361e9445..17d45d90505 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -32,7 +32,7 @@
-
]
+
]
í From e386d895ad1aab43d88b4241e24b8659314cfe3b Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 4 Sep 2012 15:57:28 +0200 Subject: [PATCH 55/70] [FIX] Do not ilike on name for the translation search view bzr revid: fme@openerp.com-20120904135728-6i5nrwemsluexlx0 --- openerp/addons/base/ir/ir.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 4fb3c82dd24..bd98bb34c12 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -1173,7 +1173,7 @@ - + From 5126f6ff6e4ddba8fb8a99e3be03529523c7ab31 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 4 Sep 2012 18:37:25 +0200 Subject: [PATCH 56/70] wip bzr revid: nicolas.vanhoren@openerp.com-20120904163725-ptsij09rve8j3txs --- addons/auth_openid/static/src/xml/auth_openid.xml | 2 +- addons/board/static/src/xml/board.xml | 2 +- addons/crm/crm_lead_view.xml | 4 ++-- addons/edi/static/src/xml/edi.xml | 2 +- addons/edi/static/src/xml/edi_account.xml | 2 +- addons/edi/static/src/xml/edi_sale_purchase.xml | 2 +- addons/hr/hr_view.xml | 2 +- addons/hr_recruitment/hr_recruitment_view.xml | 4 ++-- addons/mail/mail_group_view.xml | 2 +- addons/mail/static/src/xml/mail.xml | 6 +++--- addons/mail/static/src/xml/mail_followers.xml | 2 +- addons/note/note_view.xml | 2 +- addons/plugin_outlook/plugin_outlook.xml | 2 +- addons/plugin_thunderbird/plugin_thunderbird.xml | 2 +- addons/point_of_sale/static/src/xml/pos.xml | 2 +- addons/portal_crm/wizard/contact_view.xml | 4 ++-- addons/portal_hr_employees/hr_employee_view.xml | 2 +- addons/product/product_view.xml | 2 +- addons/project/project_view.xml | 6 +++--- addons/project_issue/project_issue_view.xml | 4 ++-- addons/stock/product_view.xml | 2 +- addons/survey/survey_view.xml | 2 +- addons/web_linkedin/web_linkedin_view.xml | 2 +- addons/web_shortcuts/static/src/xml/web_shortcuts.xml | 2 +- 24 files changed, 32 insertions(+), 32 deletions(-) diff --git a/addons/auth_openid/static/src/xml/auth_openid.xml b/addons/auth_openid/static/src/xml/auth_openid.xml index aa61d161657..8c297320759 100644 --- a/addons/auth_openid/static/src/xml/auth_openid.xml +++ b/addons/auth_openid/static/src/xml/auth_openid.xml @@ -4,7 +4,7 @@ -
    +
    • Password
    • Google
    • Google
    • diff --git a/addons/board/static/src/xml/board.xml b/addons/board/static/src/xml/board.xml index b2363cafd53..3cd7090f1e0 100644 --- a/addons/board/static/src/xml/board.xml +++ b/addons/board/static/src/xml/board.xml @@ -36,7 +36,7 @@
-
+

Choose dashboard layout

diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 6a715893a17..0575b17b36e 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -299,7 +299,7 @@ -
    +
    • Phone:
    • Probability: %%
    • Creation date:
    • @@ -308,7 +308,7 @@
      -
      +
      í
      • Edit...
      • diff --git a/addons/edi/static/src/xml/edi.xml b/addons/edi/static/src/xml/edi.xml index 88e09824b9b..111cb6d9d26 100644 --- a/addons/edi/static/src/xml/edi.xml +++ b/addons/edi/static/src/xml/edi.xml @@ -6,7 +6,7 @@ -
+
diff --git a/addons/edi/static/src/xml/edi_account.xml b/addons/edi/static/src/xml/edi_account.xml index 3ce1daebf93..4dea048a02c 100644 --- a/addons/edi/static/src/xml/edi_account.xml +++ b/addons/edi/static/src/xml/edi_account.xml @@ -151,7 +151,7 @@ reference on the transfer:

-
    +
    • diff --git a/addons/edi/static/src/xml/edi_sale_purchase.xml b/addons/edi/static/src/xml/edi_sale_purchase.xml index 8d6bab67761..b2763c363b9 100644 --- a/addons/edi/static/src/xml/edi_sale_purchase.xml +++ b/addons/edi/static/src/xml/edi_sale_purchase.xml @@ -151,7 +151,7 @@ reference on the transfer:

      -
        +
        • diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index e8ed1d61157..d126c455d0b 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -128,7 +128,7 @@ -
          +
          diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index d1866f124af..e4fbc0902f4 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -271,14 +271,14 @@ -
            +
            • Degree:
            • Contact:
            • Departement:
            -
            +
            i
              diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index d83b32d7afb..2b5e9b340af 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -23,7 +23,7 @@
            -
            +
            diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index f67c4e8676f..b44cb2e8ae7 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -99,7 +99,7 @@ container, holding the composition form. Then come the various messages. Then comes the 'more' button. --> -
              +
                @@ -114,12 +114,12 @@
              • -
                +
                -
                  +
                  • Delete
                  • diff --git a/addons/mail/static/src/xml/mail_followers.xml b/addons/mail/static/src/xml/mail_followers.xml index 53c899b9569..829242150ef 100644 --- a/addons/mail/static/src/xml/mail_followers.xml +++ b/addons/mail/static/src/xml/mail_followers.xml @@ -5,7 +5,7 @@ followers main template Template used to display the followers and the actions in a record. --> -
                    +
                    diff --git a/addons/note/note_view.xml b/addons/note/note_view.xml index a7c17a29869..04b5553e692 100644 --- a/addons/note/note_view.xml +++ b/addons/note/note_view.xml @@ -57,7 +57,7 @@ -
                    +
                    í diff --git a/addons/plugin_outlook/plugin_outlook.xml b/addons/plugin_outlook/plugin_outlook.xml index e99fbf72b6d..99751af1469 100644 --- a/addons/plugin_outlook/plugin_outlook.xml +++ b/addons/plugin_outlook/plugin_outlook.xml @@ -19,7 +19,7 @@

                    Click on the link above to download the installer for either 32 or 64 bits, and execute it.

                    System requirements:

                    -
                      +
                      • 1. MS Outlook 2005 or above.
                      • 2. MS .Net Framework 3.5 or above.
                      diff --git a/addons/plugin_thunderbird/plugin_thunderbird.xml b/addons/plugin_thunderbird/plugin_thunderbird.xml index 5ea5fc38219..b41e552d327 100644 --- a/addons/plugin_thunderbird/plugin_thunderbird.xml +++ b/addons/plugin_thunderbird/plugin_thunderbird.xml @@ -20,7 +20,7 @@

                      Thunderbird plugin installation:

                      -
                        +
                        • 1. Save the Thunderbird plug-in.
                        • 2. From the Thunderbird menubar: Tools ­> Add-ons -> Screwdriver/Wrench Icon -> Install add-on from file...
                        • 3. Select the plug-in (the file named openerp_plugin.xpi).
                        • diff --git a/addons/point_of_sale/static/src/xml/pos.xml b/addons/point_of_sale/static/src/xml/pos.xml index bbe278758d5..ab5f99a149e 100644 --- a/addons/point_of_sale/static/src/xml/pos.xml +++ b/addons/point_of_sale/static/src/xml/pos.xml @@ -4,7 +4,7 @@ -
                          +
                          diff --git a/addons/portal_crm/wizard/contact_view.xml b/addons/portal_crm/wizard/contact_view.xml index 1776632d7ab..c70319b9957 100644 --- a/addons/portal_crm/wizard/contact_view.xml +++ b/addons/portal_crm/wizard/contact_view.xml @@ -40,14 +40,14 @@

                          -
                            +
                            -
                              +
                              • diff --git a/addons/portal_hr_employees/hr_employee_view.xml b/addons/portal_hr_employees/hr_employee_view.xml index dc1b1bae56c..5bc3915658f 100644 --- a/addons/portal_hr_employees/hr_employee_view.xml +++ b/addons/portal_hr_employees/hr_employee_view.xml @@ -32,7 +32,7 @@ -
                                +
                                diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index ae769528d3c..d75fec3861b 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -200,7 +200,7 @@ -
                                +

                                diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 56d1b27561c..c30efb6a866 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -232,8 +232,8 @@ -
                                -
                                +
                                +
                                í
                                • Edit...
                                • @@ -535,7 +535,7 @@ -
                                  +
                                  í
                                    diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 75bf50b23a4..80c19907ef3 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -247,13 +247,13 @@ -
                                      +
                                      • Project:
                                      • Category:
                                      -
                                      +
                                      i
                                        diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 2e0eef44da9..66d61ea3054 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -200,7 +200,7 @@ Deliveries -
                                          +
                                          • On hand:
                                          • Available:
                                          diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml index b8c6f97e45b..1571089e81e 100644 --- a/addons/survey/survey_view.xml +++ b/addons/survey/survey_view.xml @@ -298,7 +298,7 @@ -
                                          +
                                          i
                                            diff --git a/addons/web_linkedin/web_linkedin_view.xml b/addons/web_linkedin/web_linkedin_view.xml index 8b4fa617bf3..5fb9a916f16 100644 --- a/addons/web_linkedin/web_linkedin_view.xml +++ b/addons/web_linkedin/web_linkedin_view.xml @@ -18,7 +18,7 @@ sale.config.settings -
                                            +

                                            To use the LinkedIn module with this database, an API Key is required. Please follow this procedure: diff --git a/addons/web_shortcuts/static/src/xml/web_shortcuts.xml b/addons/web_shortcuts/static/src/xml/web_shortcuts.xml index 0b9701f9f1a..63055d9b47a 100644 --- a/addons/web_shortcuts/static/src/xml/web_shortcuts.xml +++ b/addons/web_shortcuts/static/src/xml/web_shortcuts.xml @@ -3,7 +3,7 @@ --> -

                                            +
                                            7
                                            From 904f66730c118abbb67da2002e39363223fd55f8 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 4 Sep 2012 18:40:07 +0200 Subject: [PATCH 57/70] fix bzr revid: nicolas.vanhoren@openerp.com-20120904164007-u45aey3w6zssht0w --- addons/mail/static/src/xml/mail.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index b44cb2e8ae7..afb1323c62f 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -119,7 +119,7 @@
                                            -
                                              +
                                              • Delete
                                              • From 76031179e40e93ee20853ab4e0623611bfba0a28 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 4 Sep 2012 18:41:53 +0200 Subject: [PATCH 58/70] fix bzr revid: nicolas.vanhoren@openerp.com-20120904164153-iu7grb5rvv2f6gxv --- addons/project/project_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index c30efb6a866..67c9b2f16a3 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -233,7 +233,7 @@
                                                -
                                                +
                                                í
                                                • Edit...
                                                • From 006ed33ff344784dd84c3458b6cef41f6db4ea7a Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 4 Sep 2012 18:42:41 +0200 Subject: [PATCH 59/70] wip bzr revid: nicolas.vanhoren@openerp.com-20120904164241-lrvvsj5i7axni5ng --- addons/web/static/src/css/Makefile | 2 +- addons/web/static/src/css/base.css | 97 +++++++++++++++++-- addons/web/static/src/css/base.sass | 34 +++++-- addons/web/static/src/xml/base.xml | 2 +- addons/web_graph/static/src/xml/web_graph.xml | 2 +- .../web_kanban/static/src/xml/web_kanban.xml | 2 +- 6 files changed, 121 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/css/Makefile b/addons/web/static/src/css/Makefile index eca044497ef..d6b4f4b2fc8 100644 --- a/addons/web/static/src/css/Makefile +++ b/addons/web/static/src/css/Makefile @@ -1,3 +1,3 @@ base.css: base.sass - sass -t expanded base.sass base.css + sass --trace -t expanded base.sass base.css diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index de30642dfd6..09432786ca0 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -97,13 +97,6 @@ background-image: -o-linear-gradient(top, #eeeeee, #dedede); background-image: linear-gradient(to bottom, #eeeeee, #dedede); } -.openerp ul, .openerp li, .openerp ol { - margin: 0; - padding: 0; -} -.openerp li { - list-style-type: none; -} .openerp input, .openerp textarea, .openerp select { padding: 2px 4px; border: 1px solid #cccccc; @@ -118,6 +111,24 @@ .openerp h4 { margin: 4px 0; } +.openerp .oe_semantic_html_override_ul { + margin: 0; + padding: 0; +} +.openerp .oe_semantic_html_override_ul li { + margin: 0; + padding: 0; + list-style-type: none; +} +.openerp .oe_semantic_html_override ul, .openerp .oe_semantic_html_override ol { + margin: 0; + padding: 0; +} +.openerp .oe_semantic_html_override ul li, .openerp .oe_semantic_html_override ol li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { display: inline-block; border: 1px solid #ababab; @@ -589,6 +600,22 @@ padding: 0 16px; list-style: none; zoom: 1; + margin: 0; + padding: 0; +} +.openerp .oe_notebook li { + margin: 0; + padding: 0; + list-style-type: none; +} +.openerp .oe_notebook ul, .openerp .oe_notebook ol { + margin: 0; + padding: 0; +} +.openerp .oe_notebook ul li, .openerp .oe_notebook ol li { + margin: 0; + padding: 0; + list-style-type: none; } .openerp .oe_notebook.ui-corner-all { -moz-border-radius: 0; @@ -893,6 +920,15 @@ -webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); } +.openerp .oe_login .oe_login_pane ul, .openerp .oe_login .oe_login_pane ol { + margin: 0; + padding: 0; +} +.openerp .oe_login .oe_login_pane ul li, .openerp .oe_login .oe_login_pane ol li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp .oe_login .oe_login_pane h2 { margin-top: 0; font-size: 18px; @@ -972,6 +1008,15 @@ background-image: -o-linear-gradient(top, #646060, #262626); background-image: linear-gradient(to bottom, #646060, #262626); } +.openerp .oe_topbar ul, .openerp .oe_topbar ol { + margin: 0; + padding: 0; +} +.openerp .oe_topbar ul li, .openerp .oe_topbar ol li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp .oe_topbar .oe_topbar_item { display: block; padding: 5px 10px 7px; @@ -1044,6 +1089,15 @@ text-shadow: 0 1px 1px white; padding-bottom: 16px; } +.openerp .oe_leftbar ul, .openerp .oe_leftbar ol { + margin: 0; + padding: 0; +} +.openerp .oe_leftbar ul li, .openerp .oe_leftbar ol li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp a.oe_logo { width: 220px; display: block; @@ -1246,6 +1300,15 @@ width: 100%; table-layout: fixed; } +.openerp .oe_view_manager table.oe_view_manager_header ul, .openerp .oe_view_manager table.oe_view_manager_header ol { + margin: 0; + padding: 0; +} +.openerp .oe_view_manager table.oe_view_manager_header ul li, .openerp .oe_view_manager table.oe_view_manager_header ol li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp .oe_view_manager table.oe_view_manager_header .oe_header_row { clear: both; text-shadow: 0 1px 1px white; @@ -1946,7 +2009,7 @@ max-width: 650px; margin: 0 0 10px 0; } -.openerp .oe_form div.oe_form_configuration p { +.openerp .oe_form div.oe_form_configuration p, .openerp .oe_form div.oe_form_configuration ul, .openerp .oe_form div.oe_form_configuration ol { color: #aaaaaa; max-width: 650px; } @@ -2376,6 +2439,24 @@ .openerp.ui-autocomplete li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option { margin-top: 10px; } +.openerp .oe_form_field_status { + margin: 0; + padding: 0; +} +.openerp .oe_form_field_status ul, .openerp .oe_form_field_status ol { + margin: 0; + padding: 0; +} +.openerp .oe_form_field_status ul li, .openerp .oe_form_field_status ol li { + margin: 0; + padding: 0; + list-style-type: none; +} +.openerp .oe_form_field_status li { + margin: 0; + padding: 0; + list-style-type: none; +} .openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { display: none; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 82c8e1a57ab..40766085008 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -124,6 +124,18 @@ $sheet-max-width: 860px content: $icon-name color: $color +@mixin ul-html-override() + margin: 0 + padding: 0 + li + margin: 0 + padding: 0 + list-style-type: none + +@mixin semantic-html-override() + ul, ol + @include ul-html-override() + // }}} @media print @@ -178,11 +190,6 @@ $sheet-max-width: 860px @include vertical-gradient(#f0f0fa, #eeeef6) .zebra tbody tr:hover td @include vertical-gradient(#eee, #dedede) - ul, li, ol - margin: 0 - padding: 0 - li - list-style-type: none input, textarea, select padding: 2px 4px border: 1px solid #ccc @@ -192,6 +199,10 @@ $sheet-max-width: 860px vertical-align: middle h4 margin: 4px 0 + .oe_semantic_html_override + @include semantic-html-override + .oe_semantic_html_override_ul + @include ul-html-override // }}} // Button style {{{ a.button:link, a.button:visited, button, input[type='submit'], .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button @@ -497,6 +508,8 @@ $sheet-max-width: 860px padding: 0 16px list-style: none zoom: 1 + @include ul-html-override + @include semantic-html-override .oe_notebook.ui-corner-all @include radius(0) .oe_notebook:before, .oe_notebook:after @@ -716,6 +729,7 @@ $sheet-max-width: 860px text-align: left @include radius(8px) @include box-shadow(0 0 18px rgba(0, 0, 0, 0.9)) + @include semantic-html-override h2 margin-top: 0 font-size: 18px @@ -781,6 +795,7 @@ $sheet-max-width: 860px height: 31px border-top: solid 1px #d3d3d3 @include vertical-gradient(#646060, #262626) + @include semantic-html-override .oe_topbar_item display: block padding: 5px 10px 7px @@ -831,6 +846,7 @@ $sheet-max-width: 860px border-right: 1px solid $tag-border text-shadow: 0 1px 1px white padding-bottom: 16px + @include semantic-html-override a.oe_logo width: 220px display: block @@ -995,6 +1011,7 @@ $sheet-max-width: 860px table.oe_view_manager_header width: 100% table-layout: fixed + @include semantic-html-override .oe_header_row //min-height: 26px //line-height: 26px @@ -1532,7 +1549,7 @@ $sheet-max-width: 860px max-width: 650px margin: 0 0 10px 0 div.oe_form_configuration - p + p, ul, ol color: #aaa max-width: 650px label @@ -1848,6 +1865,11 @@ $sheet-max-width: 860px li:not(.oe_m2o_dropdown_option) + li.oe_m2o_dropdown_option margin-top: 10px // }}} + // FormView.fieldstatus {{{ + .oe_form_field_status + @include semantic-html-override + @include ul-html-override + // }}} // FormView.one2many {{{ .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index bdfd494fdda..28f98a7b4cd 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1064,7 +1064,7 @@ -
                                                    +
                                                      diff --git a/addons/web_graph/static/src/xml/web_graph.xml b/addons/web_graph/static/src/xml/web_graph.xml index 80b2fc16f81..e2e316b22d9 100644 --- a/addons/web_graph/static/src/xml/web_graph.xml +++ b/addons/web_graph/static/src/xml/web_graph.xml @@ -1,5 +1,5 @@