From 82f780e948444cd9938613e99b3a77f32056f3ba Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Thu, 19 Jan 2012 20:16:54 +0100 Subject: [PATCH 01/83] [REM] unused imports. bzr revid: florent.xicluna@gmail.com-20120119191654-scm8c3o07icyz5b1 --- openerp/osv/fields.py | 3 --- openerp/tests/common.py | 1 - openerp/tests/test_orm.py | 1 - openerp/tiny_socket.py | 1 - 4 files changed, 6 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 871fc32f884..ff02a8c89f9 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -35,14 +35,11 @@ import base64 import datetime as DT import re -import string -import sys import warnings import xmlrpclib from psycopg2 import Binary import openerp -import openerp.netsvc as netsvc import openerp.tools as tools from openerp.tools.translate import _ from openerp.tools import float_round, float_repr diff --git a/openerp/tests/common.py b/openerp/tests/common.py index 44696384ce7..93e5f6d5bc2 100644 --- a/openerp/tests/common.py +++ b/openerp/tests/common.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -import os import time import xmlrpclib diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py index c11d4cd19d2..cf880933fe5 100644 --- a/openerp/tests/test_orm.py +++ b/openerp/tests/test_orm.py @@ -1,4 +1,3 @@ -import os import unittest2 import openerp diff --git a/openerp/tiny_socket.py b/openerp/tiny_socket.py index b4bed83a4c0..f86797f0f67 100644 --- a/openerp/tiny_socket.py +++ b/openerp/tiny_socket.py @@ -22,7 +22,6 @@ import socket import cPickle import cStringIO -import marshal import netsvc From e7838dfbc44472a444b1f58dd7869febbc5984b7 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Thu, 19 Jan 2012 20:17:56 +0100 Subject: [PATCH 02/83] [REF] fix weird indentation, not multiple of four. bzr revid: florent.xicluna@gmail.com-20120119191756-niny262vp1nvmpp8 --- openerp/netsvc.py | 16 ++++++++-------- openerp/osv/orm.py | 12 ++++++------ openerp/service/netrpc_server.py | 6 +++--- openerp/service/web_services.py | 10 +++++----- openerp/tests/test_xmlrpc.py | 4 ++-- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/openerp/netsvc.py b/openerp/netsvc.py index ca08a362771..53750ed84da 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -84,12 +84,12 @@ class Service(object): cls._services.pop(name) def LocalService(name): - # Special case for addons support, will be removed in a few days when addons - # are updated to directly use openerp.osv.osv.service. - if name == 'object_proxy': - return openerp.osv.osv.service + # Special case for addons support, will be removed in a few days when addons + # are updated to directly use openerp.osv.osv.service. + if name == 'object_proxy': + return openerp.osv.osv.service - return Service._services[name] + return Service._services[name] class ExportService(object): """ Proxy for exported services. @@ -198,9 +198,9 @@ def init_logger(): # server intended to test it. def init_alternative_logger(): class H(logging.Handler): - def emit(self, record): - if record.levelno > 20: - print record.levelno, record.pathname, record.msg + def emit(self, record): + if record.levelno > 20: + print record.levelno, record.pathname, record.msg handler = H() logger = logging.getLogger() logger.handlers = [] diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 1c12fab27c9..f2686708436 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -98,10 +98,10 @@ def transfer_node_to_modifiers(node, modifiers, context=None, in_tree_view=False if node.get('states'): if 'invisible' in modifiers and isinstance(modifiers['invisible'], list): - # TODO combine with AND or OR, use implicit AND for now. - modifiers['invisible'].append(('state', 'not in', node.get('states').split(','))) + # TODO combine with AND or OR, use implicit AND for now. + modifiers['invisible'].append(('state', 'not in', node.get('states').split(','))) else: - modifiers['invisible'] = [('state', 'not in', node.get('states').split(','))] + modifiers['invisible'] = [('state', 'not in', node.get('states').split(','))] for a in ('invisible', 'readonly', 'required'): if node.get(a): @@ -894,8 +894,8 @@ class BaseModel(object): for c in cls.__dict__.get(s, []): exist = False for c2 in range(len(new)): - #For _constraints, we should check field and methods as well - if new[c2][2]==c[2] and (new[c2][0] == c[0] \ + #For _constraints, we should check field and methods as well + if new[c2][2]==c[2] and (new[c2][0] == c[0] \ or getattr(new[c2][0],'__name__', True) == \ getattr(c[0],'__name__', False)): # If new class defines a constraint with @@ -2690,7 +2690,7 @@ class BaseModel(object): elif val in dict(self._columns[field].selection(self, cr, uid, context=context)): return raise except_orm(_('ValidateError'), - _('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field)) + _('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field)) def _check_removed_columns(self, cr, log=False): # iterate on the database columns to drop the NOT NULL constraints diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index f86d6d21273..efe26906720 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -125,9 +125,9 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): ct.start() lt = len(self.threads) if (lt > 10) and (lt % 10 == 0): - # Not many threads should be serving at the same time, so log - # their abuse. - netsvc.Logger().notifyChannel("web-services", netsvc.LOG_DEBUG, + # Not many threads should be serving at the same time, so log + # their abuse. + netsvc.Logger().notifyChannel("web-services", netsvc.LOG_DEBUG, "Netrpc: %d threads" % len(self.threads)) self.socket.close() except Exception, e: diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 1bda0230c89..8c3db0e88af 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -521,11 +521,11 @@ GNU Public Licence. 'OS Name : %s\n' \ %(platform.platform(), platform.os.name) if os.name == 'posix': - if platform.system() == 'Linux': - lsbinfo = os.popen('lsb_release -a').read() - environment += '%s'%(lsbinfo) - else: - environment += 'Your System is not lsb compliant\n' + if platform.system() == 'Linux': + lsbinfo = os.popen('lsb_release -a').read() + environment += '%s'%(lsbinfo) + else: + environment += 'Your System is not lsb compliant\n' environment += 'Operating System Release : %s\n' \ 'Operating System Version : %s\n' \ 'Operating System Architecture : %s\n' \ diff --git a/openerp/tests/test_xmlrpc.py b/openerp/tests/test_xmlrpc.py index 954d3447360..ca0ae454437 100644 --- a/openerp/tests/test_xmlrpc.py +++ b/openerp/tests/test_xmlrpc.py @@ -19,8 +19,8 @@ ADMIN_USER_ID = common.ADMIN_USER_ID ADMIN_PASSWORD = common.ADMIN_PASSWORD def setUpModule(): - common.start_openerp() - common.create_xmlrpc_proxies() + common.start_openerp() + common.create_xmlrpc_proxies() tearDownModule = common.tearDownModule From efef81654b90e70a24d1a330c0ef8d9942e05444 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Thu, 19 Jan 2012 20:18:38 +0100 Subject: [PATCH 03/83] [REF] replace deprecated <> symbol. bzr revid: florent.xicluna@gmail.com-20120119191838-r07oybyiqbkfehsz --- openerp/osv/orm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index f2686708436..dceb14a2710 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1303,7 +1303,7 @@ class BaseModel(object): if not line[i]: continue - if field[:len(prefix)] <> prefix: + if field[:len(prefix)] != prefix: if line[i] and skip: return False continue @@ -2666,7 +2666,7 @@ class BaseModel(object): # if val is a many2one, just write the ID if type(val) == tuple: val = val[0] - if (val<>False) or (type(val)<>bool): + if val is not False: cr.execute(update_query, (ss[1](val), key)) def _check_selection_field_value(self, cr, uid, field, value, context=None): From c749cd8fcc864e6103f55bcf7b12e0910f2ffa14 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Mon, 23 Jan 2012 15:29:32 +0100 Subject: [PATCH 04/83] =?UTF-8?q?[IMP]=C2=A0upgrade=20the=20Pickle=20proto?= =?UTF-8?q?col=20to=20consume=20less=20bandwidth.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: florent.xicluna@gmail.com-20120123142932-idcqz4p46gvbvhfh --- openerp/tiny_socket.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openerp/tiny_socket.py b/openerp/tiny_socket.py index b4bed83a4c0..c3960afd054 100644 --- a/openerp/tiny_socket.py +++ b/openerp/tiny_socket.py @@ -28,6 +28,10 @@ import netsvc #.apidoc title: Net-RPC classes +# Pickle protocol version 2 is optimized compared to default (version 0) +PICKLE_PROTOCOL = 2 + + class Myexception(Exception): """ custom exception object store @@ -63,8 +67,8 @@ class mysocket: netsvc.close_socket(self.sock) def mysend(self, msg, exception=False, traceback=None): - msg = cPickle.dumps([msg,traceback]) - self.sock.sendall('%8d%s%s' % (len(msg), exception and "1" or "0", msg)) + msg = cPickle.dumps([msg, traceback], PICKLE_PROTOCOL) + self.sock.sendall('%8d%d%s' % (len(msg), bool(exception), msg)) def myreceive(self): buf='' From bac1a957193c5b76fc944d268d2b711809e34d19 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Mon, 23 Jan 2012 15:30:15 +0100 Subject: [PATCH 05/83] =?UTF-8?q?[IMP]=C2=A0merge=20two=20socket.recv=20in?= =?UTF-8?q?to=20one.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: florent.xicluna@gmail.com-20120123143015-gz22l5qre6ria8f4 --- openerp/tiny_socket.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/openerp/tiny_socket.py b/openerp/tiny_socket.py index c3960afd054..87db82f6d91 100644 --- a/openerp/tiny_socket.py +++ b/openerp/tiny_socket.py @@ -72,15 +72,14 @@ class mysocket: def myreceive(self): buf='' - while len(buf) < 8: - chunk = self.sock.recv(8 - len(buf)) + while len(buf) < 9: + chunk = self.sock.recv(9 - len(buf)) if not chunk: raise socket.timeout buf += chunk - size = int(buf) - buf = self.sock.recv(1) - if buf != "0": - exception = buf + size = int(buf[:8]) + if buf[8] != "0": + exception = buf[8] else: exception = False msg = '' From 5c40627e4bd91c2355a4d196f62e1ccfa83aaf12 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 26 Jan 2012 14:30:13 +0100 Subject: [PATCH 06/83] [FIX] don't just print a warning if an @eval fails in an XML file bzr revid: xmo@openerp.com-20120126133013-5fnsouix8cutwlik --- openerp/tools/convert.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py index 553aa48effc..ec3e67670c3 100644 --- a/openerp/tools/convert.py +++ b/openerp/tools/convert.py @@ -129,15 +129,14 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None): f_val = f_val[0] return f_val a_eval = node.get('eval','') - idref2 = {} if a_eval: idref2 = _get_idref(self, cr, uid, f_model, context, idref) try: return unsafe_eval(a_eval, idref2) except Exception: - logger = logging.getLogger('init') - logger.warning('could not eval(%s) for %s in %s' % (a_eval, node.get('name'), context), exc_info=True) - return "" + logging.getLogger('openerp.tools.convert.init').error( + 'Could not eval(%s) for %s in %s', a_eval, node.get('name'), context) + raise if t == 'xml': def _process(s, idref): m = re.findall('[^%]%\((.*?)\)[ds]', s) From 111d8b76f7e384a3b1a77d802b52eedbb7ae04c7 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 1 Feb 2012 13:33:11 +0100 Subject: [PATCH 07/83] [REF] one unused import and one redundant import. bzr revid: florent.xicluna@gmail.com-20120201123311-yvljvcj0luly77qt --- openerp-server | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/openerp-server b/openerp-server index 334c1790526..5868b4f33d5 100755 --- a/openerp-server +++ b/openerp-server @@ -42,9 +42,6 @@ import openerp __author__ = openerp.release.author __version__ = openerp.release.version -import sys -import imp - def check_root_user(): """ Exit if the process's user is 'root' (on POSIX system).""" if os.name == 'posix': @@ -200,7 +197,7 @@ def quit_on_signals(): try: while quit_signals_received == 0: time.sleep(60) - except KeyboardInterrupt, e: + except KeyboardInterrupt: pass if config['pidfile']: From 1ef81548ba5dd463adaf20433b7bc4b39ebb8e78 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 15:22:48 +0100 Subject: [PATCH 08/83] [REF] additional cleanup after vmt's logging refactoring. bzr revid: florent.xicluna@gmail.com-20120208142248-p63odfqo673yqqml --- openerp/service/netrpc_server.py | 2 +- openerp/service/web_services.py | 17 ++++++++--------- openerp/wizard/__init__.py | 6 +----- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index 327ebc5bbdc..fcbfaf0ba82 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -131,7 +131,7 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): _logger.debug("Netrpc: %d threads", len(self.threads)) self.socket.close() except Exception, e: - _logger.warning("Netrpc: closing because of exception %s" % str(e)) + _logger.warning("Netrpc: closing because of exception %s", e) self.socket.close() return False diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 43f4d1af639..661b74a6995 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -224,9 +224,9 @@ class db(netsvc.ExportService): if not data or res: _logger.error( - 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '\ - 'It should be provided as a -w command-line option, or as `db_password` in the '\ - 'server configuration file.\n %s' % (db_name, data)) + 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. ' + 'It should be provided as a -w command-line option, or as `db_password` in the ' + 'server configuration file.\n %s', db_name, data) raise Exception, "Couldn't dump database" _logger.info('DUMP DB successful: %s', db_name) @@ -239,7 +239,7 @@ class db(netsvc.ExportService): self._set_pg_psw_env_var() if self.exp_db_exist(db_name): - _logger.warning('RESTORE DB: %s already exists' % (db_name,)) + _logger.warning('RESTORE DB: %s already exists', db_name) raise Exception, "Database already exists" self._create_empty_database(db_name) @@ -268,7 +268,7 @@ class db(netsvc.ExportService): res = stdout.close() if res: raise Exception, "Couldn't restore database" - _logger.info('RESTORE DB: %s' % (db_name)) + _logger.info('RESTORE DB: %s', db_name) return True finally: @@ -451,8 +451,7 @@ GNU Public Licence. backup_directory = os.path.join(tools.config['root_path'], 'backup', time.strftime('%Y-%m-%d-%H-%M')) if zips and not os.path.isdir(backup_directory): - _logger.info('create a new backup directory to \ - store the old modules: %s', backup_directory) + _logger.info('create a new backup directory to store the old modules: %s', backup_directory) os.makedirs(backup_directory) for module in zips: @@ -678,7 +677,7 @@ class report_spool(netsvc.ExportService): self._reports[id]['state'] = True except Exception, exception: - _logger.exception('Exception: %s\n', str(exception)) + _logger.exception('Exception: %s\n', exception) if hasattr(exception, 'name') and hasattr(exception, 'value'): self._reports[id]['exception'] = openerp.exceptions.DeferredException(tools.ustr(exception.name), tools.ustr(exception.value)) else: @@ -715,7 +714,7 @@ class report_spool(netsvc.ExportService): self._reports[id]['format'] = format self._reports[id]['state'] = True except Exception, exception: - _logger.exception('Exception: %s\n', str(exception)) + _logger.exception('Exception: %s\n', exception) if hasattr(exception, 'name') and hasattr(exception, 'value'): self._reports[id]['exception'] = openerp.exceptions.DeferredException(tools.ustr(exception.name), tools.ustr(exception.value)) else: diff --git a/openerp/wizard/__init__.py b/openerp/wizard/__init__.py index 7354a43498d..debf0f1e74f 100644 --- a/openerp/wizard/__init__.py +++ b/openerp/wizard/__init__.py @@ -31,7 +31,6 @@ import openerp.pooler as pooler from openerp.osv.osv import except_osv from openerp.osv.orm import except_orm -import sys _logger = logging.getLogger(__name__) @@ -168,10 +167,7 @@ class interface(netsvc.Service): or isinstance(e, except_orm): netsvc.abort_response(2, e.name, 'warning', e.value) else: - import traceback - tb_s = reduce(lambda x, y: x+y, traceback.format_exception( - sys.exc_type, sys.exc_value, sys.exc_traceback)) - _logger.error('Exception in call: ' + tb_s) + _logger.exception('Exception in call:') raise return res From 57ca8e47975101c57991cf89efe86c033ff8a6de Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 18:00:34 +0100 Subject: [PATCH 09/83] [REF] openerp.report: better use of isinstance. bzr revid: florent.xicluna@gmail.com-20120208170034-2w8szxy350qpwas6 --- openerp/report/custom.py | 2 +- openerp/report/render/rml2txt/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/report/custom.py b/openerp/report/custom.py index 051d1f29862..d06f2d721f7 100644 --- a/openerp/report/custom.py +++ b/openerp/report/custom.py @@ -108,7 +108,7 @@ class report_custom(report_int): key = levels.keys() for l in key: objs = eval('obj.'+l,{'obj': obj}) - if not isinstance(objs, browse_record_list) and type(objs) <> type([]): + if not isinstance(objs, (browse_record_list, list)): objs = [objs] field_new = [] cond_new = [] diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py index 122411afb2d..c08210ecc79 100644 --- a/openerp/report/render/rml2txt/utils.py +++ b/openerp/report/render/rml2txt/utils.py @@ -75,9 +75,9 @@ def _process_text(self, txt): txt2 = eval(sps.pop(0),self.localcontext) except: txt2 = '' - if type(txt2) == type(0) or type(txt2) == type(0.0): + if isinstance(txt2, (int, float)): txt2 = str(txt2) - if type(txt2)==type('') or type(txt2)==type(u''): + if isinstance(txt2, basestring): result += txt2 return result From b5fa51f4a691b840e588bc33e4e960958860fd12 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 18:02:17 +0100 Subject: [PATCH 10/83] =?UTF-8?q?[REF]=C2=A0openerp.report:=20use=20the=20?= =?UTF-8?q?recommended=20syntax=20to=20raise=20error=20and=20never=20use?= =?UTF-8?q?=20empty=20except:.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: florent.xicluna@gmail.com-20120208170217-xsa5odzlhite0nda --- openerp/report/custom.py | 2 +- openerp/report/interface.py | 4 ++-- openerp/report/preprocess.py | 2 +- openerp/report/printscreen/ps_list.py | 2 +- openerp/report/render/rml2html/rml2html.py | 2 +- openerp/report/render/rml2pdf/trml2pdf.py | 2 +- openerp/report/render/rml2txt/utils.py | 8 ++++---- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/openerp/report/custom.py b/openerp/report/custom.py index d06f2d721f7..a03ae0b8a53 100644 --- a/openerp/report/custom.py +++ b/openerp/report/custom.py @@ -267,7 +267,7 @@ class report_custom(report_int): else: try: row.append(float(r[j])) - except: + except Exception: row.append(r[j]) results2.append(row) if report['type']=='pie': diff --git a/openerp/report/interface.py b/openerp/report/interface.py index 9a97c445671..69474a18433 100644 --- a/openerp/report/interface.py +++ b/openerp/report/interface.py @@ -44,8 +44,8 @@ class report_int(netsvc.Service): def __init__(self, name): assert not self.exists(name), 'The report "%s" already exists!' % name super(report_int, self).__init__(name) - if name[0:7]<>'report.': - raise Exception, 'ConceptionError, bad report name, should start with "report."' + if not name.startswith('report.'): + raise Exception('ConceptionError, bad report name, should start with "report."') self.name = name self.id = 0 self.name2 = '.'.join(name.split('.')[1:]) diff --git a/openerp/report/preprocess.py b/openerp/report/preprocess.py index e681860d7a2..93b6b4d1bc9 100644 --- a/openerp/report/preprocess.py +++ b/openerp/report/preprocess.py @@ -48,7 +48,7 @@ class report(object): try: while n.tag != txt.group(3): n = n.getparent() - except: + except Exception: n = node else: n = node.getparent() diff --git a/openerp/report/printscreen/ps_list.py b/openerp/report/printscreen/ps_list.py index dc280a53e3e..8f0629462f8 100644 --- a/openerp/report/printscreen/ps_list.py +++ b/openerp/report/printscreen/ps_list.py @@ -56,7 +56,7 @@ class report_printscreen_list(report_int): def _parse_string(self, view): try: dom = etree.XML(view.encode('utf-8')) - except: + except Exception: dom = etree.XML(view) return self._parse_node(dom) diff --git a/openerp/report/render/rml2html/rml2html.py b/openerp/report/render/rml2html/rml2html.py index 504492772df..a26f6eadaa6 100644 --- a/openerp/report/render/rml2html/rml2html.py +++ b/openerp/report/render/rml2html/rml2html.py @@ -98,7 +98,7 @@ class _flowable(object): try: if new_child.get('style').find('terp_tblheader')!= -1: new_node.tag = 'th' - except: + except Exception: pass process(node,new_node) if new_node.get('colWidths',False): diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 96287166074..58457993142 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -424,7 +424,7 @@ class _rml_canvas(object): flow.drawOn(self.canvas,infos['x'],infos['y']) infos['height']-=h else: - raise ValueError, "Not enough space" + raise ValueError("Not enough space") def _line_mode(self, node): ljoin = {'round':1, 'mitered':0, 'bevelled':2} diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py index c08210ecc79..95e99c32ce1 100644 --- a/openerp/report/render/rml2txt/utils.py +++ b/openerp/report/render/rml2txt/utils.py @@ -37,7 +37,7 @@ def _child_get(node, self=None, tagname=None): if n.get('rml_except', False): try: eval(n.get('rml_except'), {}, self.localcontext) - except: + except Exception: continue if n.get('rml_tag'): try: @@ -46,7 +46,7 @@ def _child_get(node, self=None, tagname=None): n2.tag = tag n2.attrib.update(attr) yield n2 - except: + except Exception: yield n else: yield n @@ -55,7 +55,7 @@ def _child_get(node, self=None, tagname=None): if self and self.localcontext and n.get('rml_except', False): try: eval(n.get('rml_except'), {}, self.localcontext) - except: + except Exception: continue if (tagname is None) or (n.tag==tagname): yield n @@ -73,7 +73,7 @@ def _process_text(self, txt): if sps: try: txt2 = eval(sps.pop(0),self.localcontext) - except: + except Exception: txt2 = '' if isinstance(txt2, (int, float)): txt2 = str(txt2) From 9621008df12a65730a123e389d84ef8b21e5941d Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 18:03:51 +0100 Subject: [PATCH 11/83] =?UTF-8?q?[REF]=C2=A0openerp.report:=20replace=20de?= =?UTF-8?q?precated=20has=5Fkey.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bzr revid: florent.xicluna@gmail.com-20120208170351-1vmewmuufmxn7x52 --- openerp/report/custom.py | 14 +++++++------- openerp/report/print_xml.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/openerp/report/custom.py b/openerp/report/custom.py index a03ae0b8a53..b33065fcdee 100644 --- a/openerp/report/custom.py +++ b/openerp/report/custom.py @@ -221,7 +221,7 @@ class report_custom(report_int): res_dic[prev].append(line) else: prev = line[groupby] - if res_dic.has_key(line[groupby]): + if line[groupby] in res_dic: res_dic[line[groupby]].append(line) else: res_dic[line[groupby]] = [] @@ -389,7 +389,7 @@ class report_custom(report_int): if date_idx != None: for r in results: key = process_date['Y'](r[date_idx]) - if not data_by_year.has_key(key): + if key not in data_by_year: data_by_year[key] = [] for i in range(len(r)): r[i] = fct[i](r[i]) @@ -407,14 +407,14 @@ class report_custom(report_int): for d in data_by_year[line]: for idx in range(len(fields)-1): fields_bar.append({}) - if fields_bar[idx].has_key(d[0]): + if d[0] in fields_bar[idx]: fields_bar[idx][d[0]] += d[idx+1] else: fields_bar[idx][d[0]] = d[idx+1] for idx in range(len(fields)-1): data = {} for k in fields_bar[idx].keys(): - if data.has_key(k): + if k in data: data[k] += fields_bar[idx][k] else: data[k] = fields_bar[idx][k] @@ -488,7 +488,7 @@ class report_custom(report_int): if date_idx != None: for r in results: key = process_date['Y'](r[date_idx]) - if not data_by_year.has_key(key): + if key not in data_by_year: data_by_year[key] = [] for i in range(len(r)): r[i] = fct[i](r[i]) @@ -507,14 +507,14 @@ class report_custom(report_int): for d in data_by_year[line]: for idx in range(len(fields)-1): fields_bar.append({}) - if fields_bar[idx].has_key(d[0]): + if d[0] in fields_bar[idx]: fields_bar[idx][d[0]] += d[idx+1] else: fields_bar[idx][d[0]] = d[idx+1] for idx in range(len(fields)-1): data = {} for k in fields_bar[idx].keys(): - if data.has_key(k): + if k in data: data[k] += fields_bar[idx][k] else: data[k] = fields_bar[idx][k] diff --git a/openerp/report/print_xml.py b/openerp/report/print_xml.py index ee1b9a316b3..2137eabee79 100644 --- a/openerp/report/print_xml.py +++ b/openerp/report/print_xml.py @@ -200,7 +200,7 @@ class document(object): else: args = [] # get the object - if attrs.has_key('model'): + if 'model' in attrs: obj = self.pool.get(attrs['model']) else: if isinstance(browser, list): @@ -209,7 +209,7 @@ class document(object): obj = browser._table # get the ids - if attrs.has_key('ids'): + if 'ids' in attrs: ids = self.eval(browser, attrs['ids']) else: if isinstance(browser, list): From 7675d45c2c10e833bc5d5f0b3f905f1cca652a3d Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 18:04:56 +0100 Subject: [PATCH 12/83] [REF] openerp.report: fix weird indentation, not multiple of four. bzr revid: florent.xicluna@gmail.com-20120208170456-ak1ykpy6yel71ylc --- openerp/report/interface.py | 2 +- openerp/report/print_xml.py | 2 +- openerp/report/printscreen/ps_form.py | 2 +- openerp/report/render/rml2html/rml2html.py | 16 ++++++++-------- openerp/report/render/rml2pdf/trml2pdf.py | 2 +- openerp/report/render/rml2txt/rml2txt.py | 4 ++-- openerp/report/render/simple.py | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/openerp/report/interface.py b/openerp/report/interface.py index 69474a18433..17dc0973d7e 100644 --- a/openerp/report/interface.py +++ b/openerp/report/interface.py @@ -181,7 +181,7 @@ class report_rml(report_int): def create_pdf(self, rml, localcontext = None, logo=None, title=None): if not localcontext: - localcontext={} + localcontext = {} localcontext.update({'internal_header':self.internal_header}) if logo: self.bin_datas['logo'] = logo diff --git a/openerp/report/print_xml.py b/openerp/report/print_xml.py index 2137eabee79..c2af0984c2e 100644 --- a/openerp/report/print_xml.py +++ b/openerp/report/print_xml.py @@ -228,7 +228,7 @@ class document(object): if not isinstance(datas[atr['value']], (str, unicode)): txt = str(datas[atr['value']]) else: - txt = datas[atr['value']] + txt = datas[atr['value']] el.text = txt else: for el_cld in node: diff --git a/openerp/report/printscreen/ps_form.py b/openerp/report/printscreen/ps_form.py index 8e3823e6b03..cf6d77cbe26 100644 --- a/openerp/report/printscreen/ps_form.py +++ b/openerp/report/printscreen/ps_form.py @@ -120,7 +120,7 @@ class report_printscreen_list(report_int): line[f]=round(line[f],precision) col = etree.SubElement(node_line, 'col', tree='no') if line[f] != None: - col.text = tools.ustr(line[f] or '') + col.text = tools.ustr(line[f] or '') else: col.text = '/' diff --git a/openerp/report/render/rml2html/rml2html.py b/openerp/report/render/rml2html/rml2html.py index a26f6eadaa6..17ed2e3103e 100644 --- a/openerp/report/render/rml2html/rml2html.py +++ b/openerp/report/render/rml2html/rml2html.py @@ -232,7 +232,7 @@ class _rml_stylesheet(object): attr = {} attrs = ps.attrib for key, val in attrs.items(): - attr[key] = val + attr[key] = val attrs = [] for a in attr: if a in self._tags: @@ -296,13 +296,13 @@ class _rml_template(object): frames[(posy,posx,tmpl.get('id'))] = _rml_tmpl_frame(posx, utils.unit_get(tmpl.get('width'))) for tmpl in pt.findall('pageGraphics'): for n in tmpl: - if n.tag == 'image': - self.data = rc + utils._process_text(self, n.text) - if n.tag in self._tags: - t = self._tags[n.tag](n, self.style,self.localcontext) - frames[(t.posy,t.posx,n.tag)] = t - else: - self.style.update(n) + if n.tag == 'image': + self.data = rc + utils._process_text(self, n.text) + if n.tag in self._tags: + t = self._tags[n.tag](n, self.style,self.localcontext) + frames[(t.posy,t.posx,n.tag)] = t + else: + self.style.update(n) keys = frames.keys() keys.sort() keys.reverse() diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 58457993142..a17c03b40cb 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -82,7 +82,7 @@ class NumberedCanvas(canvas.Canvas): def showPage(self): self._currentPage +=1 if not self._flag: - self._pageCount += 1 + self._pageCount += 1 else: self.pages.update({self._currentPage:self._pageCount}) self._codes.append({'code': self._code, 'stack': self._codeStack}) diff --git a/openerp/report/render/rml2txt/rml2txt.py b/openerp/report/render/rml2txt/rml2txt.py index 4a30e0d2345..8a8c1b7f3c7 100755 --- a/openerp/report/render/rml2txt/rml2txt.py +++ b/openerp/report/render/rml2txt/rml2txt.py @@ -336,8 +336,8 @@ class _rml_stylesheet(object): attr = {} attrs = ps.attributes for i in range(attrs.length): - name = attrs.item(i).localName - attr[name] = ps.get(name) + name = attrs.item(i).localName + attr[name] = ps.get(name) attrs = [] for a in attr: if a in self._tags: diff --git a/openerp/report/render/simple.py b/openerp/report/render/simple.py index 4ce10991924..49d1adf148e 100644 --- a/openerp/report/render/simple.py +++ b/openerp/report/render/simple.py @@ -82,7 +82,7 @@ if __name__=='__main__': ''' if s.render(): - print s.get() + print s.get() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 6312fd9426d6ccdbbfdada88763961f4b29d5c06 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 18:07:00 +0100 Subject: [PATCH 13/83] [REF] openerp.report: remove unused imports and vars, simplify logging. bzr revid: florent.xicluna@gmail.com-20120208170700-csx9jb3nwmvq3dzj --- openerp/report/custom.py | 3 --- openerp/report/render/html2html/html2html.py | 2 -- openerp/report/render/makohtml2html/makohtml2html.py | 8 +++----- openerp/report/render/odt2odt/odt2odt.py | 1 - openerp/report/render/rml2html/rml2html.py | 2 +- openerp/report/render/rml2txt/rml2txt.py | 2 -- openerp/report/render/rml2txt/utils.py | 1 - openerp/report/render/simple.py | 1 - 8 files changed, 4 insertions(+), 16 deletions(-) diff --git a/openerp/report/custom.py b/openerp/report/custom.py index b33065fcdee..80dd9462175 100644 --- a/openerp/report/custom.py +++ b/openerp/report/custom.py @@ -21,7 +21,6 @@ import os import time -import openerp.netsvc as netsvc import openerp.tools as tools from openerp.tools.safe_eval import safe_eval as eval @@ -67,7 +66,6 @@ class report_custom(report_int): # def _row_get(self, cr, uid, objs, fields, conditions, row_canvas=None, group_by=None): result = [] - tmp = [] for obj in objs: tobreak = False for cond in conditions: @@ -365,7 +363,6 @@ class report_custom(report_int): order_date['Y'] = lambda x : x abscissa = [] - tmp = {} idx = 0 date_idx = None diff --git a/openerp/report/render/html2html/html2html.py b/openerp/report/render/html2html/html2html.py index 181c7f7ba67..09d7ad5e825 100644 --- a/openerp/report/render/html2html/html2html.py +++ b/openerp/report/render/html2html/html2html.py @@ -20,9 +20,7 @@ ############################################################################## from openerp.report.render.rml2pdf import utils -from lxml import etree import copy -import openerp.pooler as pooler import base64 import cStringIO import re diff --git a/openerp/report/render/makohtml2html/makohtml2html.py b/openerp/report/render/makohtml2html/makohtml2html.py index 57e57bd8d63..dbb3327a105 100644 --- a/openerp/report/render/makohtml2html/makohtml2html.py +++ b/openerp/report/render/makohtml2html/makohtml2html.py @@ -23,8 +23,7 @@ import mako from lxml import etree from mako.template import Template from mako.lookup import TemplateLookup -import openerp.netsvc as netsvc -import traceback, sys, os +import os _logger = logging.getLogger(__name__) @@ -126,9 +125,8 @@ class makohtml2html(object): final_html += self.format_header(etree_obj) final_html += self.format_body(etree_obj) return final_html - except Exception,e: - tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) - _logger.error('report :\n%s\n%s\n', tb_s, str(e)) + except Exception: + _logger.exception('report :') def parseNode(html, localcontext = {}): r = makohtml2html(html, localcontext) diff --git a/openerp/report/render/odt2odt/odt2odt.py b/openerp/report/render/odt2odt/odt2odt.py index d077207f4d7..b9713943dc8 100644 --- a/openerp/report/render/odt2odt/odt2odt.py +++ b/openerp/report/render/odt2odt/odt2odt.py @@ -20,7 +20,6 @@ ############################################################################## from openerp.report.render.rml2pdf import utils -from lxml import etree import copy class odt2odt(object): diff --git a/openerp/report/render/rml2html/rml2html.py b/openerp/report/render/rml2html/rml2html.py index 17ed2e3103e..90bd58af99a 100644 --- a/openerp/report/render/rml2html/rml2html.py +++ b/openerp/report/render/rml2html/rml2html.py @@ -39,7 +39,7 @@ import sys import cStringIO from lxml import etree import copy -import utils + from openerp.report.render.rml2pdf import utils class _flowable(object): diff --git a/openerp/report/render/rml2txt/rml2txt.py b/openerp/report/render/rml2txt/rml2txt.py index 8a8c1b7f3c7..ab1930d81ba 100755 --- a/openerp/report/render/rml2txt/rml2txt.py +++ b/openerp/report/render/rml2txt/rml2txt.py @@ -22,9 +22,7 @@ import sys import StringIO -import copy from lxml import etree -import base64 import utils diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py index 95e99c32ce1..2bf66925527 100644 --- a/openerp/report/render/rml2txt/utils.py +++ b/openerp/report/render/rml2txt/utils.py @@ -22,7 +22,6 @@ import re import reportlab import reportlab.lib.units -from lxml import etree from openerp.tools.safe_eval import safe_eval as eval _regex = re.compile('\[\[(.+?)\]\]') diff --git a/openerp/report/render/simple.py b/openerp/report/render/simple.py index 49d1adf148e..cb3831c141f 100644 --- a/openerp/report/render/simple.py +++ b/openerp/report/render/simple.py @@ -66,7 +66,6 @@ class simple(render.render): return self.result.getvalue() if __name__=='__main__': - import time s = simple() s.xml = ''' From ab9db3f6227789fabf3fdfcd2eda016b996bfd28 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Wed, 8 Feb 2012 22:33:13 +0100 Subject: [PATCH 14/83] [REM] more unused imports. bzr revid: florent.xicluna@gmail.com-20120208213313-1v0dugc59ch1fnnu --- openerp/service/http_server.py | 2 -- openerp/tests/addons/test_limits/models.py | 1 - 2 files changed, 3 deletions(-) diff --git a/openerp/service/http_server.py b/openerp/service/http_server.py index 07e31ea9c7d..63e0d08fc92 100644 --- a/openerp/service/http_server.py +++ b/openerp/service/http_server.py @@ -44,10 +44,8 @@ import posixpath import urllib import os import logging -from SimpleXMLRPCServer import SimpleXMLRPCDispatcher from websrv_lib import * -import openerp.netsvc as netsvc import openerp.tools as tools try: diff --git a/openerp/tests/addons/test_limits/models.py b/openerp/tests/addons/test_limits/models.py index 5240acd23ab..32e2a9a16f4 100644 --- a/openerp/tests/addons/test_limits/models.py +++ b/openerp/tests/addons/test_limits/models.py @@ -27,7 +27,6 @@ class m(openerp.osv.osv.Model): return True def consume_cpu_time(self, cr, uid, seconds, context=None): - import os t0 = time.clock() t1 = time.clock() while t1 - t0 < seconds: From d52e838455be4b038064bd9a1d972869b13257c1 Mon Sep 17 00:00:00 2001 From: Bogdan Stanciu Date: Sun, 12 Feb 2012 12:45:09 +0100 Subject: [PATCH 15/83] [IMP] some English corrections & 'encoding' into 'coding' for several py files. No code change. bzr revid: bogdanovidiu.stanciu@gmail.com-20120212114509-yrw86zewyv70dow7 --- openerp/addons/base/i18n/af.po | 4 +- openerp/addons/base/i18n/am.po | 4 +- openerp/addons/base/i18n/ar.po | 4 +- openerp/addons/base/i18n/base.pot | 4 +- openerp/addons/base/i18n/bg.po | 4 +- openerp/addons/base/i18n/bs.po | 4 +- openerp/addons/base/i18n/ca.po | 4 +- openerp/addons/base/i18n/cs.po | 4 +- openerp/addons/base/i18n/da.po | 4 +- openerp/addons/base/i18n/de.po | 4 +- openerp/addons/base/i18n/el.po | 4 +- openerp/addons/base/i18n/en_GB.po | 6 +- openerp/addons/base/i18n/es.po | 4 +- openerp/addons/base/i18n/es_AR.po | 2 +- openerp/addons/base/i18n/es_CL.po | 4 +- openerp/addons/base/i18n/es_CR.po | 4 +- openerp/addons/base/i18n/es_EC.po | 4 +- openerp/addons/base/i18n/et.po | 4 +- openerp/addons/base/i18n/eu.po | 4 +- openerp/addons/base/i18n/fa.po | 4 +- openerp/addons/base/i18n/fa_AF.po | 4 +- openerp/addons/base/i18n/fi.po | 4 +- openerp/addons/base/i18n/fr.po | 8 +-- openerp/addons/base/i18n/gl.po | 4 +- openerp/addons/base/i18n/he.po | 4 +- openerp/addons/base/i18n/hr.po | 4 +- openerp/addons/base/i18n/hu.po | 4 +- openerp/addons/base/i18n/hy.po | 4 +- openerp/addons/base/i18n/id.po | 4 +- openerp/addons/base/i18n/is.po | 4 +- openerp/addons/base/i18n/it.po | 4 +- openerp/addons/base/i18n/ja.po | 4 +- openerp/addons/base/i18n/kk.po | 4 +- openerp/addons/base/i18n/ko.po | 4 +- openerp/addons/base/i18n/lt.po | 4 +- openerp/addons/base/i18n/lt_LT.po | 2 +- openerp/addons/base/i18n/lv.po | 4 +- openerp/addons/base/i18n/mk.po | 4 +- openerp/addons/base/i18n/mn.po | 4 +- openerp/addons/base/i18n/nb.po | 4 +- openerp/addons/base/i18n/nl.po | 91 ++++++++++++-------------- openerp/addons/base/i18n/nl_BE.po | 4 +- openerp/addons/base/i18n/nl_NL.po | 2 +- openerp/addons/base/i18n/pl.po | 4 +- openerp/addons/base/i18n/pt.po | 4 +- openerp/addons/base/i18n/pt_BR.po | 8 +-- openerp/addons/base/i18n/ro.po | 4 +- openerp/addons/base/i18n/ru.po | 4 +- openerp/addons/base/i18n/sk.po | 4 +- openerp/addons/base/i18n/sl.po | 4 +- openerp/addons/base/i18n/sq.po | 4 +- openerp/addons/base/i18n/sr.po | 4 +- openerp/addons/base/i18n/sr@latin.po | 4 +- openerp/addons/base/i18n/sv.po | 4 +- openerp/addons/base/i18n/th.po | 4 +- openerp/addons/base/i18n/tlh.po | 4 +- openerp/addons/base/i18n/tr.po | 4 +- openerp/addons/base/i18n/uk.po | 4 +- openerp/addons/base/i18n/uk_UA.po | 2 +- openerp/addons/base/i18n/ur.po | 4 +- openerp/addons/base/i18n/vi.po | 4 +- openerp/addons/base/i18n/zh_CN.po | 4 +- openerp/addons/base/i18n/zh_HK.po | 4 +- openerp/addons/base/i18n/zh_TW.po | 4 +- openerp/addons/base/ir/ir_actions.py | 4 +- openerp/addons/base/res/res_country.py | 5 +- openerp/release.py | 2 +- openerp/service/http_server.py | 4 +- openerp/service/websrv_lib.py | 4 +- openerp/tools/yaml_import.py | 2 +- 70 files changed, 181 insertions(+), 185 deletions(-) diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index 750498c192f..10b7c035815 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index c1e1faad680..3214ddec3a7 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index 72c254eedb6..5912643d3c0 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5545,7 +5545,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "رمز الولاية (ثلاثة حروف).\n" #. module: base diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index 357319afe91..c1ca9862e96 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -727,7 +727,7 @@ msgstr "" #: help:ir.actions.todo,type:0 msgid "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets automatically to Done." +"Launch Manually Once: after having been launched manually, it sets automatically to Done." msgstr "" #. module: base @@ -5037,7 +5037,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index b44b49136f9..5f070859688 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.po @@ -797,7 +797,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5552,7 +5552,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Кодът на държавата в три букви.\n" #. module: base diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index 8b489f353b9..f4a109a9f86 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.po @@ -783,7 +783,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5469,7 +5469,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index e9e3c958f8f..dbcc9dd3c31 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.po @@ -807,7 +807,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5641,7 +5641,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El codi de la província de 3 caràcters.\n" #. module: base diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 9d7f5fd42da..08924e330d5 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -806,7 +806,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5635,7 +5635,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Kód státu ve třech znacích.\n" #. module: base diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index fc56fd78eba..d4fdbe01cc4 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/i18n/da.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 401ede6d3f9..13f9e6f19da 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -813,7 +813,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "Manuell: manuell gestartet" @@ -5678,7 +5678,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Der 3 stellige Staatencode\n" #. module: base diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index eca0eba1ee5..9f1dc8937e1 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5589,7 +5589,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Ο κωδικός κατάστασης με 3 χαρακτήρες\n" #. module: base diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index ba564da1057..2c9d775d610 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/i18n/en_GB.po @@ -802,7 +802,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5618,8 +5618,8 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" -msgstr "The state code in three chars.\n" +msgid "The state code in max. three chars." +msgstr "The state code in max. three chars." #. module: base #: model:res.country,name:base.sj diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 697adbf8dd3..4548e2692b8 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -842,7 +842,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5726,7 +5726,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/es_AR.po b/openerp/addons/base/i18n/es_AR.po index 5f2d8cb3305..e0a1569cffe 100644 --- a/openerp/addons/base/i18n/es_AR.po +++ b/openerp/addons/base/i18n/es_AR.po @@ -5583,7 +5583,7 @@ msgstr "STOCK_MEDIA_PAUSE" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index 9f432778665..e3ff1de6ef3 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.po @@ -811,7 +811,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5652,7 +5652,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/es_CR.po b/openerp/addons/base/i18n/es_CR.po index e5e6a7f4e3f..a4d9a8129d5 100644 --- a/openerp/addons/base/i18n/es_CR.po +++ b/openerp/addons/base/i18n/es_CR.po @@ -879,7 +879,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Lanzado manualmente.\n" @@ -6736,7 +6736,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index dfd3f325733..dadcd9c0e46 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.po @@ -807,7 +807,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5642,7 +5642,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index 0ad14eaff39..7552ae0719b 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.po @@ -788,7 +788,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5499,7 +5499,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Maakonna kolmekohaline kood.\n" #. module: base diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index f63e1b6dc4f..378c973a0eb 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/i18n/eu.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index 5e55e009c97..a465ce96c3c 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -786,7 +786,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5502,7 +5502,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "کد استان در ۳ نویسه‌ای.\n" #. module: base diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index 2b467ff72d1..e3d0389fe01 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index a68401483b1..a6cb99831fb 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.po @@ -799,7 +799,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5620,7 +5620,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Osavaltion koodi kolmella kirjaimella.\n" #. module: base diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index c94296d2cbd..b47d352f885 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -815,7 +815,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5653,7 +5653,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Le code état en trois caractères.\n" #. module: base @@ -11276,7 +11276,7 @@ msgstr "Séquences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss msgid "Mss" -msgstr "Mme" +msgstr "Mlle" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11404,7 +11404,7 @@ msgstr "Filtre" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam msgid "Ms." -msgstr "Mlle" +msgstr "Mme" #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index e166e224d57..804c17bad22 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/i18n/gl.po @@ -808,7 +808,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5635,7 +5635,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "O código de estado en tres caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index 191882068f0..49655e7ae5c 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/i18n/he.po @@ -785,7 +785,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5487,7 +5487,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "ביטוי הקוד בשלוש תוים.\n" #. module: base diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index 65fab4e5c30..bead1791bdc 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -840,7 +840,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5646,7 +5646,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Troznamenkasta šifra države/pokrajine/županije.\n" #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index 6894d272558..d8a699102bf 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -804,7 +804,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5625,7 +5625,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Az állam kódja három karakterben.\n" #. module: base diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index 11c3cd40faf..b7e53816cae 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index a62ce35ff65..323819ab4a5 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.po @@ -779,7 +779,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5465,7 +5465,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index 87a31071d27..fb292a07512 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index c5928215769..64f7a787c29 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -808,7 +808,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5645,7 +5645,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Il codice dello stato in 3 caratteri\n" #. module: base diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index 84f3f3d2c55..3b727699679 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -818,7 +818,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "手動:手動起動\n" @@ -6134,7 +6134,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po index 0205a66a540..de3a57e6e0f 100644 --- a/openerp/addons/base/i18n/kk.po +++ b/openerp/addons/base/i18n/kk.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index c5026451183..a4141f5d609 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.po @@ -784,7 +784,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5518,7 +5518,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "3문자의 상태 코드\n" #. module: base diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 66ff76f538c..8e0ae0d384e 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.po @@ -778,7 +778,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5483,7 +5483,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Savivaldybės kodas iš trijų simbolių.\n" #. module: base diff --git a/openerp/addons/base/i18n/lt_LT.po b/openerp/addons/base/i18n/lt_LT.po index eb5c33417cd..409e6fe1bb7 100644 --- a/openerp/addons/base/i18n/lt_LT.po +++ b/openerp/addons/base/i18n/lt_LT.po @@ -5407,7 +5407,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po index eedaf5de4fb..9f52a9bcaf8 100644 --- a/openerp/addons/base/i18n/lv.po +++ b/openerp/addons/base/i18n/lv.po @@ -786,7 +786,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5514,7 +5514,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Stāvokļa kods, sastāvošs no trīs burtiem.\n" #. module: base diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index 0544dbb6017..e5293173930 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.po @@ -786,7 +786,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5472,7 +5472,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index b3f470baadd..7e7ce75c2ed 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.po @@ -789,7 +789,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5537,7 +5537,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Мужийн код гурван тэмдэгтээр.\n" #. module: base diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index 42f7fd2da30..4d21f12d3c6 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5533,7 +5533,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Koden til staten med tre karakterer.\n" #. module: base diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index 2b9799e8fa1..32a85ba06c4 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-02-12 19:08+0000\n" +"PO-Revision-Date: 2012-02-11 08:55+0000\n" "Last-Translator: Mario Gielissen \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-02-13 04:49+0000\n" -"X-Generator: Launchpad (build 14781)\n" +"X-Launchpad-Export-Date: 2012-02-12 04:41+0000\n" +"X-Generator: Launchpad (build 14771)\n" #. module: base #: model:res.country,name:base.sh @@ -275,7 +275,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ" #: model:ir.module.category,name:base.module_category_sales_management #: model:ir.module.module,shortdesc:base.module_sale msgid "Sales Management" -msgstr "Verkoopbeheer" +msgstr "" #. module: base #: view:res.partner:0 @@ -371,7 +371,7 @@ msgstr "Naam assistent" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Partner Manager" -msgstr "Partner beheer" +msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_customer_relationship_management @@ -392,7 +392,7 @@ msgstr "Ongeldige group_by" #. module: base #: field:ir.module.category,child_ids:0 msgid "Child Applications" -msgstr "Child applicaties" +msgstr "" #. module: base #: field:res.partner,credit_limit:0 @@ -402,7 +402,7 @@ msgstr "Kredietlimiet" #. module: base #: model:ir.module.module,description:base.module_web_graph msgid "Openerp web graph view" -msgstr "Openerp web grafiek view" +msgstr "" #. module: base #: field:ir.model.data,date_update:0 @@ -412,7 +412,7 @@ msgstr "Wijzigingsdatum" #. module: base #: model:ir.module.module,shortdesc:base.module_base_action_rule msgid "Automated Action Rules" -msgstr "Automatische aktie regels" +msgstr "" #. module: base #: view:ir.attachment:0 @@ -573,7 +573,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_layout msgid "Sales Orders Print Layout" -msgstr "Verkooporder Afdruk Layout" +msgstr "" #. module: base #: selection:base.language.install,lang:0 @@ -752,7 +752,7 @@ msgstr "Eritrea" #. module: base #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "De naam van het bedrijf moet uniek zijn!" +msgstr "" #. module: base #: view:res.config:0 @@ -790,7 +790,7 @@ msgstr "" #. module: base #: view:ir.mail_server:0 msgid "Security and Authentication" -msgstr "Beveiliging en Authenticatie" +msgstr "" #. module: base #: view:base.language.export:0 @@ -808,7 +808,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -881,7 +881,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_document_webdav msgid "Shared Repositories (WebDAV)" -msgstr "Gedeelde Repositories (WebDAV)" +msgstr "" #. module: base #: model:ir.module.module,description:base.module_import_google @@ -1105,7 +1105,7 @@ msgstr "" #: code:addons/base/ir/ir_mail_server.py:192 #, python-format msgid "Connection test failed!" -msgstr "Verbindings test mislukt!" +msgstr "" #. module: base #: selection:ir.actions.server,state:0 @@ -1227,12 +1227,12 @@ msgstr "Spaans (GT) / Spanje (GT)" #. module: base #: field:ir.mail_server,smtp_port:0 msgid "SMTP Port" -msgstr "SMTP poort" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_import_sugarcrm msgid "SugarCRM Import" -msgstr "SugarCRM Import" +msgstr "" #. module: base #: view:res.lang:0 @@ -1249,12 +1249,12 @@ msgstr "" #: code:addons/base/module/wizard/base_language_install.py:55 #, python-format msgid "Language Pack" -msgstr "Taalpakket" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_tests msgid "Tests" -msgstr "Testen" +msgstr "" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1315,7 +1315,7 @@ msgstr "" #. module: base #: field:ir.module.category,parent_id:0 msgid "Parent Application" -msgstr "Parent applicatie" +msgstr "" #. module: base #: code:addons/base/res/res_users.py:222 @@ -1332,7 +1332,7 @@ msgstr "Om een taal te exporteren, geen taal kiezen." #: model:ir.module.module,shortdesc:base.module_document #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Document Management System" -msgstr "Document Beheer Systeem" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_claim @@ -1596,7 +1596,7 @@ msgstr "Drijvende comma" #: model:ir.module.category,name:base.module_category_warehouse_management #: model:ir.module.module,shortdesc:base.module_stock msgid "Warehouse Management" -msgstr "Magazijnbeheer" +msgstr "" #. module: base #: model:ir.model,name:base.model_res_request_link @@ -1769,8 +1769,6 @@ msgid "" "simplified payment mode encoding, automatic picking lists generation and " "more." msgstr "" -"Helpt u het meeste te halen uit uw kassa's met snelle codering, eenvoudige " -"betaalmethode codering, automatische piklijst generatie en meer." #. module: base #: model:res.country,name:base.mv @@ -1806,28 +1804,27 @@ msgstr "Dagen" #. module: base #: model:ir.module.module,shortdesc:base.module_web_rpc msgid "OpenERP Web web" -msgstr "OpenERP Web" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_html_view msgid "Html View" -msgstr "Html weergave" +msgstr "" #. module: base #: field:res.currency,position:0 msgid "Symbol position" -msgstr "Symbool positie" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_process msgid "Enterprise Process" -msgstr "Bedrijfsprocessen" +msgstr "" #. module: base #: help:ir.cron,function:0 msgid "Name of the method to be called when this job is processed." msgstr "" -"Naam van de methode die wordt aangeroepen als deze taak wordt uitgevoerd." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -1849,7 +1846,7 @@ msgstr " (kopie)" #. module: base #: field:res.company,rml_footer1:0 msgid "General Information Footer" -msgstr "Algemene Info Voettekst" +msgstr "" #. module: base #: view:res.lang:0 @@ -1956,7 +1953,7 @@ msgstr "%s (kopie)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "Grootboekschema template" +msgstr "" #. module: base #: field:res.partner.address,type:0 @@ -2043,12 +2040,12 @@ msgstr "Finland" #: code:addons/base/res/res_company.py:156 #, python-format msgid "Website: " -msgstr "Website: " +msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_administration msgid "Settings" -msgstr "Voorkeuren" +msgstr "" #. module: base #: selection:ir.actions.act_window,view_type:0 @@ -2080,8 +2077,6 @@ msgid "" "Display this bank account on the footer of printed documents like invoices " "and sales orders." msgstr "" -"Laat dit bankrekeningnummer zien in de voettekst van ieder afgedrukte " -"document zoals facturen en verkooporders." #. module: base #: view:base.language.import:0 @@ -2190,7 +2185,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_subscription msgid "Recurring Documents" -msgstr "Herhalende documenten" +msgstr "" #. module: base #: model:res.country,name:base.bs @@ -2229,7 +2224,7 @@ msgstr "Aantal bijgewerkte modules" #. module: base #: field:ir.cron,function:0 msgid "Method" -msgstr "Methode" +msgstr "" #. module: base #: view:res.partner.event:0 @@ -2253,7 +2248,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_setup msgid "Initial Setup Tools" -msgstr "Initiële Installatie Tools" +msgstr "" #. module: base #: field:ir.actions.act_window,groups_id:0 @@ -2315,7 +2310,7 @@ msgstr "Beginpagina componenten beheer" #. module: base #: field:res.company,rml_header1:0 msgid "Report Header / Company Slogan" -msgstr "Rapporthoofd / Bedrijfs slogan" +msgstr "" #. module: base #: model:res.country,name:base.pl @@ -2368,7 +2363,7 @@ msgstr "" #. module: base #: field:ir.mail_server,smtp_debug:0 msgid "Debugging" -msgstr "Fouten opsporen" +msgstr "" #. module: base #: model:ir.module.module,description:base.module_crm_helpdesk @@ -2478,12 +2473,12 @@ msgstr "Huidige koers" #. module: base #: model:ir.module.module,shortdesc:base.module_idea msgid "Ideas" -msgstr "Ideeën" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm msgid "Opportunity to Quotation" -msgstr "Verkoopkans naar offerte" +msgstr "" #. module: base #: model:ir.module.module,description:base.module_sale_analytic_plans @@ -2510,7 +2505,7 @@ msgstr "" #. module: base #: model:ir.actions.report.xml,name:base.report_ir_model_overview msgid "Model Overview" -msgstr "Model Overzicht" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_product_margin @@ -2520,7 +2515,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_invoiced msgid "Invoicing" -msgstr "Facturering" +msgstr "" #. module: base #: field:ir.ui.view_sc,name:0 @@ -2561,7 +2556,7 @@ msgstr "" #: field:ir.model.data,res_id:0 #: field:ir.values,res_id:0 msgid "Record ID" -msgstr "Record-id" +msgstr "" #. module: base #: field:ir.actions.server,email:0 @@ -2645,7 +2640,7 @@ msgstr "Fout tijdens communicatie met de uitgevers garantie server." #: model:res.groups,name:base.group_sale_manager #: model:res.groups,name:base.group_tool_manager msgid "Manager" -msgstr "Beheer" +msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_custom @@ -2682,7 +2677,7 @@ msgstr "IDs opschonen" #. module: base #: view:res.groups:0 msgid "Inherited" -msgstr "Overgeërfd" +msgstr "" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -2705,7 +2700,7 @@ msgstr "%y - Jaar zonder eeuw [00,99]." #: code:addons/base/res/res_company.py:155 #, python-format msgid "Fax: " -msgstr "Fax: " +msgstr "" #. module: base #: model:res.country,name:base.si @@ -5644,7 +5639,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "De provinciecode in drie karakters.\n" #. module: base diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index 526625a6597..7b720f4511d 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.po @@ -790,7 +790,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5476,7 +5476,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/nl_NL.po b/openerp/addons/base/i18n/nl_NL.po index 216dc70bd16..061a453645b 100644 --- a/openerp/addons/base/i18n/nl_NL.po +++ b/openerp/addons/base/i18n/nl_NL.po @@ -5598,7 +5598,7 @@ msgstr "STOCK_MEDIA_PAUSE" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "De provinciecode in drie karakters.\n" #. module: base diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index f78e5733b36..e7bd3ec9b14 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -793,7 +793,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5578,7 +5578,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Trzyliterowy kod regionu\n" #. module: base diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index edec4cffb17..fe6b53693cb 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -802,7 +802,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5567,7 +5567,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "O código do estado com três caracteres\n" #. module: base diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 6f1dc01c7da..8eec70f77b6 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-13 04:49+0000\n" -"X-Generator: Launchpad (build 14781)\n" +"X-Launchpad-Export-Date: 2012-02-12 04:42+0000\n" +"X-Generator: Launchpad (build 14771)\n" #. module: base #: model:res.country,name:base.sh @@ -840,7 +840,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Iniciado manualmente\n" @@ -5850,7 +5850,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "O código de situação com 3 caracteres.\n" #. module: base diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index 3e947cbbfc9..27ff3506cea 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.po @@ -811,7 +811,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5649,7 +5649,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Codul statului, din trei caractere.\n" #. module: base diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 62c4e6698cd..835efe3fa58 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -806,7 +806,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5628,7 +5628,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Код области из трёх букв.\n" #. module: base diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index 46f537ae09e..c4fb21e7f70 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.po @@ -792,7 +792,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5574,7 +5574,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Kód štátu na 3 znaky.\n" #. module: base diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index a344ffba70b..0de03559923 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.po @@ -801,7 +801,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5617,7 +5617,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Koda zvezne države v treh znakih.\n" #. module: base diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index 38896cd6a56..297d3f37ea9 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.po @@ -774,7 +774,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5460,7 +5460,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index ad02d9eec00..65f02a38fce 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5561,7 +5561,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Šifra države u ti karaktera.\n" #. module: base diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po index 6435154a90a..92ba916bf1a 100644 --- a/openerp/addons/base/i18n/sr@latin.po +++ b/openerp/addons/base/i18n/sr@latin.po @@ -837,7 +837,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Ručno: Pokrenuto ručno.\n" @@ -5644,7 +5644,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index ddb985cb2a8..c9d0a27b8c9 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -797,7 +797,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5583,7 +5583,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Landskod, tre tecken\n" #. module: base diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index 5dc4e9d0386..0951f766fca 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index b2500e94c1e..1c087b508eb 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.po @@ -774,7 +774,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5460,7 +5460,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index 49dea1a9448..b9d1bb2a7c5 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -806,7 +806,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5662,7 +5662,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Üç karakterden oluşan eyalet kodu.\n" #. module: base diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index 8a22baa55ba..1ded396d476 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.po @@ -796,7 +796,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5507,7 +5507,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Код області довжиною в три букви.\n" #. module: base diff --git a/openerp/addons/base/i18n/uk_UA.po b/openerp/addons/base/i18n/uk_UA.po index a33cdf8b473..87fbfe76e2b 100644 --- a/openerp/addons/base/i18n/uk_UA.po +++ b/openerp/addons/base/i18n/uk_UA.po @@ -5424,7 +5424,7 @@ msgstr "STOCK_MEDIA_PAUSE" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index b9467f4518a..a45da1f2dad 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index d12ece2051f..d8e03b80386 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -799,7 +799,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5490,7 +5490,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index fe7a5cc0aaa..7b618b1e0e5 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -821,7 +821,7 @@ msgstr "OpenERP的翻译在Launchpad.net网站上进行,OpenERP项目本身也 msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "手动:手动执行\n" @@ -5895,7 +5895,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "三个字符的省/州代码\n" #. module: base diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po index 30dc4956d39..06a099c2196 100644 --- a/openerp/addons/base/i18n/zh_HK.po +++ b/openerp/addons/base/i18n/zh_HK.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index cacb85a6f34..5b6c6c37767 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.po @@ -779,7 +779,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -5470,7 +5470,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "三個字元之省或州代碼\n" #. module: base diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 236c6af7119..0a282503570 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -619,7 +619,7 @@ class actions_server(osv.osv): # ids : original ids # id : current id of the object # OUT: - # False : Finnished correctly + # False : Finished correctly # ACTION_ID : Action to launch # FIXME: refactor all the eval() calls in run()! @@ -831,7 +831,7 @@ class ir_actions_todo(osv.osv): 'type': fields.selection(TODO_TYPES, 'Type', required=True, help="""Manual: Launched manually. Automatic: Runs whenever the system is reconfigured. -Launch Manually Once: after hacing been launched manually, it sets automatically to Done."""), +Launch Manually Once: after having been launched manually, it sets automatically to Done."""), 'groups_id': fields.many2many('res.groups', 'res_groups_action_rel', 'uid', 'gid', 'Groups'), 'note': fields.text('Text', translate=True), 'category_id': fields.many2one('ir.actions.todo.category','Category'), diff --git a/openerp/addons/base/res/res_country.py b/openerp/addons/base/res/res_country.py index f240784dc47..d0269dd4df1 100644 --- a/openerp/addons/base/res/res_country.py +++ b/openerp/addons/base/res/res_country.py @@ -86,9 +86,10 @@ class CountryState(osv.osv): _columns = { 'country_id': fields.many2one('res.country', 'Country', required=True), - 'name': fields.char('State Name', size=64, required=True), + 'name': fields.char('State Name', size=64, required=True, + help='Administrative divisions of a country. E.g. Fed. State, Departement, Canton'), 'code': fields.char('State Code', size=3, - help='The state code in three chars.\n', required=True), + help='The state code in max. three chars.', required=True), } def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100): diff --git a/openerp/release.py b/openerp/release.py index bd3935713b9..1f573c54814 100644 --- a/openerp/release.py +++ b/openerp/release.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- ############################################################################## # # OpenERP, Open Source Management Solution diff --git a/openerp/service/http_server.py b/openerp/service/http_server.py index 07e31ea9c7d..5fb46b42ffc 100644 --- a/openerp/service/http_server.py +++ b/openerp/service/http_server.py @@ -5,10 +5,10 @@ # # # WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential +# programmers who take the whole responsibility of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software +# guarantees and support are strongly advised to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or diff --git a/openerp/service/websrv_lib.py b/openerp/service/websrv_lib.py index 4da6536ed51..d9f654f4edb 100644 --- a/openerp/service/websrv_lib.py +++ b/openerp/service/websrv_lib.py @@ -3,10 +3,10 @@ # Copyright P. Christeas 2008-2010 # # WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential +# programmers who take the whole responsibility of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software +# guarantees and support are strongly advised to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index c36376ba1b7..1c676e3a1c6 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- import threading import types import time # used to eval time.strftime expressions From 0ea407eb5ab51e604ad5550d8d0672bd659a3a73 Mon Sep 17 00:00:00 2001 From: Bogdan Stanciu Date: Sun, 12 Feb 2012 12:48:12 +0100 Subject: [PATCH 16/83] [IMP] added two address formats (CH and RO) bzr revid: bogdanovidiu.stanciu@gmail.com-20120212114812-dbt4jy0jxisn55x8 --- openerp/addons/base/base_data.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 03e62dd6ba6..1c4e7fc639b 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -197,6 +197,7 @@ Switzerland ch + Ivory Coast (Cote D'Ivoire) @@ -767,6 +768,7 @@ Romania ro + Russian Federation From 434af1f37af3267797a08b65b4c39ce132bbad4e Mon Sep 17 00:00:00 2001 From: Bogdan Stanciu Date: Sun, 12 Feb 2012 13:25:57 +0100 Subject: [PATCH 17/83] [IMP] corrected a few titles vs. "shortcuts" and added three titles to res.partner.title bzr revid: bogdanovidiu.stanciu@gmail.com-20120212122557-6od8yipxs6bp31ht --- openerp/addons/base/i18n/af.po | 6 ++-- openerp/addons/base/i18n/am.po | 6 ++-- openerp/addons/base/i18n/ar.po | 6 ++-- openerp/addons/base/i18n/base.pot | 35 ++++++++++++++++++-- openerp/addons/base/i18n/bg.po | 8 ++--- openerp/addons/base/i18n/bs.po | 6 ++-- openerp/addons/base/i18n/ca.po | 6 ++-- openerp/addons/base/i18n/cs.po | 8 ++--- openerp/addons/base/i18n/da.po | 6 ++-- openerp/addons/base/i18n/de.po | 6 ++-- openerp/addons/base/i18n/el.po | 6 ++-- openerp/addons/base/i18n/en_GB.po | 12 +++---- openerp/addons/base/i18n/es.po | 6 ++-- openerp/addons/base/i18n/es_CL.po | 6 ++-- openerp/addons/base/i18n/es_CR.po | 6 ++-- openerp/addons/base/i18n/es_EC.po | 10 +++--- openerp/addons/base/i18n/et.po | 6 ++-- openerp/addons/base/i18n/eu.po | 6 ++-- openerp/addons/base/i18n/fa.po | 6 ++-- openerp/addons/base/i18n/fa_AF.po | 6 ++-- openerp/addons/base/i18n/fi.po | 8 ++--- openerp/addons/base/i18n/fr.po | 6 ++-- openerp/addons/base/i18n/gl.po | 10 +++--- openerp/addons/base/i18n/he.po | 6 ++-- openerp/addons/base/i18n/hr.po | 6 ++-- openerp/addons/base/i18n/hu.po | 10 +++--- openerp/addons/base/i18n/hy.po | 6 ++-- openerp/addons/base/i18n/id.po | 6 ++-- openerp/addons/base/i18n/is.po | 6 ++-- openerp/addons/base/i18n/it.po | 10 +++--- openerp/addons/base/i18n/ja.po | 6 ++-- openerp/addons/base/i18n/kk.po | 6 ++-- openerp/addons/base/i18n/ko.po | 6 ++-- openerp/addons/base/i18n/lt.po | 6 ++-- openerp/addons/base/i18n/lv.po | 6 ++-- openerp/addons/base/i18n/mk.po | 6 ++-- openerp/addons/base/i18n/mn.po | 8 ++--- openerp/addons/base/i18n/nb.po | 8 ++--- openerp/addons/base/i18n/nl.po | 6 ++-- openerp/addons/base/i18n/nl_BE.po | 6 ++-- openerp/addons/base/i18n/pl.po | 6 ++-- openerp/addons/base/i18n/pt.po | 6 ++-- openerp/addons/base/i18n/pt_BR.po | 8 ++--- openerp/addons/base/i18n/ro.po | 6 ++-- openerp/addons/base/i18n/ru.po | 6 ++-- openerp/addons/base/i18n/sk.po | 6 ++-- openerp/addons/base/i18n/sl.po | 6 ++-- openerp/addons/base/i18n/sq.po | 6 ++-- openerp/addons/base/i18n/sr.po | 12 +++---- openerp/addons/base/i18n/sr@latin.po | 6 ++-- openerp/addons/base/i18n/sv.po | 8 ++--- openerp/addons/base/i18n/th.po | 6 ++-- openerp/addons/base/i18n/tlh.po | 6 ++-- openerp/addons/base/i18n/tr.po | 8 ++--- openerp/addons/base/i18n/uk.po | 6 ++-- openerp/addons/base/i18n/ur.po | 6 ++-- openerp/addons/base/i18n/vi.po | 6 ++-- openerp/addons/base/i18n/zh_CN.po | 8 ++--- openerp/addons/base/i18n/zh_HK.po | 6 ++-- openerp/addons/base/i18n/zh_TW.po | 6 ++-- openerp/addons/base/res/res_partner_data.xml | 21 ++++++++++-- 61 files changed, 250 insertions(+), 206 deletions(-) diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index 10b7c035815..5b00d0558af 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index 3214ddec3a7..b1e142e769b 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index 5912643d3c0..98baaf19bf1 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.po @@ -3745,7 +3745,7 @@ msgstr "GPL-2 أو إصدار أحدث" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11110,7 +11110,7 @@ msgstr "المتواليات" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11233,7 +11233,7 @@ msgstr "مرشح الفرز" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "السيدة" #. module: base diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index c1ca9862e96..0a97521219b 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -3430,7 +3430,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Sir" msgstr "" #. module: base @@ -10134,7 +10134,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -10249,7 +10249,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base @@ -11306,6 +11306,35 @@ msgstr "" msgid "Madam" msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_mister +msgid "Mister" +msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_doctor +msgid "Doctor" +msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_prof +msgid "Professor" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_mister +msgid "Mr." +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_doctor +msgid "Dr." +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_prof +msgid "Prof." +msgstr "" + + #. module: base #: model:res.country,name:base.ee msgid "Estonia" diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index 5f070859688..327c1e65c8a 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.po @@ -3751,8 +3751,8 @@ msgstr "GPL версия 2 или по-нова" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11115,7 +11115,7 @@ msgstr "Последователност" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11235,7 +11235,7 @@ msgstr "Филтър" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Г-жа" #. module: base diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index f4a109a9f86..bdf09238918 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.po @@ -3690,7 +3690,7 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11003,7 +11003,7 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11123,7 +11123,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index dbcc9dd3c31..f4d57a65484 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.po @@ -3805,7 +3805,7 @@ msgstr "GPL-2 o versió posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -11259,7 +11259,7 @@ msgstr "Seqüències" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11385,7 +11385,7 @@ msgstr "Filtre" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 08924e330d5..a72e16f34dc 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -3822,8 +3822,8 @@ msgstr "GPL-2 nebo pozdější verze" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11233,7 +11233,7 @@ msgstr "Posloupnosti" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Paní" #. module: base @@ -11355,7 +11355,7 @@ msgstr "Filtr" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Pan" #. module: base diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index d4fdbe01cc4..53663056459 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/i18n/da.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "Sekvenser" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 13f9e6f19da..40bcd5b9b72 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -3835,7 +3835,7 @@ msgstr "GPL-2 oder höher" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Hr." #. module: base @@ -11360,7 +11360,7 @@ msgstr "Sequenzen" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Frau" #. module: base @@ -11485,7 +11485,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Frau" #. module: base diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index 9f1dc8937e1..22febb8de85 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -3776,7 +3776,7 @@ msgstr "GPL-2 ή μεταγενέστερη έκδοση" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11159,7 +11159,7 @@ msgstr "Ιεραρχήσεις" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11281,7 +11281,7 @@ msgstr "Φίλτρο" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Κα/Δς" #. module: base diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index 2c9d775d610..bc509103502 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/i18n/en_GB.po @@ -3790,8 +3790,8 @@ msgstr "GPL-2 or later version" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11221,8 +11221,8 @@ msgstr "Sequences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11346,8 +11346,8 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 4548e2692b8..5ebd7d1a0dc 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -3887,7 +3887,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -11344,7 +11344,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11471,7 +11471,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index e3ff1de6ef3..c87eb21ac41 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.po @@ -3813,7 +3813,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -11270,7 +11270,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11397,7 +11397,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_CR.po b/openerp/addons/base/i18n/es_CR.po index a4d9a8129d5..913775326c7 100644 --- a/openerp/addons/base/i18n/es_CR.po +++ b/openerp/addons/base/i18n/es_CR.po @@ -4442,7 +4442,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -13818,7 +13818,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -13945,7 +13945,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index dadcd9c0e46..e81781da452 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.po @@ -3805,8 +3805,8 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11264,8 +11264,8 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11391,7 +11391,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index 7552ae0719b..f2457c654a4 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.po @@ -3713,7 +3713,7 @@ msgstr "GPL-2 või hilisem versioon" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11043,7 +11043,7 @@ msgstr "Jadad" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11163,7 +11163,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index 378c973a0eb..92667018edb 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/i18n/eu.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index a465ce96c3c..c1a94fc9ce1 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -3715,7 +3715,7 @@ msgstr "مجوز GPL-2 یا نگارش بالاتر" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11048,7 +11048,7 @@ msgstr "دنباله‌ها" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11168,7 +11168,7 @@ msgstr "پالایه" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index e3d0389fe01..27e99d07a6c 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index a6cb99831fb..3b27c52ae46 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.po @@ -3793,7 +3793,7 @@ msgstr "GPL-2 tai myöhäisempi versio" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11226,7 +11226,7 @@ msgstr "Jaksot" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11352,8 +11352,8 @@ msgstr "Suodin" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index b47d352f885..975b97a543f 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -3817,7 +3817,7 @@ msgstr "GPL-2 ou version supérieure" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "M." #. module: base @@ -11275,7 +11275,7 @@ msgstr "Séquences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Mlle" #. module: base @@ -11403,7 +11403,7 @@ msgstr "Filtre" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Mme" #. module: base diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index 804c17bad22..66b56a02246 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/i18n/gl.po @@ -3805,8 +3805,8 @@ msgstr "GPL-2 ou versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11245,8 +11245,8 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "MSS" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11372,7 +11372,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ms" #. module: base diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index 49655e7ae5c..6d1a3501066 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/i18n/he.po @@ -3702,7 +3702,7 @@ msgstr "גרסא GPL-2 או מאוחרת יותר." #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11030,7 +11030,7 @@ msgstr "רציפות" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11150,7 +11150,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index bead1791bdc..4460921847e 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -3835,7 +3835,7 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "g." #. module: base @@ -11218,7 +11218,7 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "gđica" #. module: base @@ -11344,7 +11344,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "gđa." #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index d8a699102bf..5d20eb6f771 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -3792,7 +3792,7 @@ msgstr "GPL-2 vagy korábbi verzió" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Úr" #. module: base @@ -11243,8 +11243,8 @@ msgstr "Sorszámok" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11372,8 +11372,8 @@ msgstr "Szűrő" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index b7e53816cae..9984f2c03f4 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index 323819ab4a5..cc5113f856f 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.po @@ -3686,7 +3686,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10999,7 +10999,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11119,7 +11119,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index fb292a07512..425ea2516db 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index 64f7a787c29..40f6a45e2ff 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -3810,8 +3810,8 @@ msgstr "GPL-2 o successiva" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11265,8 +11265,8 @@ msgstr "Sequenze" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11392,7 +11392,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sig.ra" #. module: base diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index 3b727699679..00064377974 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -4096,7 +4096,7 @@ msgstr "GPL-2 またはそれ以降のバージョン" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11674,7 +11674,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11794,7 +11794,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po index de3a57e6e0f..70c941b9aa6 100644 --- a/openerp/addons/base/i18n/kk.po +++ b/openerp/addons/base/i18n/kk.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "Сүзгі" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "миссис" #. module: base diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index a4141f5d609..8fd9331052c 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.po @@ -3729,7 +3729,7 @@ msgstr "GPL-2 또는 이후 버젼" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11056,7 +11056,7 @@ msgstr "시퀀스" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11176,7 +11176,7 @@ msgstr "필터" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 8e0ae0d384e..821b0705ff5 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.po @@ -3694,7 +3694,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11029,7 +11029,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11149,7 +11149,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ponia" #. module: base diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po index 9f52a9bcaf8..1402da79c00 100644 --- a/openerp/addons/base/i18n/lv.po +++ b/openerp/addons/base/i18n/lv.po @@ -3717,7 +3717,7 @@ msgstr "GPL-2 vai vēlāka versija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11063,7 +11063,7 @@ msgstr "Sērijas" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11183,7 +11183,7 @@ msgstr "Filtrs" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index e5293173930..83994f31964 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.po @@ -3693,7 +3693,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11006,7 +11006,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11126,7 +11126,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index 7e7ce75c2ed..1f58def2e90 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.po @@ -3746,8 +3746,8 @@ msgstr "GPL-2 болон дараагийн хувилбар" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11086,7 +11086,7 @@ msgstr "Дараалал" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Хатагтай" #. module: base @@ -11207,7 +11207,7 @@ msgstr "Шүүлт" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Хатагтай." #. module: base diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index 4d21f12d3c6..91fa3298775 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.po @@ -3734,8 +3734,8 @@ msgstr "GPL-2 eller senere versjon" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11081,7 +11081,7 @@ msgstr "Sekvenser" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11201,7 +11201,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index 32a85ba06c4..311d04e0a54 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -3800,7 +3800,7 @@ msgstr "GPL-2 of latere versie" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Hr." #. module: base @@ -11252,7 +11252,7 @@ msgstr "Reeksen" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Mej." #. module: base @@ -11379,7 +11379,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Mw." #. module: base diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index 7b720f4511d..d9fcfaa86af 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.po @@ -3697,7 +3697,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11010,7 +11010,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11130,7 +11130,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index e7bd3ec9b14..5e6569da9d7 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -3761,7 +3761,7 @@ msgstr "GPL-2 lub wersja późniejsza" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11159,7 +11159,7 @@ msgstr "Numeracje" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11281,7 +11281,7 @@ msgstr "Filtr" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Pani" #. module: base diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index fe6b53693cb..92315dee4ef 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -3757,7 +3757,7 @@ msgstr "GPL-2 ou version anterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11162,7 +11162,7 @@ msgstr "Sequências" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11284,7 +11284,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Srª." #. module: base diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 8eec70f77b6..51e34a6e9be 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -3975,8 +3975,8 @@ msgstr "GPL-2 ou versão superior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11709,7 +11709,7 @@ msgstr "Seqüências" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra" #. module: base @@ -11836,7 +11836,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index 27ff3506cea..2cbc45fb22d 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.po @@ -3812,7 +3812,7 @@ msgstr "GPL-2 sau versiune mai nouă" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Dl." #. module: base @@ -11271,7 +11271,7 @@ msgstr "Secvențe" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "D-ra" #. module: base @@ -11399,7 +11399,7 @@ msgstr "Filtru" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Dna." #. module: base diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 835efe3fa58..57ac744865d 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -3794,7 +3794,7 @@ msgstr "GPL версии 2 или более поздней" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Г-н" #. module: base @@ -11243,7 +11243,7 @@ msgstr "Нумерация" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Г-жа" #. module: base @@ -11369,7 +11369,7 @@ msgstr "Фильтр" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Г-жа" #. module: base diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index c4fb21e7f70..c8f621a6ed8 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.po @@ -3760,7 +3760,7 @@ msgstr "GPL-2 alebo novšia verzia" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "pán" #. module: base @@ -11163,7 +11163,7 @@ msgstr "Postupnosti" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "slečna" #. module: base @@ -11290,7 +11290,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "pani" #. module: base diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index 0de03559923..45d82a64cd1 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.po @@ -3789,7 +3789,7 @@ msgstr "GPL-2 ali naslednja verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "G." #. module: base @@ -11220,7 +11220,7 @@ msgstr "Zaporedja" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Gospodična" #. module: base @@ -11348,7 +11348,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ga." #. module: base diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index 297d3f37ea9..6637361df72 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.po @@ -3681,7 +3681,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10994,7 +10994,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11114,7 +11114,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index 65f02a38fce..61d5fa09aff 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.po @@ -3758,8 +3758,8 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11139,8 +11139,8 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11259,8 +11259,8 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po index 92ba916bf1a..114337effd1 100644 --- a/openerp/addons/base/i18n/sr@latin.po +++ b/openerp/addons/base/i18n/sr@latin.po @@ -3865,7 +3865,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11178,7 +11178,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11298,7 +11298,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index c9d0a27b8c9..352e6ba4513 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -3768,8 +3768,8 @@ msgstr "GPL-2 eller senare version" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11176,7 +11176,7 @@ msgstr "Nummerserier" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Fru" #. module: base @@ -11300,7 +11300,7 @@ msgstr "Filtrera" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Frk." #. module: base diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index 0951f766fca..d91bddb206b 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "ลำดับ" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index 1c087b508eb..60cf53c393f 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.po @@ -3681,7 +3681,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10994,7 +10994,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11114,7 +11114,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index b9d1bb2a7c5..9ec92ff00cd 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -3824,8 +3824,8 @@ msgstr "GPL-2 veya sonraki sürümü" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -11280,7 +11280,7 @@ msgstr "Silsileler" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Bayan" #. module: base @@ -11404,7 +11404,7 @@ msgstr "Süzgeç" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Bayan" #. module: base diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index 1ded396d476..f42d5e2d0e1 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.po @@ -3717,7 +3717,7 @@ msgstr "GPL-2 або пізніша версія" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11046,7 +11046,7 @@ msgstr "Послідовності" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11166,7 +11166,7 @@ msgstr "Фільтр" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index a45da1f2dad..582ee6bd2c5 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index d8e03b80386..35e1c2cc32f 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -3709,7 +3709,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11028,7 +11028,7 @@ msgstr "Sequences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11150,7 +11150,7 @@ msgstr "Bộ lọc" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index 7b618b1e0e5..8a1ffd6136a 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -4081,7 +4081,7 @@ msgstr "GPL-2 或更新版本" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "先生" #. module: base @@ -11468,8 +11468,8 @@ msgstr "序列" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11588,7 +11588,7 @@ msgstr "过滤" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "女士" #. module: base diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po index 06a099c2196..78232e87ecf 100644 --- a/openerp/addons/base/i18n/zh_HK.po +++ b/openerp/addons/base/i18n/zh_HK.po @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index 5b6c6c37767..116eca54d8d 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.po @@ -3687,7 +3687,7 @@ msgstr "GPL-2 或更新版本" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -11013,7 +11013,7 @@ msgstr "序列" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11133,7 +11133,7 @@ msgstr "過濾器" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "女士" #. module: base diff --git a/openerp/addons/base/res/res_partner_data.xml b/openerp/addons/base/res/res_partner_data.xml index 138e44176f0..5bcb65a0461 100644 --- a/openerp/addons/base/res/res_partner_data.xml +++ b/openerp/addons/base/res/res_partner_data.xml @@ -20,17 +20,32 @@ contact Madam - Ms. + Mrs. contact Miss - Mss + Miss contact Sir - M. + Sir + + + contact + Mister + Mr. + + + contact + Doctor + Dr. + + + contact + Professor + Prof. From c49f2418c25d508cd74387ca47f9963f55640c4c Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Jul 2012 10:47:48 +0530 Subject: [PATCH 18/83] [FIX] Typo in Portuguese official language names. bzr revid: tpa@tinyerp.com-20120704051748-y41la206dwk67klv --- openerp/addons/base/i18n/base.pot | 4 ++-- openerp/tools/misc.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index b4d28052ba8..ae6825bfe8c 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -2155,7 +2155,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 -msgid "Portugese (BR) / Português (BR)" +msgid "Portuguese (BR) / Português (BR)" msgstr "" #. module: base @@ -3002,7 +3002,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 -msgid "Portugese / Português" +msgid "Portuguese / Português" msgstr "" #. module: base diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index 3aad91fb7b8..a81e1e1f647 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -612,8 +612,8 @@ def get_languages(): 'nl_BE': u'Flemish (BE) / Vlaams (BE)', 'oc_FR': u'Occitan (FR, post 1500) / Occitan', 'pl_PL': u'Polish / Język polski', - 'pt_BR': u'Portugese (BR) / Português (BR)', - 'pt_PT': u'Portugese / Português', + 'pt_BR': u'Portuguese (BR) / Português (BR)', + 'pt_PT': u'Portuguese / Português', 'ro_RO': u'Romanian / română', 'ru_RU': u'Russian / русский язык', 'si_LK': u'Sinhalese / සිංහල', From 6e6ef1ed0f7408639ff43434917fc4110ecbf850 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 5 Jul 2012 18:24:11 +0530 Subject: [PATCH 19/83] [IMP] remove res.payterm which is not in any part of code of server or addons. bzr revid: tpa@tinyerp.com-20120705125411-fd1eazoofe5mpbvf --- openerp/addons/base/i18n/base.pot | 10 ---------- openerp/addons/base/res/res_partner.py | 8 -------- openerp/addons/base/res/res_partner_view.xml | 19 ------------------- 3 files changed, 37 deletions(-) diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index b4d28052ba8..6b97092d430 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -1317,11 +1317,6 @@ msgstr "" msgid "Create _Menu" msgstr "" -#. module: base -#: field:res.payterm,name:0 -msgid "Payment Term (short name)" -msgstr "" - #. module: base #: model:ir.model,name:base.model_res_bank #: view:res.bank:0 @@ -3206,11 +3201,6 @@ msgstr "" msgid "Error ! You cannot create recursive associated members." msgstr "" -#. module: base -#: view:res.payterm:0 -msgid "Payment Term" -msgstr "" - #. module: base #: selection:res.lang,direction:0 msgid "Right-to-Left" diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 2165c8ad16d..66c5dea1b11 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -27,14 +27,6 @@ from tools.translate import _ import logging import pooler -class res_payterm(osv.osv): - _description = 'Payment term' - _name = 'res.payterm' - _order = 'name' - _columns = { - 'name': fields.char('Payment Term (short name)', size=64), - } - class res_partner_category(osv.osv): def name_get(self, cr, uid, ids, context=None): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 5159a7075cc..a6a4ad77c90 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -401,25 +401,6 @@ - - res.payterm - res.payterm - form - -
- - - -
-
-
- - Payment term - ir.actions.act_window - res.payterm - form - - + + + + + + + + + From aec461651e2671dd6bb1caf7ee21430c861c109f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 14 Aug 2012 14:31:12 +0200 Subject: [PATCH 29/83] [FIX] NUL byte in a file leads csv.reader to raise csv.Error bzr revid: xmo@openerp.com-20120814123112-p4iio7fl561ronln --- addons/base_import/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 07a3439419d..722a9bf848e 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -225,7 +225,7 @@ class ir_import(orm.TransientModel): 'headers': headers or False, 'preview': list(preview), } - except (TypeError, UnicodeDecodeError), e: + except (csv.Error, TypeError, UnicodeDecodeError), e: # Due to lazy generators, UnicodeDecodeError (for # instance) may only be raised when serializing the # preview to a list in the return. From 323b979146d6e0ba428a3e15e98f112cf9f80d43 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 14 Aug 2012 14:48:35 +0200 Subject: [PATCH 30/83] [ADD] error reporting to user during preview bzr revid: xmo@openerp.com-20120814124835-9nkqni98ie2eyt5r --- addons/base_import/__openerp__.py | 1 + addons/base_import/models.py | 2 +- addons/base_import/static/src/js/import.js | 12 ++++++++++-- addons/base_import/static/src/xml/import.xml | 8 +++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/addons/base_import/__openerp__.py b/addons/base_import/__openerp__.py index 230c514efc8..ab97e237909 100644 --- a/addons/base_import/__openerp__.py +++ b/addons/base_import/__openerp__.py @@ -27,6 +27,7 @@ Re-implement openerp's file import system: 'depends': ['base'], 'installable': True, 'auto_install': False, # set to true and allow uninstall? + 'css': ['static/src/css/import.css'], 'js': ['static/src/js/import.js'], 'qweb': ['static/src/xml/import.xml'], } diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 722a9bf848e..560a28f9067 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -231,7 +231,7 @@ class ir_import(orm.TransientModel): # preview to a list in the return. _logger.debug("Error during CSV parsing preview", exc_info=True) return { - 'error': _("Failed to parse CSV file: %s") % e, + 'error': str(e), # iso-8859-1 ensures decoding will always succeed, # even if it yields non-printable characters. This is # in case of UnicodeDecodeError (or csv.Error diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 5bb81d23cbb..559d74734e8 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -61,7 +61,7 @@ openerp.base_import = function (instance) { file_update: function (e) { if (!this.$('input.oe_import_file').val()) { return; } - // TODO: hide preview before calling set_file + this.$element.removeClass('oe_import_preview oe_import_error'); jsonp(this.$element, { url: '/base_import/set_file' }, this.proxy('file_updated')); @@ -76,7 +76,15 @@ openerp.base_import = function (instance) { }]).then(this.proxy('preview')); }, preview: function (result) { - this.$('table').html(QWeb.render('ImportView.preview', result)); + if (result.error) { + this.$element.addClass('oe_import_error'); + this.$('.oe_import_error_report').html( + QWeb.render('ImportView.error', result)); + } else { + this.$element.addClass('oe_import_preview'); + this.$('table').html( + QWeb.render('ImportView.preview', result)); + } }, }); }; diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index d2a3ec4f66d..7cf04c55292 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -1,6 +1,6 @@ -
+ @@ -9,6 +9,7 @@
+
@@ -22,4 +23,9 @@ > + +

Import preview failed due to:

+

Here is the start of the file we could not import:

+
+
From 8fa23a95186edd2f5bf6f223337d34f3a4e55e70 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 14 Aug 2012 16:14:56 +0200 Subject: [PATCH 31/83] [ADD] actual importing, no fields matching yet also no error pinpointing because API does not allow for it currently bzr revid: xmo@openerp.com-20120814141456-zh9kdbjy8wj1sxys --- addons/base_import/models.py | 29 ++++++++-- addons/base_import/static/src/js/import.js | 58 +++++++++++++++++--- addons/base_import/static/src/xml/import.xml | 17 +++++- 3 files changed, 89 insertions(+), 15 deletions(-) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 560a28f9067..a464649758d 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -11,6 +11,8 @@ try: except ImportError: from StringIO import StringIO +import psycopg2 + from openerp.osv import orm, fields from openerp.tools.translate import _ @@ -300,24 +302,39 @@ class ir_import(orm.TransientModel): record, fields, options, context=context) try: + _logger.info('importing %d rows...', len(data)) (code, record, message, _wat) = self.pool[record.res_model].import_data( cr, uid, import_fields, data, context=context) + _logger.info('done') + except Exception, e: + _logger.exception("Import failed") # TODO: remove when exceptions stop being an "expected" - # behavior of import_data on some invalid input. + # behavior of import_data on some (most) invalid + # input. code, record, message = -1, None, str(e) - if dryrun: - cr.execute('ROLLBACK TO SAVEPOINT import') - else: - cr.execute('RELEASE SAVEPOINT import') + # If transaction aborted, RELEASE SAVEPOINT is going to raise + # an InternalError (ROLLBACK should work, maybe). Ignore that. + # TODO: to handle multiple errors, create savepoint around + # write and release it in case of write error (after + # adding error to errors array) => can keep on trying to + # import stuff, and rollback at the end if there is any + # error in the results. + try: + if dryrun: + cr.execute('ROLLBACK TO SAVEPOINT import') + else: + cr.execute('RELEASE SAVEPOINT import') + except psycopg2.InternalError: + pass if code != -1: return [] # TODO: add key for error location? # TODO: error not within normal preview, how to display? Re-preview - # with higher count? + # with higher ``count``? return [{ 'type': 'error', 'message': message, diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 559d74734e8..037a9662b02 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -1,5 +1,6 @@ openerp.base_import = function (instance) { var QWeb = instance.web.qweb; + var _t = instance.web._t; var _lt = instance.web._lt; /** @@ -41,7 +42,14 @@ openerp.base_import = function (instance) { 'change input.oe_import_file': 'file_update' }, init: function (parent, dataset) { - this._super(parent, {}); + var self = this; + this._super(parent, { + buttons: [ + {text: _t("Import File"), click: function () { + self.do_import(); + }, 'class': 'oe_import_dialog_button'} + ] + }); this.res_model = parent.model; // import object id this.id = null; @@ -57,6 +65,15 @@ openerp.base_import = function (instance) { }); }, + import_options: function () { + return { + // TODO: customizable gangnam style + quote: '"', + separator: ',', + headers: true, + }; + }, + //- File change section file_update: function (e) { if (!this.$('input.oe_import_file').val()) { return; } @@ -69,22 +86,49 @@ openerp.base_import = function (instance) { file_updated: function () { // immediately trigger preview... // TODO: test that write // succeeded? - this.Import.call('parse_preview', [this.id, { - quote: '"', - separator: ',', - headers: true, - }]).then(this.proxy('preview')); + this.Import.call( + 'parse_preview', [this.id, this.import_options()]) + .then(this.proxy('preview')); }, preview: function (result) { if (result.error) { this.$element.addClass('oe_import_error'); this.$('.oe_import_error_report').html( - QWeb.render('ImportView.error', result)); + QWeb.render('ImportView.preview.error', result)); } else { this.$element.addClass('oe_import_preview'); this.$('table').html( QWeb.render('ImportView.preview', result)); } }, + + //- import itself + do_import: function () { + var fields = this.$('.oe_import_fields input').map(function (index, el) { + return el.value || false; + }).get(); + this.Import.call( + 'do', [this.id, fields, this.import_options()], { + // maybe could do a dryrun after successful + // preview or something (note: don't go to + // this.result if dryrun=true) + dryrun: false + }) + .then(this.proxy('result')); + }, + result: function (errors) { + if (!errors.length) { + if (this.getParent().reload_content) { + this.getParent().reload_content(); + } + this.close(); + return; + } + // import failed (or maybe just warnings, if we ever get + // warnings?) + this.$element.addClass('oe_import_error'); + this.$('.oe_import_error_report').html( + QWeb.render('ImportView.error', {errors: errors})); + }, }); }; diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index 7cf04c55292..483c9a4a3cb 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -7,9 +7,9 @@ +
-
@@ -18,14 +18,27 @@ + + + + + + - +

Import preview failed due to:

Here is the start of the file we could not import:

+
    +
  • + + +
  • +
From 34f9664377ae837a7080b88a24c87b6ed88f88d0 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 14 Aug 2012 16:29:33 +0200 Subject: [PATCH 32/83] [FIX] no field selected for import by the user bzr revid: xmo@openerp.com-20120814142933-myng67f2cily6vfg --- addons/base_import/models.py | 14 +++++++++-- addons/base_import/tests/test_cases.py | 32 ++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index a464649758d..2e44c686fd7 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -252,9 +252,12 @@ class ir_import(orm.TransientModel): :param list(str|bool): fields :returns: (data, fields) :rtype: (list(list(str)), list(str)) + :raises ValueError: in case the import data could not be converted """ # Get indices for non-empty fields indices = [index for index, field in enumerate(fields) if field] + if not indices: + raise ValueError(_("You must configure at least one field to import")) # If only one index, itemgetter will return an atom rather # than a 1-tuple if len(indices) == 1: mapper = lambda row: [row[indices[0]]] @@ -298,8 +301,15 @@ class ir_import(orm.TransientModel): cr.execute('SAVEPOINT import') (record,) = self.browse(cr, uid, [id], context=context) - data, import_fields = self._convert_import_data( - record, fields, options, context=context) + try: + data, import_fields = self._convert_import_data( + record, fields, options, context=context) + except ValueError, e: + return [{ + 'type': 'error', + 'message': str(e), + 'record': False, + }] try: _logger.info('importing %d rows...', len(data)) diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index 00230f9a3c0..e2b61c1928b 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -311,3 +311,35 @@ class test_convert_import_data(TransactionCase): ('foo', '2'), ('', '6'), ]) + + def test_nofield(self): + Import = self.registry('base_import.import') + + id = Import.create(self.cr, self.uid, { + 'res_model': 'base_import.tests.models.preview', + 'file': base64.b64encode('name,Some Value,Counter\n' + 'foo,1,2\n') + }) + + record = Import.browse(self.cr, self.uid, id) + self.assertRaises( + ValueError, + Import._convert_import_data, + record, [], + {'quote': '"', 'separator': ',', 'headers': True,}) + + def test_falsefields(self): + Import = self.registry('base_import.import') + + id = Import.create(self.cr, self.uid, { + 'res_model': 'base_import.tests.models.preview', + 'file': base64.b64encode('name,Some Value,Counter\n' + 'foo,1,2\n') + }) + + record = Import.browse(self.cr, self.uid, id) + self.assertRaises( + ValueError, + Import._convert_import_data, + record, [False, False, False], + {'quote': '"', 'separator': ',', 'headers': True,}) From 7f319f5a374842a2731e7fbacb468452be784c69 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 14 Aug 2012 19:23:22 +0200 Subject: [PATCH 33/83] [ADD] blahblahblahblah also basic CSS effects bzr revid: xmo@openerp.com-20120814172322-1hx09qqh90umjdcq --- addons/base_import/static/src/css/import.css | 27 ++++++++++++ addons/base_import/static/src/js/import.js | 27 +++++++++--- addons/base_import/static/src/xml/import.xml | 46 +++++++++++++++++--- 3 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 addons/base_import/static/src/css/import.css diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css new file mode 100644 index 00000000000..4bb1fdeaea0 --- /dev/null +++ b/addons/base_import/static/src/css/import.css @@ -0,0 +1,27 @@ +.oe_import dd, +.oe_import .oe_import_grid, +.oe_import .oe_import_error_report, +.oe_import .oe_import_with_file, +.oe_import .oe_import_noheaders { + display: none; +} + +.oe_import.oe_import_preview .oe_import_grid { + display: table; +} +.oe_import.oe_import_error .oe_import_error_report, +.oe_import.oe_import_with_file .oe_import_with_file, +.oe_import.oe_import_noheaders .oe_import_noheaders { + display: block; +} + +.oe_import .oe_import_error_report ul .oe_import_report_error { + background-color: #FFD9DB; +} +.oe_import .oe_import_error_report ul .oe_import_report_warning { + background-color: #FEFFD9; +} + +.oe_import .oe_import_noheaders { + color: #888; +} diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 037a9662b02..3a52ad548ec 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -39,7 +39,22 @@ openerp.base_import = function (instance) { template: 'ImportView', dialog_title: _lt("Import Data"), events: { - 'change input.oe_import_file': 'file_update' + 'change input.oe_import_file': 'file_update', + 'click input.oe_import_has_header': function (e) { + this.$element.toggleClass( + 'oe_import_noheaders', !e.target.checked); + this.settings_updated(); + }, + 'click a.oe_import_csv': function (e) { + e.preventDefault(); + }, + 'click a.oe_import_export': function (e) { + e.preventDefault(); + }, + 'click dt a': function (e) { + e.preventDefault(); + $(e.target).parent().next().toggle(); + } }, init: function (parent, dataset) { var self = this; @@ -70,21 +85,21 @@ openerp.base_import = function (instance) { // TODO: customizable gangnam style quote: '"', separator: ',', - headers: true, + headers: this.$('input.oe_import_has_header').prop('checked'), }; }, - //- File change section + //- File & settings change section file_update: function (e) { if (!this.$('input.oe_import_file').val()) { return; } this.$element.removeClass('oe_import_preview oe_import_error'); jsonp(this.$element, { url: '/base_import/set_file' - }, this.proxy('file_updated')); + }, this.proxy('settings_updated')); }, - file_updated: function () { - // immediately trigger preview... + settings_updated: function () { + this.$element.addClass('oe_import_with_file'); // TODO: test that write // succeeded? this.Import.call( 'parse_preview', [this.id, this.import_options()]) diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index 483c9a4a3cb..bb4f1d742d5 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -4,15 +4,51 @@ - +

Upload your file

+

Select the .CSV + file to import. If you need a sample importable file, you + can use the export + tool to generate one.

+ -
- -
+
+

Map your data to OpenERP

+ + +

If the file contains + the column names, OpenERP can try auto-detecting the + field corresponding to the column. This makes imports + simpler especially when the file has many columns.

+ +
+ + + +

Frequently Asked Questions

+
+
Need to import data from an other application?
+
+

In order to re-create relationships between + different records, you should use the unique + identifier from the original application and + map it to the ID + column in OpenERP. When you + import an other record that links to the first + one, use XXX/ID + to the original unique identifier.

+

The ID + will also be used to update the original + import if you need to re-import modified data + later, it's thus good practice to specify it + whenever possible

+
+
+ -
Date: Thu, 23 Aug 2012 10:32:53 +0530 Subject: [PATCH 34/83] [FIX] remove unnecessary code. bzr revid: tpa@tinyerp.com-20120823050253-ng0muqz77h5cgv14 --- openerp/addons/base/res/res_partner_view.xml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 92a264f0089..018be644d75 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -426,25 +426,6 @@ - - res.payterm - res.payterm - -
- - - -
-
-
- - Payment term - ir.actions.act_window - res.payterm - form - - - Partner Categories From 041b29e164a8a1737c5f11ee8447672fbcb3b474 Mon Sep 17 00:00:00 2001 From: "Twinkle Christian (OpenERP)" Date: Fri, 24 Aug 2012 12:03:38 +0530 Subject: [PATCH 35/83] [MERGE]merge with main branch bzr revid: tch@tinyerp.com-20120824063338-xjf9tt2or8mp6kcg --- openerp/addons/base/res/res_bank.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index 95f05cf89d6..6c654097d15 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -201,7 +201,7 @@ class res_partner_bank(osv.osv): result = self._prepare_name_get(cr, uid, t, val, context=context) except: result += ' [Formatting Error]' - raise osv.except_osv(_("Warning"), _("You cannot avoid default format_layout to result in True")) + raise osv.except_osv(_("Error"), _("You cannot avoid default format_layout to result in True")) res.append((val.id, result)) return res From 523a7610c413d15fbfec104a8aa4c9d9de92085e Mon Sep 17 00:00:00 2001 From: "Twinkle Christian (OpenERP)" Date: Fri, 24 Aug 2012 12:39:07 +0530 Subject: [PATCH 36/83] [MERGE]merge with main branch bzr revid: tch@tinyerp.com-20120824070907-g6g6jpkj2t10kals --- openerp/addons/base/res/res_bank.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index 6c654097d15..dbf098f3535 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -201,7 +201,7 @@ class res_partner_bank(osv.osv): result = self._prepare_name_get(cr, uid, t, val, context=context) except: result += ' [Formatting Error]' - raise osv.except_osv(_("Error"), _("You cannot avoid default format_layout to result in True")) + raise osv.except_osv(_("Formating Error"), _("Invalid Bank name")) res.append((val.id, result)) return res From a932d1dc0069e13cd26b113c90aed0d4b3320ff4 Mon Sep 17 00:00:00 2001 From: "Twinkle Christian (OpenERP)" Date: Fri, 24 Aug 2012 14:12:32 +0530 Subject: [PATCH 37/83] [MERGE]merge with main branch bzr revid: tch@tinyerp.com-20120824084232-8b0x7euh7m9f0yor --- openerp/addons/base/res/res_bank.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index dbf098f3535..112e64de812 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -201,7 +201,7 @@ class res_partner_bank(osv.osv): result = self._prepare_name_get(cr, uid, t, val, context=context) except: result += ' [Formatting Error]' - raise osv.except_osv(_("Formating Error"), _("Invalid Bank name")) + raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format.")) res.append((val.id, result)) return res From 7e59db5f0f04dfc165131566f2284d575e194fe6 Mon Sep 17 00:00:00 2001 From: "Twinkle Christian (OpenERP)" Date: Fri, 24 Aug 2012 14:29:18 +0530 Subject: [PATCH 38/83] [MERGE]merge with main branch bzr revid: tch@tinyerp.com-20120824085918-y69p2653fsqw5t9y --- openerp/addons/base/res/res_bank.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index 112e64de812..d07b5d712f7 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -200,7 +200,6 @@ class res_partner_bank(osv.osv): val._data[val.id]['bank_name'] = _('BANK') result = self._prepare_name_get(cr, uid, t, val, context=context) except: - result += ' [Formatting Error]' raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format.")) res.append((val.id, result)) return res From 8c4ce402d1aa11e99c7d4e87bbb7e35f68334bc4 Mon Sep 17 00:00:00 2001 From: Hardik Date: Tue, 28 Aug 2012 12:11:11 +0530 Subject: [PATCH 39/83] [IMP]Improved base module as per requirement. bzr revid: hsa@tinyerp.com-20120828064111-msyv13aa07az17zo --- openerp/addons/base/res/res_config.py | 17 +++++++++++++++++ openerp/addons/base/res/res_users.py | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 3f4a052a36b..3399cd1153e 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -553,4 +553,21 @@ class res_config_settings(osv.osv_memory): return act_window.read(cr, uid, action_ids[0], [], context=context) return {} + def name_get(self, cr, uid, ids, context=None): + """ Override name_get method to return an appropriate configuration wizard + name, and not the generated name.""" + if not len(ids): + return [] + # name_get may receive int id instead of an id list + if isinstance(ids, (int, long)): + ids = [ids] + + act_window = self.pool.get('ir.actions.act_window') + action_ids = act_window.search(cr, uid, [('res_model', '=', self._name)], context=context) + name = self._name + if action_ids: + name = act_window.read(cr, uid, action_ids[0], ['name'], context=context)['name'] + + return [(record.id, name) for record in self.browse(cr, uid , ids, context=context)] + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index cddc02673b8..3078d94fd9d 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -51,7 +51,7 @@ class groups(osv.osv): else: res[g.id] = g.name return res - + _columns = { 'name': fields.char('Name', size=64, required=True, translate=True), 'users': fields.many2many('res.users', 'res_groups_users_rel', 'gid', 'uid', 'Users'), @@ -61,7 +61,7 @@ class groups(osv.osv): 'menu_access': fields.many2many('ir.ui.menu', 'ir_ui_menu_group_rel', 'gid', 'menu_id', 'Access Menu'), 'comment' : fields.text('Comment', size=250, translate=True), 'category_id': fields.many2one('ir.module.category', 'Application', select=True), - 'full_name': fields.function(_get_full_name, type='char', string='Group Name'), + 'full_name': fields.function(_get_full_name, type='char', string='Group Name', store=True), } _sql_constraints = [ @@ -815,7 +815,7 @@ class users_view(osv.osv): 'type': 'selection', 'string': app and app.name or _('Other'), 'selection': [(False, '')] + [(g.id, g.name) for g in gs], - 'help': '\n'.join(tips), + 'help': g.comment, } else: # boolean group fields From 00a456096399c39c5cd8e82772ddc36685efa003 Mon Sep 17 00:00:00 2001 From: "pso (OpenERP)" Date: Tue, 28 Aug 2012 18:17:50 +0530 Subject: [PATCH 40/83] [MERGE] Merged MDI's branch to fix the issue of name_get of ir.actions.todo bzr revid: pso@tinyerp.com-20120828124750-1kbqgdq0mrc0av2b --- openerp/addons/base/res/res_config.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 3f4a052a36b..8dcd5f769fe 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -552,5 +552,22 @@ class res_config_settings(osv.osv_memory): if action_ids: return act_window.read(cr, uid, action_ids[0], [], context=context) return {} + + def name_get(self, cr, uid, ids, context=None): + """ Override name_get method to return an appropriate configuration wizard + name, and not the generated name.""" + + if not len(ids): + return [] + # name_get may receive int id instead of an id list + if isinstance(ids, (int, long)): + ids = [ids] + + act_window = self.pool.get('ir.actions.act_window') + action_ids = act_window.search(cr, uid, [('res_model', '=', self._name)], context=context) + name = self._name + if action_ids: + name = act_window.read(cr, uid, action_ids[0], ['name'], context=context)['name'] + return [(record.id, name) for record in self.browse(cr, uid , ids, context=context)] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 3abb39324779a68b2c28233ffb4a311200864c4f Mon Sep 17 00:00:00 2001 From: "pso (OpenERP)" Date: Tue, 28 Aug 2012 18:26:23 +0530 Subject: [PATCH 41/83] [IMP] Improvements bzr revid: pso@tinyerp.com-20120828125623-1nq457mpd1dijq4j --- openerp/addons/base/res/res_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 8dcd5f769fe..d6b42e970bf 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -557,7 +557,7 @@ class res_config_settings(osv.osv_memory): """ Override name_get method to return an appropriate configuration wizard name, and not the generated name.""" - if not len(ids): + if not ids: return [] # name_get may receive int id instead of an id list if isinstance(ids, (int, long)): From 7006b17af32d81ebf6b41cae2ca5ea50d1c0f061 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 12:32:15 +0200 Subject: [PATCH 42/83] [IMP] un-b64 the import file field, use raw binary bzr revid: xmo@openerp.com-20120830103215-trv5cjg9jvj8ano1 --- addons/base_import/controllers.py | 2 +- addons/base_import/models.py | 12 +++++------ addons/base_import/tests/test_cases.py | 29 ++++++++++++-------------- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/addons/base_import/controllers.py b/addons/base_import/controllers.py index bc014cd8265..d978730b482 100644 --- a/addons/base_import/controllers.py +++ b/addons/base_import/controllers.py @@ -15,7 +15,7 @@ class ImportController(openerpweb.Controller): import_id = int(import_id) written = req.session.model('base_import.import').write(import_id, { - 'file': base64.b64encode(file.read()), + 'file': file.read(), 'file_name': file.filename, 'file_type': file.content_type, }, req.session.eval_context(req.context)) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 2e44c686fd7..f340b582eaa 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -1,10 +1,7 @@ -import base64 -import codecs import csv import itertools import logging import operator -import random try: from cStringIO import StringIO @@ -24,7 +21,8 @@ class ir_import(orm.TransientModel): _columns = { 'res_model': fields.char('Model', size=64), - 'file': fields.binary('File'), + 'file': fields.binary( + 'File', help="File to check and/or import, raw binary (not base64)"), 'file_name': fields.char('File Name', size=None), 'file_mime': fields.char('File Type', size=None), } @@ -123,7 +121,7 @@ class ir_import(orm.TransientModel): :throws UnicodeDecodeError: if ``options.encoding`` is incorrect """ csv_iterator = csv.reader( - StringIO(base64.b64decode(record.file)), + StringIO(record.file), quotechar=options['quote'], delimiter=options['separator']) csv_nonempty = itertools.ifilter(None, csv_iterator) @@ -238,8 +236,8 @@ class ir_import(orm.TransientModel): # even if it yields non-printable characters. This is # in case of UnicodeDecodeError (or csv.Error # compounded with UnicodeDecodeError) - 'preview': base64.b64decode(record.file)[:ERROR_PREVIEW_BYTES]\ - .decode('iso-8859-1'), + 'preview': record.file[:ERROR_PREVIEW_BYTES] + .decode( 'iso-8859-1'), } def _convert_import_data(self, record, fields, options, context=None): diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index e2b61c1928b..420140cd2ac 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -167,15 +167,12 @@ class test_match_headers_multiple(TransactionCase): }) ) -import base64, csv class test_preview(TransactionCase): def make_import(self): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'res.users', - 'file': base64.b64encode( - u"로그인,언어\n".encode('euc_kr'), - "bob,1\n"), + 'file': u"로그인,언어\nbob,1\n".encode('euc_kr'), }) return Import, id @@ -211,10 +208,10 @@ class test_preview(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) result = Import.parse_preview(self.cr, self.uid, id, { @@ -248,10 +245,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -272,10 +269,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -296,10 +293,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' ',3,\n' - ',5,6\n') + ',5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -317,8 +314,8 @@ class test_convert_import_data(TransactionCase): id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' - 'foo,1,2\n') + 'file': 'name,Some Value,Counter\n' + 'foo,1,2\n' }) record = Import.browse(self.cr, self.uid, id) @@ -333,8 +330,8 @@ class test_convert_import_data(TransactionCase): id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' - 'foo,1,2\n') + 'file': 'name,Some Value,Counter\n' + 'foo,1,2\n' }) record = Import.browse(self.cr, self.uid, id) From 246d9bd37f8cfe36a17f4e4d1ce89c8f44ff39a3 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 12:32:45 +0200 Subject: [PATCH 43/83] [IMP] rename $element to $el bzr revid: xmo@openerp.com-20120830103245-3x8hzqquwqg27sji --- addons/base_import/static/src/js/import.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 3a52ad548ec..81b7397ba00 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -41,7 +41,7 @@ openerp.base_import = function (instance) { events: { 'change input.oe_import_file': 'file_update', 'click input.oe_import_has_header': function (e) { - this.$element.toggleClass( + this.$el.toggleClass( 'oe_import_noheaders', !e.target.checked); this.settings_updated(); }, @@ -93,13 +93,13 @@ openerp.base_import = function (instance) { file_update: function (e) { if (!this.$('input.oe_import_file').val()) { return; } - this.$element.removeClass('oe_import_preview oe_import_error'); - jsonp(this.$element, { + this.$el.removeClass('oe_import_preview oe_import_error'); + jsonp(this.$el, { url: '/base_import/set_file' }, this.proxy('settings_updated')); }, settings_updated: function () { - this.$element.addClass('oe_import_with_file'); + this.$el.addClass('oe_import_with_file'); // TODO: test that write // succeeded? this.Import.call( 'parse_preview', [this.id, this.import_options()]) @@ -107,11 +107,11 @@ openerp.base_import = function (instance) { }, preview: function (result) { if (result.error) { - this.$element.addClass('oe_import_error'); + this.$el.addClass('oe_import_error'); this.$('.oe_import_error_report').html( QWeb.render('ImportView.preview.error', result)); } else { - this.$element.addClass('oe_import_preview'); + this.$el.addClass('oe_import_preview'); this.$('table').html( QWeb.render('ImportView.preview', result)); } @@ -141,7 +141,7 @@ openerp.base_import = function (instance) { } // import failed (or maybe just warnings, if we ever get // warnings?) - this.$element.addClass('oe_import_error'); + this.$el.addClass('oe_import_error'); this.$('.oe_import_error_report').html( QWeb.render('ImportView.error', {errors: errors})); }, From b1407fc769bdde6a45c8214a7c74fbecfbae6234 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 12:39:28 +0200 Subject: [PATCH 44/83] [FIX] field for file mime type is file_type, not file_mime bzr revid: xmo@openerp.com-20120830103928-rjtrdvkzrybfpi0c --- addons/base_import/controllers.py | 1 - addons/base_import/models.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/base_import/controllers.py b/addons/base_import/controllers.py index d978730b482..85ff993e92e 100644 --- a/addons/base_import/controllers.py +++ b/addons/base_import/controllers.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -import base64 import simplejson try: diff --git a/addons/base_import/models.py b/addons/base_import/models.py index f340b582eaa..80c6df70a74 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -24,7 +24,7 @@ class ir_import(orm.TransientModel): 'file': fields.binary( 'File', help="File to check and/or import, raw binary (not base64)"), 'file_name': fields.char('File Name', size=None), - 'file_mime': fields.char('File Type', size=None), + 'file_type': fields.char('File Type', size=None), } def get_fields(self, cr, uid, model, context=None, From ca6323607e4b382a3fb9f54a841f35f529267622 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 13:06:03 +0200 Subject: [PATCH 45/83] [IMP] make import objects live for 12 hours when transient cron is active bzr revid: xmo@openerp.com-20120830110603-8stvh3vpsn4vzr4f --- addons/base_import/models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 80c6df70a74..0f1d8c5705e 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -18,6 +18,8 @@ ERROR_PREVIEW_BYTES = 200 _logger = logging.getLogger(__name__) class ir_import(orm.TransientModel): _name = 'base_import.import' + # allow imports to survive for 12h in case user is slow + _transient_max_hours = 12.0 _columns = { 'res_model': fields.char('Model', size=64), From 302cabfccb151480895cf9bd8759701667f3a999 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 14:52:32 +0200 Subject: [PATCH 46/83] [IMP] Make CSV options (quoting and separator) customizable Also autogen input ids so labels work correctly without collision risks, and make toggling links more flexible bzr revid: xmo@openerp.com-20120830125232-d7g7s5oid4qivaq2 --- addons/base_import/static/src/css/import.css | 8 ++++++ addons/base_import/static/src/js/import.js | 26 ++++++++++++-------- addons/base_import/static/src/xml/import.xml | 22 ++++++++++++++--- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 4bb1fdeaea0..63b53a9e5c1 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -1,4 +1,5 @@ .oe_import dd, +.oe_import .oe_import_toggled, .oe_import .oe_import_grid, .oe_import .oe_import_error_report, .oe_import .oe_import_with_file, @@ -25,3 +26,10 @@ .oe_import .oe_import_noheaders { color: #888; } + +.oe_import a.oe_import_toggle { + display: block; +} +.oe_import a.oe_import_toggle:before { + content: '> ' +} diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 81b7397ba00..99397304d16 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -38,22 +38,26 @@ openerp.base_import = function (instance) { instance.web.DataImport = instance.web.Dialog.extend({ template: 'ImportView', dialog_title: _lt("Import Data"), + defaults: { + quoting: '"', + separator: ',', + }, events: { 'change input.oe_import_file': 'file_update', - 'click input.oe_import_has_header': function (e) { - this.$el.toggleClass( - 'oe_import_noheaders', !e.target.checked); - this.settings_updated(); - }, + 'change input:not(.oe_import_file)': 'settings_updated', 'click a.oe_import_csv': function (e) { e.preventDefault(); }, 'click a.oe_import_export': function (e) { e.preventDefault(); }, - 'click dt a': function (e) { + 'click a.oe_import_toggle': function (e) { e.preventDefault(); - $(e.target).parent().next().toggle(); + var $el = $(e.target); + ($el.next().length + ? $el.next() + : $el.parent().next()) + .toggle(); } }, init: function (parent, dataset) { @@ -82,9 +86,8 @@ openerp.base_import = function (instance) { import_options: function () { return { - // TODO: customizable gangnam style - quote: '"', - separator: ',', + quote: this.$('input.oe_import_quoting').val(), + separator: this.$('input.oe_import_separator').val(), headers: this.$('input.oe_import_has_header').prop('checked'), }; }, @@ -106,6 +109,9 @@ openerp.base_import = function (instance) { .then(this.proxy('preview')); }, preview: function (result) { + this.$el.toggleClass( + 'oe_import_noheaders', + !this.$('input.oe_import_has_header').prop('checked')); if (result.error) { this.$el.addClass('oe_import_error'); this.$('.oe_import_error_report').html( diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index bb4f1d742d5..a85f8e960c1 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -1,5 +1,6 @@ +
@@ -9,8 +10,9 @@ file to import. If you need a sample importable file, you can use the export tool to generate one.

- - + +

Map your data to OpenERP

@@ -25,11 +27,23 @@
- + + File Format Options… +
+ + + +
+ + +

Frequently Asked Questions

-
Need to import data from an other application?
+
+ Need to import data from an other application?

In order to re-create relationships between different records, you should use the unique From cdb686980986b0fc200483b90dbb18fbdda6c585 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 30 Aug 2012 16:12:26 +0200 Subject: [PATCH 47/83] [IMP] add encoding csv option and generify handling of options a bit, imprive styling, and rename 'quote' to 'quoting' bzr revid: xmo@openerp.com-20120830141226-exli9s1hh4vij6sd --- addons/base_import/models.py | 6 +++--- addons/base_import/static/src/css/import.css | 10 ++++++++++ addons/base_import/static/src/js/import.js | 21 ++++++++++++-------- addons/base_import/static/src/xml/import.xml | 18 ++++++++--------- addons/base_import/tests/test_cases.py | 18 ++++++++--------- 5 files changed, 44 insertions(+), 29 deletions(-) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 0f1d8c5705e..51fac2af91c 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -124,10 +124,10 @@ class ir_import(orm.TransientModel): """ csv_iterator = csv.reader( StringIO(record.file), - quotechar=options['quote'], + quotechar=options['quoting'], delimiter=options['separator']) csv_nonempty = itertools.ifilter(None, csv_iterator) - # TODO: guess encoding? + # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet encoding = options.get('encoding', 'utf-8') return itertools.imap( lambda row: [item.decode(encoding) for item in row], @@ -206,7 +206,7 @@ class ir_import(orm.TransientModel): :param id: identifier of the import :param int count: number of preview lines to generate :param options: format-specific options. - CSV: {encoding, quote, separator, headers} + CSV: {encoding, quoting, separator, headers} :type options: {str, str, str, bool} :returns: {fields, matches, headers, preview} | {error, preview} :rtype: {dict(str: dict(...)), dict(int, list(str)), list(str), list(list(str))} | {str, str} diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 63b53a9e5c1..207f2aed9c6 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -33,3 +33,13 @@ .oe_import a.oe_import_toggle:before { content: '> ' } + +.oe_import .oe_import_options p { + margin: 0; + padding: 0; +} +.oe_import .oe_import_options label { + display: inline-block; + width: 10em; + text-align: right; +} diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 99397304d16..2853f36019a 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -38,10 +38,11 @@ openerp.base_import = function (instance) { instance.web.DataImport = instance.web.Dialog.extend({ template: 'ImportView', dialog_title: _lt("Import Data"), - defaults: { - quoting: '"', - separator: ',', - }, + opts: [ + {name: 'encoding', label: _lt("Encoding:"), value: 'utf-8'}, + {name: 'separator', label: _lt("Separator:"), value: ','}, + {name: 'quoting', label: _lt("Quoting:"), value: '"'} + ], events: { 'change input.oe_import_file': 'file_update', 'change input:not(.oe_import_file)': 'settings_updated', @@ -85,11 +86,15 @@ openerp.base_import = function (instance) { }, import_options: function () { - return { - quote: this.$('input.oe_import_quoting').val(), - separator: this.$('input.oe_import_separator').val(), - headers: this.$('input.oe_import_has_header').prop('checked'), + var self = this; + var options = { + headers: this.$('input.oe_import_has_header').prop('checked') }; + _(this.opts).each(function (opt) { + options[opt.name] = + self.$('input.oe_import_' + opt.name).val(); + }); + return options; }, //- File & settings change section diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index a85f8e960c1..a2844f8d7b9 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -29,15 +29,15 @@

File Format Options… -
- - - -
- - +
+

+ + + +

Frequently Asked Questions

diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index 420140cd2ac..5479ae94428 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -179,7 +179,7 @@ class test_preview(TransactionCase): def test_encoding(self): Import, id = self.make_import() result = Import.parse_preview(self.cr, self.uid, id, { - 'quote': '"', + 'quoting': '"', 'separator': ',', }) self.assertTrue('error' in result) @@ -188,7 +188,7 @@ class test_preview(TransactionCase): Import, id = self.make_import() result = Import.parse_preview(self.cr, self.uid, id, { - 'quote': 'foo', + 'quoting': 'foo', 'separator': ',', 'encoding': 'euc_kr', }) @@ -198,7 +198,7 @@ class test_preview(TransactionCase): Import, id = self.make_import() result = Import.parse_preview(self.cr, self.uid, id, { - 'quote': '"', + 'quoting': '"', 'separator': 'bob', 'encoding': 'euc_kr', }) @@ -215,7 +215,7 @@ class test_preview(TransactionCase): }) result = Import.parse_preview(self.cr, self.uid, id, { - 'quote': '"', + 'quoting': '"', 'separator': ',', 'headers': True, }) @@ -253,7 +253,7 @@ class test_convert_import_data(TransactionCase): record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( record, ['name', 'somevalue', 'othervalue'], - {'quote': '"', 'separator': ',', 'headers': True,}) + {'quoting': '"', 'separator': ',', 'headers': True,}) self.assertItemsEqual(fields, ['name', 'somevalue', 'othervalue']) self.assertItemsEqual(data, [ @@ -277,7 +277,7 @@ class test_convert_import_data(TransactionCase): record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( record, ['name', False, 'othervalue'], - {'quote': '"', 'separator': ',', 'headers': True,}) + {'quoting': '"', 'separator': ',', 'headers': True,}) self.assertItemsEqual(fields, ['name', 'othervalue']) self.assertItemsEqual(data, [ @@ -301,7 +301,7 @@ class test_convert_import_data(TransactionCase): record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( record, ['name', False, 'othervalue'], - {'quote': '"', 'separator': ',', 'headers': True,}) + {'quoting': '"', 'separator': ',', 'headers': True,}) self.assertItemsEqual(fields, ['name', 'othervalue']) self.assertItemsEqual(data, [ @@ -323,7 +323,7 @@ class test_convert_import_data(TransactionCase): ValueError, Import._convert_import_data, record, [], - {'quote': '"', 'separator': ',', 'headers': True,}) + {'quoting': '"', 'separator': ',', 'headers': True,}) def test_falsefields(self): Import = self.registry('base_import.import') @@ -339,4 +339,4 @@ class test_convert_import_data(TransactionCase): ValueError, Import._convert_import_data, record, [False, False, False], - {'quote': '"', 'separator': ',', 'headers': True,}) + {'quoting': '"', 'separator': ',', 'headers': True,}) From b6eacb18e747f262b9ca0cd2db52b78f0d55e15c Mon Sep 17 00:00:00 2001 From: Hardik Date: Fri, 31 Aug 2012 14:14:55 +0530 Subject: [PATCH 48/83] [IMP]Add multi currency field and tooltip messages are add bzr revid: hsa@tinyerp.com-20120831084455-fnugi1p4q6hwb5r3 --- addons/account/res_config.py | 2 ++ addons/account/res_config_view.xml | 4 ++++ addons/hr/security/hr_security.xml | 3 +++ addons/sale/security/sale_security.xml | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/addons/account/res_config.py b/addons/account/res_config.py index 658f87962ff..79ab16ac6be 100644 --- a/addons/account/res_config.py +++ b/addons/account/res_config.py @@ -114,6 +114,8 @@ class account_config_settings(osv.osv_memory): help="This purchase tax will be assigned by default on new products."), 'decimal_precision': fields.integer('Decimal precision on journal entries', help="""As an example, a decimal precision of 2 will allow journal entries like: 9.99 EUR, whereas a decimal precision of 4 will allow journal entries like: 0.0231 EUR."""), + 'group_multi_currency': fields.boolean('allow multi currencies', + implied_group='base.group_multi_currency'), } def _default_company(self, cr, uid, context=None): diff --git a/addons/account/res_config_view.xml b/addons/account/res_config_view.xml index 79a65f70414..2ae5f8ed5ac 100644 --- a/addons/account/res_config_view.xml +++ b/addons/account/res_config_view.xml @@ -121,6 +121,10 @@
From 34d15bb862b67770f293c27d6ed1984f33ca69a8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 10 Sep 2012 09:20:32 +0200 Subject: [PATCH 60/83] [IMP] base_import: lexicographically sort fields in field-matching UI bzr revid: xmo@openerp.com-20120910072032-wbgafg3z45z4l29a --- addons/base_import/static/src/js/import.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 947955d94af..63a266ef6c0 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -199,6 +199,12 @@ openerp.base_import = function (instance) { traverse(field, []); }); + var cmp = function (field1, field2) { + return field1.text.localeCompare(field2.text); + + }; + regulars.sort(cmp); + o2m.sort(cmp); return basic.concat([ { text: _t("Normal Fields"), children: regulars }, { text: _t("Relation Fields"), children: o2m } From 5848e72d421d0c63a0a9bd3b254b6e4aa35d5cb6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 11 Sep 2012 08:36:07 +0200 Subject: [PATCH 61/83] [REM] import from core, moving to module bzr revid: xmo@openerp.com-20120911063607-xvhyjqohptynro30 --- addons/web/__openerp__.py | 2 - addons/web/static/src/css/base.css | 8 +- addons/web/static/src/css/base.sass | 6 +- addons/web/static/src/css/data_import.css | 46 --- addons/web/static/src/js/data_import.js | 393 ---------------------- addons/web/static/src/js/view_list.js | 9 +- addons/web/static/src/js/views.js | 3 - addons/web/static/src/xml/base.xml | 10 +- 8 files changed, 17 insertions(+), 460 deletions(-) delete mode 100644 addons/web/static/src/css/data_import.css delete mode 100644 addons/web/static/src/js/data_import.js diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 44a3caaf8ec..fcfdca60a2a 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -48,7 +48,6 @@ This module provides the core of the OpenERP Web Client. "static/src/js/views.js", "static/src/js/data.js", "static/src/js/data_export.js", - "static/src/js/data_import.js", "static/src/js/search.js", "static/src/js/view_form.js", "static/src/js/view_list.js", @@ -63,7 +62,6 @@ This module provides the core of the OpenERP Web Client. "static/lib/jquery.textext/jquery.textext.css", "static/src/css/base.css", "static/src/css/data_export.css", - "static/src/css/data_import.css", "static/lib/cleditor/jquery.cleditor.css", ], 'qweb' : [ diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 73457e2bc19..f952dd298fd 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2574,10 +2574,13 @@ .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { display: none; } +.openerp .oe_list_buttons .oe_alternative { + visibility: hidden; +} .openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard { display: none; } -.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import { +.openerp .oe_list_buttons.oe_editing .oe_list_add { display: none; } .openerp .oe_list_buttons.oe_editing .oe_list_save { @@ -2586,6 +2589,9 @@ .openerp .oe_list_buttons.oe_editing .oe_list_discard { display: inline; } +.openerp .oe_list_buttons.oe_editing .oe_alternative { + visibility: visible; +} .openerp .oe_list { position: relative; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 5e346b32df2..1f332756cf7 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1971,15 +1971,19 @@ $sheet-max-width: 860px // }}} // ListView {{{ .oe_list_buttons + .oe_alternative + visibility: hidden .oe_list_save, .oe_list_discard display: none &.oe_editing - .oe_list_add, .oe_list_button_import + .oe_list_add display: none .oe_list_save display: inline-block .oe_list_discard display: inline + .oe_alternative + visibility: visible .oe_list position: relative diff --git a/addons/web/static/src/css/data_import.css b/addons/web/static/src/css/data_import.css deleted file mode 100644 index 47cd52aa081..00000000000 --- a/addons/web/static/src/css/data_import.css +++ /dev/null @@ -1,46 +0,0 @@ -.openerp .oe_import_grid { - border: none; - border-collapse: collapse; -} -.openerp .oe_import_grid-header .oe_import_grid-cell { - background: url(../img/gradientlinebg.gif) repeat-x #CCCCCC; - border-bottom: 1px solid #E3E3E3; - font-weight: bold; - text-align: left; -} -.openerp .oe_import_grid-row .oe_import_grid-cell { - border-bottom: 1px solid #E3E3E3; -} - -.openerp .oe_import_no_result .oe_import_result { - display: none; -} -.openerp .oe_import fieldset { - cursor: pointer; -} -.openerp .oe_import fieldset legend:before { - content: '\25BC '; -} -.openerp .oe_import fieldset.oe_closed legend:before { - content: '\25B6 '; -} -.openerp .oe_import fieldset.oe_closed table { - display: none; -} -.openerp .oe_import .separator.horizontal { - font-weight: bold; - border-bottom-width: 1px; - margin: 6px 4px 6px 1px; - height: 20px; -} -.openerp .duplicate_fld{ - background-color:#FF6666; -} -.openerp .select_fld{ - background: none repeat scroll 0 0 white; -} -.openerp .ui-autocomplete { - max-height: 300px; - overflow-y: auto; - padding-right: 20px; -} diff --git a/addons/web/static/src/js/data_import.js b/addons/web/static/src/js/data_import.js deleted file mode 100644 index 3c677b0ec26..00000000000 --- a/addons/web/static/src/js/data_import.js +++ /dev/null @@ -1,393 +0,0 @@ -openerp.web.data_import = function(instance) { -var QWeb = instance.web.qweb, - _t = instance.web._t; -/** - * Safari does not deal well at all with raw JSON data being returned. As a - * result, we're going to cheat by using a pseudo-jsonp: instead of getting - * JSON data in the iframe, we're getting a ``script`` tag which consists of a - * function call and the returned data (the json dump). - * - * The function is an auto-generated name bound to ``window``, which calls - * back into the callback provided here. - * - * @param {Object} form the form element (DOM or jQuery) to use in the call - * @param {Object} attributes jquery.form attributes object - * @param {Function} callback function to call with the returned data - */ -function jsonp(form, attributes, callback) { - attributes = attributes || {}; - var options = {jsonp: _.uniqueId('import_callback_')}; - window[options.jsonp] = function () { - delete window[options.jsonp]; - callback.apply(null, arguments); - }; - if ('data' in attributes) { - _.extend(attributes.data, options); - } else { - _.extend(attributes, {data: options}); - } - $(form).ajaxSubmit(attributes); -} - -instance.web.DataImport = instance.web.Dialog.extend({ - template: 'ImportDataView', - dialog_title: {toString: function () { return _t("Import Data"); }}, - init: function(parent, dataset){ - var self = this; - this._super(parent, {}); - this.model = parent.model; - this.fields = []; - this.all_fields = []; - this.fields_with_defaults = []; - this.required_fields = null; - - var convert_fields = function (root, prefix) { - prefix = prefix || ''; - _(root.fields).each(function (f) { - self.all_fields.push(prefix + f.name); - if (f.fields) { - convert_fields(f, prefix + f.id + '/'); - } - }); - }; - this.ready = $.Deferred.queue().then(function () { - self.required_fields = _(self.fields).chain() - .filter(function (field) { - return field.required && - !_.include(self.fields_with_defaults, field.id); }) - .pluck('id') - .uniq() - .value(); - convert_fields(self); - self.all_fields.sort(); - }); - }, - start: function() { - var self = this; - this._super(); - this.open({ - buttons: [ - {text: _t("Close"), click: function() { self.destroy(); }}, - {text: _t("Import File"), click: function() { self.do_import(); }, 'class': 'oe_import_dialog_button'} - ], - close: function(event, ui) { - self.destroy(); - } - }); - this.toggle_import_button(false); - this.$el.find('#csvfile').change(this.on_autodetect_data); - this.$el.find('fieldset').change(this.on_autodetect_data); - this.$el.delegate('fieldset legend', 'click', function() { - $(this).parent().toggleClass('oe_closed'); - }); - this.ready.push(new instance.web.DataSet(this, this.model).call( - 'fields_get', [], function (fields) { - self.graft_fields(fields); - self.ready.push(new instance.web.DataSet(self, self.model) - .default_get(_.pluck(self.fields, 'id')).then(function (fields) { - _.each(fields, function(val, key) { - if (val) { - self.fields_with_defaults.push(key); - } - }); - }) - ) - })); - }, - graft_fields: function (fields, parent, level) { - parent = parent || this; - level = level || 0; - - var self = this; - if (level === 0) { - parent.fields.push({ - id: 'id', - name: 'id', - string: _t('External ID'), - required: false - }); - } - _(fields).each(function (field, field_name) { - // Ignore spec for id field - // Don't import function fields (function and related) - if (field_name === 'id') { - return; - } - // Skip if there's no state which could disable @readonly, - // if a field is ever always readonly we can't import it - if (field.readonly) { - // no states at all - if (_.isEmpty(field.states)) { return; } - // no state altering @readonly - if (!_.any(field.states, function (modifiers) { - return _(modifiers).chain().pluck(0).contains('readonly').value(); - })) { return; } - } - - var f = { - id: field_name, - name: field_name, - string: field.string, - required: field.required - }; - - switch (field.type) { - case 'many2many': - case 'many2one': - // push a copy for the bare many2one field, to allow importing - // using name_search too - even if we default to exporting the XML ID - var many2one_field = _.extend({}, f) - parent.fields.push(many2one_field); - f.name += '/id'; - break; - case 'one2many': - f.name += '/id'; - f.fields = []; - // only fetch sub-fields to a depth of 2 levels - if (level < 2) { - self.ready.push(new instance.web.DataSet(self, field.relation).call( - 'fields_get', [], function (fields) { - self.graft_fields(fields, f, level+1); - })); - } - break; - } - parent.fields.push(f); - }); - }, - toggle_import_button: function (newstate) { - instance.web.dialog(this.$el, 'widget') - .find('.oe_import_dialog_button') - .button('option', 'disabled', !newstate); - }, - do_import: function() { - if(!this.$el.find('#csvfile').val()) { return; } - var lines_to_skip = parseInt(this.$el.find('#csv_skip').val(), 10); - var with_headers = this.$el.find('#file_has_headers').prop('checked'); - if (!lines_to_skip && with_headers) { - lines_to_skip = 1; - } - var indices = [], fields = []; - this.$el.find(".sel_fields").each(function(index, element) { - var val = element.value; - if (!val) { - return; - } - indices.push(index); - fields.push(val); - }); - - jsonp(this.$el.find('#import_data'), { - url: '/web/import/import_data', - data: { - model: this.model, - meta: JSON.stringify({ - skip: lines_to_skip, - indices: indices, - fields: fields - }) - } - }, this.on_import_results); - }, - on_autodetect_data: function() { - if(!this.$el.find('#csvfile').val()) { return; } - jsonp(this.$el.find('#import_data'), { - url: '/web/import/detect_data' - }, this.on_import_results); - }, - on_import_results: function(results) { - this.$el.find('#result').empty(); - var headers, result_node = this.$el.find("#result"); - - if (results['error']) { - result_node.append(QWeb.render('ImportView.error', { - 'error': results['error']})); - this.$el.find('fieldset').removeClass('oe_closed'); - return; - } - if (results['success']) { - if (this.getParent().getParent().active_view == "list") { - this.getParent().reload_content(); - } - this.destroy(); - return; - } - - if (results['records']) { - var lines_to_skip = parseInt(this.$el.find('#csv_skip').val(), 10), - with_headers = this.$el.find('#file_has_headers').prop('checked'); - headers = with_headers ? results.records[0] : null; - - result_node.append(QWeb.render('ImportView.result', { - 'headers': headers, - 'records': lines_to_skip ? results.records.slice(lines_to_skip) - : with_headers ? results.records.slice(1) - : results.records - })); - this.$el.find('fieldset').addClass('oe_closed'); - } - this.$el.find('form').removeClass('oe_import_no_result'); - - this.$el.delegate('.oe_m2o_drop_down_button', 'click', function () { - $(this).prev('input').focus(); - }); - - var self = this; - this.ready.then(function () { - var $fields = self.$el.find('.sel_fields').bind('blur', function () { - if (this.value && !_(self.all_fields).contains(this.value)) { - this.value = ''; - } - }).autocomplete({ - minLength: 0, - source: self.all_fields, - change: self.on_check_field_values - }).focus(function () { - $(this).autocomplete('search'); - }); - // Column auto-detection - _(headers).each(function (header, index) { - var field_name = self.match_column_to_field(header); - if (field_name) { - $fields.eq(index).val(field_name); - } - }); - self.on_check_field_values(); - }); - }, - /** - * Returns the name of the field (nested) matching the provided column name - * - * @param {String} name column name to look for - * @param {Array} [fields] fields to look into for the provided name - * @returns {String|undefined} - */ - match_column_to_field: function (name, fields) { - fields = fields || this.fields; - var f; - f = _(fields).detect(function (field) { - return field.name === name - }); - if (!f) { - f = _(fields).detect(function (field) { - // TODO: levenshtein between header and field.string - return field.string.toLowerCase() === name.toLowerCase(); - }); - } - if (f) { return f.name; } - - // if ``name`` is a path (o2m), we need to recurse through its .fields - var index = name.indexOf('/'); - if (index === -1) { return undefined; } - // Get the first path section, try to find the matching field - var column_name = name.substring(0, index); - f = _(fields).detect(function (field) { - // field.name for o2m is $foo/id, so we want to match on id - return field.id === column_name; - }); - if (!f) { - f = _(fields).detect(function (field) { - return field.string.toLowerCase() === column_name.toLowerCase(); - }); - } - if (!f) { return undefined; } - - // if we found a matching field for the first path section, recurse in - // its own .fields to try and get the rest of the path matched - var rest = this.match_column_to_field( - name.substring(index+1), f.fields); - if (!rest) { return undefined; } - return f.id + '/' + rest; - }, - /** - * Looks through all the field selections, and tries to find if two - * (or more) columns were matched to the same model field. - * - * Returns a map of the multiply-mapped fields to an array of offending - * columns (not actually columns, but the inputs containing the same field - * names). - * - * Also has the side-effect of marking the discovered inputs with the class - * ``duplicate_fld``. - * - * @returns {Object>} map of duplicate field matches to same-valued inputs - */ - find_duplicate_fields: function() { - // Maps values to DOM nodes, in order to discover duplicates - var values = {}, duplicates = {}; - this.$el.find(".sel_fields").each(function(index, element) { - var value = element.value; - var $el = $(element).removeClass('duplicate_fld'); - if (!value) { return; } - - if (!(value in values)) { - values[value] = element; - } else { - var same_valued_field = values[value]; - if (value in duplicates) { - duplicates[value].push(element); - } else { - duplicates[value] = [same_valued_field, element]; - } - $el.add(same_valued_field).addClass('duplicate_fld'); - } - }); - return duplicates; - }, - on_check_field_values: function () { - this.$el.find("#message, #msg").remove(); - - var required_valid = this.check_required(); - - var duplicates = this.find_duplicate_fields(); - if (_.isEmpty(duplicates)) { - this.toggle_import_button(required_valid); - } else { - var $err = $('
'+_t("Destination fields should only be selected once, some fields are selected more than once:")+'
').insertBefore(this.$el.find('#result')); - var $dupes = $('
').appendTo($err); - _(duplicates).each(function(elements, value) { - $('
').text(value).appendTo($dupes); - _(elements).each(function(element) { - var cell = $(element).closest('td'); - $('
').text(cell.parent().children().index(cell)).appendTo($dupes); - }); - }); - this.toggle_import_button(false); - } - - }, - check_required: function() { - var self = this; - if (!self.required_fields.length) { return true; } - - // Resolve field id based on column name, as there may be - // several ways to provide the value for a given field and - // thus satisfy the requirement. - // (e.g. m2o_id or m2o_id/id columns may be provided) - var resolve_field_id = function(column_name) { - var f = _.detect(self.fields, function(field) { - return field.name === column_name; - }); - if (!f) { return column_name; }; - return f.id; - }; - - var selected_fields = _(this.$el.find('.sel_fields').get()).chain() - .pluck('value') - .compact() - .map(resolve_field_id) - .value(); - - var missing_fields = _.difference(this.required_fields, selected_fields); - if (missing_fields.length) { - this.$el.find("#result").before('
' + _t("*Required Fields are not selected :") + missing_fields + '.
'); - return false; - } - return true; - }, - destroy: function() { - this.$el.remove(); - this._super(); - } -}); -}; diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index df61e9bd6bd..015cd1636f1 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -21,8 +21,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi // whether the view rows can be reordered (via vertical drag & drop) 'reorderable': true, 'action_buttons': true, - // if true, the 'Import', 'Export', etc... buttons will be shown - 'import_enabled': true, }, /** * Core class for list-type displays. @@ -281,7 +279,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi self.reload_content(); }); - // Add button and Import link + // Add button if (!this.$buttons) { this.$buttons = $(QWeb.render("ListView.buttons", {'widget':self})); if (this.options.$buttons) { @@ -292,10 +290,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi this.$buttons.find('.oe_list_add') .click(this.proxy('do_add_record')) .prop('disabled', grouped); - this.$buttons.on('click', '.oe_list_button_import', function() { - self.on_sidebar_import(); - return false; - }); } // Pager @@ -358,7 +352,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi this.sidebar = new instance.web.Sidebar(this); this.sidebar.appendTo(this.options.$sidebar); this.sidebar.add_items('other', _.compact([ - self.is_action_enabled('create') && { label: _t("Import"), callback: this.on_sidebar_import }, { label: _t("Export"), callback: this.on_sidebar_export }, self.is_action_enabled('delete') && { label: _t('Delete'), callback: this.do_delete_selected } ])); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 90709276bdf..2dffe9520a1 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1249,9 +1249,6 @@ instance.web.View = instance.web.Widget.extend({ }, do_search: function(view) { }, - on_sidebar_import: function() { - new instance.web.DataImport(this, this.dataset).open(); - }, on_sidebar_export: function() { new instance.web.DataExport(this, this.dataset).open(); }, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d067b7586fb..a595bb9e495 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -652,9 +652,6 @@ - - or
Import - @@ -698,9 +695,10 @@ - - - Discard + + or + Discard + From e401ca9d69a5a4f76bad7b21a6c9882f97cdfbef Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 11 Sep 2012 08:38:49 +0200 Subject: [PATCH 62/83] [IMP] re-introduce Import button/link when base_import is installed bzr revid: xmo@openerp.com-20120911063849-xqw380wglzxviojf --- addons/base_import/static/src/css/import.css | 7 +++++++ addons/base_import/static/src/js/import.js | 19 +++++++++++++++++++ addons/base_import/static/src/xml/import.xml | 8 ++++++++ 3 files changed, 34 insertions(+) diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 6f4770ce34c..f6258f5aa50 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -1,3 +1,10 @@ +.openerp .oe_list_buttons .oe_alternative { + visibility: visible; +} +.openerp .oe_list_buttons.oe_editing .oe_list_button_import { + display: none; +} + .oe_import dd, .oe_import .oe_import_toggled, .oe_import .oe_import_grid, diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 63a266ef6c0..c2deb660ff2 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -35,6 +35,25 @@ openerp.base_import = function (instance) { $(form).ajaxSubmit(attributes); } + // if true, the 'Import', 'Export', etc... buttons will be shown + instance.web.ListView.prototype.defaults.import_enabled = true; + instance.web.ListView.include({ + on_loaded: function () { + var self = this; + var add_button = false; + if (!this.$buttons) { + add_button = true; + } + this._super.apply(this, arguments); + if(add_button) { + this.$buttons.on('click', '.oe_list_button_import', function() { + new instance.web.DataImport(self, self.dataset).open(); + return false; + }); + } + } + }); + instance.web.DataImport = instance.web.Dialog.extend({ template: 'ImportView', dialog_title: _lt("Import Data"), diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml index 733a93fd104..386348bea4b 100644 --- a/addons/base_import/static/src/xml/import.xml +++ b/addons/base_import/static/src/xml/import.xml @@ -92,4 +92,12 @@ + + + this.attr('t-if', 'widget.options.import_enabled'); + + + Import + + From 7bde4ab749e81b0010a552fa5d005a6d40c8757d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 11 Sep 2012 09:08:58 +0200 Subject: [PATCH 63/83] [IMP] add base_import to configurator bzr revid: xmo@openerp.com-20120911070858-3eb3ny4ts05togk2 --- addons/base_setup/res_config.py | 1 + addons/base_setup/res_config_view.xml | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/addons/base_setup/res_config.py b/addons/base_setup/res_config.py index 4826a50400d..e1920fc05d9 100644 --- a/addons/base_setup/res_config.py +++ b/addons/base_setup/res_config.py @@ -35,6 +35,7 @@ class base_config_settings(osv.osv_memory): 'module_auth_anonymous': fields.boolean('activate the public portal', help="""Enable the public part of openerp, openerp becomes a public website."""), 'module_auth_oauth': fields.boolean('use external authentication providers, sign in with google, facebook, ...'), + 'module_base_import': fields.boolean("Allow users to import data from CSV files"), } def open_company(self, cr, uid, ids, context=None): diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml index 512c0a3f52e..3852ca03a05 100644 --- a/addons/base_setup/res_config_view.xml +++ b/addons/base_setup/res_config_view.xml @@ -59,6 +59,15 @@ + + From d8998dd2d46be98fa142314f2d7cf1993a82424f Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 11 Sep 2012 10:42:15 +0200 Subject: [PATCH 64/83] [IMP] better views bzr revid: fp@tinyerp.com-20120911084215-1er8vwxc9zadiksf --- addons/account/account_view.xml | 32 ++++++------------- .../board_mrp_procurement_view.xml | 4 +-- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 5a3fd6b748a..8c0de73ef8c 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2369,22 +2369,15 @@ -
-
-
diff --git a/addons/procurement/board_mrp_procurement_view.xml b/addons/procurement/board_mrp_procurement_view.xml index a01ec168efa..f30ea629d5e 100644 --- a/addons/procurement/board_mrp_procurement_view.xml +++ b/addons/procurement/board_mrp_procurement_view.xml @@ -15,9 +15,9 @@ board.board - + - + From 208dcc534f7f43dcfef0f30f7975f9f1bc647b35 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 11 Sep 2012 11:40:02 +0200 Subject: [PATCH 65/83] [FIX] web_linkedin: unbreak config settings layout bzr revid: odo@openerp.com-20120911094002-teg65gi2csps8f72 --- addons/web_linkedin/web_linkedin_view.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/addons/web_linkedin/web_linkedin_view.xml b/addons/web_linkedin/web_linkedin_view.xml index 8b4fa617bf3..05a5e32e41a 100644 --- a/addons/web_linkedin/web_linkedin_view.xml +++ b/addons/web_linkedin/web_linkedin_view.xml @@ -18,8 +18,8 @@ sale.config.settings -
-
+
+

To use the LinkedIn module with this database, an API Key is required. Please follow this procedure:

@@ -34,12 +34,11 @@
  • The programming tool is Javascript
  • -
  • Copy the API key down here:
  • +
  • Copy the API key here: + +
  • - - - - +
    From e089d497031aefcc32b225a6958dda9812daf71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 11 Sep 2012 11:40:07 +0200 Subject: [PATCH 66/83] [FIX] sale, mail: fixed Send by email, back to a wizard. Cleaned a bit some code related to that action. bzr revid: tde@openerp.com-20120911094007-svlzik5kgmp4nuvy --- .../wizard/mail_compose_message.py | 6 +++-- addons/mail/static/src/js/mail.js | 24 +++++++++---------- addons/sale/sale.py | 11 ++++++--- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 2baef6e6c90..c0cb7fc92e5 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -51,9 +51,11 @@ class mail_compose_message(osv.osv_memory): context = {} result = super(mail_compose_message, self).default_get(cr, uid, fields, context=context) result['template_id'] = context.get('default_template_id', context.get('mail.compose.template_id', False)) - # force html when using templates + # pre-render the template if any if result.get('use_template'): - result['content_subtype'] = 'html' + onchange_res = self.onchange_use_template(cr, uid, [], result.get('use_template'), result.get('template_id'), + result.get('composition_mode'), result.get('model'), result.get('res_id'), context=context) + result.update(onchange_res['value']) return result _columns = { diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index e8d8e25e684..3f23e65f00d 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -17,19 +17,15 @@ openerp.mail = function(session) { */ session.web.FormView = session.web.FormView.extend({ - // TDE FIXME TODO: CHECK WITH NEW BRANCH do_action: function(action, on_close) { if (action.res_model == 'mail.compose.message' && + action.context && action.context.redirect == true && this.fields && this.fields.message_ids && this.fields.message_ids.view.get("actual_mode") != 'create') { - // debug - console.groupCollapsed('FormView do_action on mail.compose.message'); - console.log('message_ids field:', this.fields.message_ids); - console.groupEnd(); var record_thread = this.fields.message_ids; var thread = record_thread.thread; - thread.instantiate_composition_form('comment', true, false, 0, action.context); - return false; + thread.refresh_composition_form(action.context); + return true; } else { return this._super(action, on_close); @@ -174,7 +170,7 @@ openerp.mail = function(session) { this.ds_compose.context = _.extend(this.ds_compose.context, this.options.context); return this.ds_compose.call('default_get', [ ['subject', 'body_text', 'body', 'attachment_ids', 'partner_ids', 'composition_mode', - 'model', 'res_id', 'parent_id', 'content_subtype'], + 'use_template', 'template_id', 'model', 'res_id', 'parent_id', 'content_subtype'], this.ds_compose.get_context(), ]).then( function (result) { self.form_view.on_processed_onchange({'value': result}, []); }); }, @@ -365,6 +361,11 @@ openerp.mail = function(session) { return compose_done; }, + refresh_composition_form: function (context) { + if (! this.compose_message_widget) return; + return this.compose_message_widget.refresh(context); + }, + /** Clean the thread */ message_clean: function() { this.$el.find('div.oe_mail_thread_display').empty(); @@ -548,7 +549,6 @@ openerp.mail = function(session) { this.options.domain = this.options.domain || []; this.options.context = {'default_model': 'mail.thread', 'default_res_id': false}; this.options.thread_level = this.options.thread_level || 0; - this.thread_list = []; }, start: function() { @@ -564,7 +564,7 @@ openerp.mail = function(session) { }, destroy: function() { - for (var i in this.thread_list) { this.thread_list[i].destroy(); } + if (this.thread) { this.thread.destroy(); } this._super.apply(this, arguments); }, @@ -581,13 +581,13 @@ openerp.mail = function(session) { default_model: this.view.model }); // create and render Thread widget this.$el.find('div.oe_mail_recthread_main').empty(); - for (var i in this.thread_list) { this.thread_list[i].destroy(); } + if (this.thread) { this.thread.destroy(); } var thread = new mail.Thread(self, { 'context': this.options.context, 'thread_level': this.options.thread_level, 'show_header_compose': true, 'message_ids': this.get_value(), 'show_delete': true, 'composer': true }); - this.thread_list.push(thread); + this.thread = thread; return thread.appendTo(this.$el.find('div.oe_mail_recthread_main')); }, }); diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 6a6678d6163..553b8993ab8 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -769,13 +769,18 @@ class sale_order(osv.osv): template_id = template and template[1] or False res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form') res_id = res and res[1] or False - ctx = dict(context, active_model='sale.order', active_id=ids[0]) - ctx.update({'mail.compose.template_id': template_id}) + ctx = dict(context) + ctx.update({ + 'default_model': 'sale.order', + 'default_res_id': ids[0], + 'default_use_template': True, + 'default_template_id': template_id, + }) return { 'view_type': 'form', 'view_mode': 'form', 'res_model': 'mail.compose.message', - 'views': [(res_id,'form')], + 'views': [(res_id, 'form')], 'view_id': res_id, 'type': 'ir.actions.act_window', 'target': 'new', From 4bcdcf66c83c944cf3e9b0c426a935120cf5acb9 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 11 Sep 2012 11:57:58 +0200 Subject: [PATCH 67/83] [IMP] base_setup: make first label wrap bzr revid: odo@openerp.com-20120911095758-dyedax6zcddgokx4 --- addons/base_setup/res_config_view.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml index 512c0a3f52e..4b333d939d6 100644 --- a/addons/base_setup/res_config_view.xml +++ b/addons/base_setup/res_config_view.xml @@ -14,9 +14,10 @@
    -
    - +