diff --git a/addons/web/__init__.py b/addons/web/__init__.py index 5a0289cef6d..71b16f2ea19 100644 --- a/addons/web/__init__.py +++ b/addons/web/__init__.py @@ -6,6 +6,3 @@ sys.modules['openerp.addons.web.http'] = openerp.http http = openerp.http import controllers -import cli - -wsgi_postload = http.wsgi_postload diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 72f1610177c..2855441bf6b 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -11,7 +11,6 @@ This module provides the core of the OpenERP Web Client. """, 'depends': ['base'], 'auto_install': True, - 'post_load': 'wsgi_postload', 'data': [ 'views/webclient_templates.xml', ], @@ -87,7 +86,6 @@ This module provides the core of the OpenERP Web Client. "static/test/data.js", "static/test/list-utils.js", "static/test/formats.js", - "static/test/jsonrpc.js", "static/test/rpc-misordered.js", "static/test/evals.js", "static/test/search.js", diff --git a/addons/web/cli/__init__.py b/addons/web/cli/__init__.py deleted file mode 100644 index 823c140bb79..00000000000 --- a/addons/web/cli/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import test_js diff --git a/addons/web/cli/test_js.py b/addons/web/cli/test_js.py deleted file mode 100644 index b3a8e634b72..00000000000 --- a/addons/web/cli/test_js.py +++ /dev/null @@ -1,35 +0,0 @@ -import logging -import optparse -import sys - -import unittest2 - -import openerp -import openerp.addons.web.tests - -_logger = logging.getLogger(__name__) - -class TestJs(openerp.cli.Command): - def run(self, args): - self.parser = parser = optparse.OptionParser() - parser.add_option("-d", "--database", dest="db_name", default=False, help="specify the database name") - parser.add_option("--xmlrpc-port", dest="xmlrpc_port", default=8069, help="specify the TCP port for the XML-RPC protocol", type="int") - # proably need to add both --superadmin-password and --database-admin-password - self.parser.parse_args(args) - - # test ony uses db_name xmlrpc_port admin_passwd, so use the server one for the actual parsing - - config = openerp.tools.config - config.parse_config(args) - # needed until runbot is fixed - config['db_password'] = config['admin_passwd'] - - # run js tests - openerp.netsvc.init_alternative_logger() - suite = unittest2.TestSuite() - suite.addTests(unittest2.TestLoader().loadTestsFromModule(openerp.addons.web.tests.test_js)) - r = unittest2.TextTestRunner(verbosity=2).run(suite) - if r.errors or r.failures: - sys.exit(1) - -# vim:et:ts=4:sw=4: diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index a9f56a2099c..a6b5fa63918 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -14,6 +14,7 @@ import hashlib import os import re import simplejson +import sys import time import urllib2 import zlib @@ -37,10 +38,14 @@ from openerp.http import request, serialize_exception as _serialize_exception _logger = logging.getLogger(__name__) -env = jinja2.Environment( - loader=jinja2.PackageLoader('openerp.addons.web', "views"), - autoescape=True -) +if hasattr(sys, 'frozen'): + # When running on compiled windows binary, we don't have access to package loader. + path = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', 'views')) + loader = jinja2.FileSystemLoader(path) +else: + loader = jinja2.PackageLoader('openerp.addons.web', "views") + +env = jinja2.Environment(loader=loader, autoescape=True) env.filters["json"] = simplejson.dumps #---------------------------------------------------------- @@ -146,8 +151,15 @@ def ensure_db(redirect='/web/database/selector'): # may depend on data injected by the database route dispatcher. # Thus, we redirect the user to the same page but with the session cookie set. # This will force using the database route dispatcher... + r = request.httprequest + url_redirect = r.base_url + if r.query_string: + # Can't use werkzeug.wrappers.BaseRequest.url with encoded hashes: + # https://github.com/amigrave/werkzeug/commit/b4a62433f2f7678c234cdcac6247a869f90a7eb7 + url_redirect += '?' + r.query_string + response = werkzeug.utils.redirect(url_redirect, 302) request.session.db = db - abort_and_redirect(request.httprequest.url) + abort_and_redirect(url_redirect) # if db not provided, use the session one if not db: @@ -359,7 +371,13 @@ def manifest_glob(extension, addons=None, db=None, include_remotes=False): r.append((None, pattern)) else: for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))): - r.append((path, fs2web(path[len(addons_path):]))) + # Hack for IE, who limit 288Ko, 4095 rules, 31 sheets + # http://support.microsoft.com/kb/262161/en + if pattern == "static/lib/bootstrap/css/bootstrap.css": + if include_remotes: + r.insert(0, (None, fs2web(path[len(addons_path):]))) + else: + r.append((path, fs2web(path[len(addons_path):]))) return r def manifest_list(extension, mods=None, db=None, debug=False): @@ -424,6 +442,15 @@ def set_cookie_and_redirect(redirect_url): redirect.autocorrect_location_header = False return redirect +def login_redirect(): + url = '/web/login?' + if request.debug: + url += 'debug&' + return """
+ """ % (url,) + def load_actions_from_ir_values(key, key2, models, meta): Values = request.session.model('ir.values') actions = Values.get(key, key2, models, meta, request.context) @@ -622,25 +649,31 @@ class Home(http.Controller): @http.route('/', type='http', auth="none") def index(self, s_action=None, db=None, **kw): - return http.local_redirect('/web', query=request.params) + return http.local_redirect('/web', query=request.params, keep_hash=True) @http.route('/web', type='http', auth="none") def web_client(self, s_action=None, **kw): ensure_db() if request.session.uid: + if kw.get('redirect'): + return werkzeug.utils.redirect(kw.get('redirect'), 303) + headers = { 'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8', } return render_bootstrap_template("web.webclient_bootstrap", headers=headers) else: - return http.local_redirect('/web/login', query=request.params) + return login_redirect() @http.route('/web/login', type='http', auth="none") def web_login(self, redirect=None, **kw): ensure_db() + if request.httprequest.method == 'GET' and redirect and request.session.uid: + return http.redirect_with_hash(redirect) + if not request.uid: request.uid = openerp.SUPERUSER_ID @@ -930,10 +963,11 @@ class Database(http.Controller): return simplejson.dumps([[],[{'error': openerp.tools.ustr(e), 'title': _('Backup Database')}]]) @http.route('/web/database/restore', type='http', auth="none") - def restore(self, db_file, restore_pwd, new_db): + def restore(self, db_file, restore_pwd, new_db, mode): try: + copy = mode == 'copy' data = base64.b64encode(db_file.read()) - request.session.proxy("db").restore(restore_pwd, new_db, data) + request.session.proxy("db").restore(restore_pwd, new_db, data, copy) return '' except openerp.exceptions.AccessDenied, e: raise Exception("AccessDenied") @@ -1181,11 +1215,14 @@ class DataSet(http.Controller): def _call_kw(self, model, method, args, kwargs): # Temporary implements future display_name special field for model#read() - if method == 'read' and kwargs.get('context', {}).get('future_display_name'): + if method in ('read', 'search_read') and kwargs.get('context', {}).get('future_display_name'): if 'display_name' in args[1]: - names = dict(request.session.model(model).name_get(args[0], **kwargs)) + if method == 'read': + names = dict(request.session.model(model).name_get(args[0], **kwargs)) + else: + names = dict(request.session.model(model).name_search('', args[0], **kwargs)) args[1].remove('display_name') - records = request.session.model(model).read(*args, **kwargs) + records = getattr(request.session.model(model), method)(*args, **kwargs) for record in records: record['display_name'] = \ names.get(record['id']) or "%s#%d" % (model, (record['id'])) @@ -1598,8 +1635,8 @@ class Export(http.Controller): model, map(operator.itemgetter('name'), export_fields_list)) return [ - {'name': field_name, 'label': fields_data[field_name]} - for field_name in fields_data.keys() + {'name': field['name'], 'label': fields_data[field['name']]} + for field in export_fields_list ] def fields_info(self, model, export_fields): @@ -1658,6 +1695,8 @@ class Export(http.Controller): for k, v in self.fields_info(model, export_fields).iteritems()) class ExportFormat(object): + raw_data = False + @property def content_type(self): """ Provides the format's content type """ @@ -1690,7 +1729,7 @@ class ExportFormat(object): ids = ids or Model.search(domain, 0, False, False, request.context) field_names = map(operator.itemgetter('name'), fields) - import_data = Model.export_data(ids, field_names, request.context).get('datas',[]) + import_data = Model.export_data(ids, field_names, self.raw_data, context=request.context).get('datas',[]) if import_compat: columns_headers = field_names @@ -1743,6 +1782,8 @@ class CSVExport(ExportFormat, http.Controller): return data class ExcelExport(ExportFormat, http.Controller): + # Excel needs raw data to correctly handle numbers and date values + raw_data = True @http.route('/web/export/xls', type='http', auth="user") @serialize_exception @@ -1764,14 +1805,20 @@ class ExcelExport(ExportFormat, http.Controller): worksheet.write(0, i, fieldname) worksheet.col(i).width = 8000 # around 220 pixels - style = xlwt.easyxf('align: wrap yes') + base_style = xlwt.easyxf('align: wrap yes') + date_style = xlwt.easyxf('align: wrap yes', num_format_str='YYYY-MM-DD') + datetime_style = xlwt.easyxf('align: wrap yes', num_format_str='YYYY-MM-DD HH:mm:SS') for row_index, row in enumerate(rows): for cell_index, cell_value in enumerate(row): + cell_style = base_style if isinstance(cell_value, basestring): cell_value = re.sub("\r", " ", cell_value) - if cell_value is False: cell_value = None - worksheet.write(row_index + 1, cell_index, cell_value, style) + elif isinstance(cell_value, datetime.datetime): + cell_style = datetime_style + elif isinstance(cell_value, datetime.date): + cell_style = date_style + worksheet.write(row_index + 1, cell_index, cell_value, cell_style) fp = StringIO() workbook.save(fp) diff --git a/addons/web/controllers/testing.py b/addons/web/controllers/testing.py index c99efed4294..a51b619d49f 100644 --- a/addons/web/controllers/testing.py +++ b/addons/web/controllers/testing.py @@ -157,10 +157,3 @@ class TestRunnerController(http.Controller): # replace OS path separators (from join & normpath) by URI ones yield path[len(root):].replace(os.path.sep, '/') - @http.route('/web/tests/set_session_value', type='json', auth="none") - def set_session_value(self, value): - request.session.some_test_value = value - - @http.route('/web/tests/get_session_value', type='json', auth="none") - def get_session_value(self): - return request.session.some_test_value diff --git a/addons/web/i18n/ar.po b/addons/web/i18n/ar.po index ea70d92a9be..d847ecb2e1b 100644 --- a/addons/web/i18n/ar.po +++ b/addons/web/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web @@ -1849,7 +1849,7 @@ msgstr "الافتراضي" #: code:addons/web/static/src/xml/base.xml:468 #, python-format msgid "OpenERP" -msgstr "كروز" +msgstr "OpenERP" #. module: web #. openerp-web @@ -2213,7 +2213,7 @@ msgstr "زر" #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "OpenERP is a trademark of the" -msgstr "كروز علامة تجارية ملك" +msgstr "OpenERP علامة تجارية ملك" #. module: web #. openerp-web @@ -2241,7 +2241,7 @@ msgstr "False" #: code:addons/web/static/src/xml/base.xml:426 #, python-format msgid "About OpenERP" -msgstr "حول كروز" +msgstr "حول OpenERP" #. module: web #. openerp-web diff --git a/addons/web/i18n/bg.po b/addons/web/i18n/bg.po index a0f95abe051..3200798afca 100644 --- a/addons/web/i18n/bg.po +++ b/addons/web/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bn.po b/addons/web/i18n/bn.po index b0d26cc7361..5ad67dbc189 100644 --- a/addons/web/i18n/bn.po +++ b/addons/web/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bs.po b/addons/web/i18n/bs.po index 2dc7e326cf9..d3ad8c5fcaa 100644 --- a/addons/web/i18n/bs.po +++ b/addons/web/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ca.po b/addons/web/i18n/ca.po index 9311f906fde..a9a6f60fa22 100644 --- a/addons/web/i18n/ca.po +++ b/addons/web/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/cs.po b/addons/web/i18n/cs.po index 0a83fbd5c4f..d572f8ce11f 100644 --- a/addons/web/i18n/cs.po +++ b/addons/web/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" "X-Poedit-Language: Czech\n" #. module: web @@ -1610,7 +1610,7 @@ msgstr "Mažu databázi" #: code:addons/web/static/src/xml/base.xml:467 #, python-format msgid "Powered by" -msgstr "" +msgstr "Založeno na" #. module: web #. openerp-web diff --git a/addons/web/i18n/da.po b/addons/web/i18n/da.po index 87420dcdd88..571dedcc5c4 100644 --- a/addons/web/i18n/da.po +++ b/addons/web/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/de.po b/addons/web/i18n/de.po index af36dbaf48e..a22df51ce71 100644 --- a/addons/web/i18n/de.po +++ b/addons/web/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_AU.po b/addons/web/i18n/en_AU.po index c6bf693f81f..a1cdf449f9b 100644 --- a/addons/web/i18n/en_AU.po +++ b/addons/web/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_GB.po b/addons/web/i18n/en_GB.po index c9ad0572918..586c44543c3 100644 --- a/addons/web/i18n/en_GB.po +++ b/addons/web/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es.po b/addons/web/i18n/es.po index 5c153ee7d4a..2911e97a98b 100644 --- a/addons/web/i18n/es.po +++ b/addons/web/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:39+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CL.po b/addons/web/i18n/es_CL.po index 881087edd5f..8786cde4424 100644 --- a/addons/web/i18n/es_CL.po +++ b/addons/web/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CR.po b/addons/web/i18n/es_CR.po index 29fd4d26797..5aec19d8207 100644 --- a/addons/web/i18n/es_CR.po +++ b/addons/web/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" "Language: es\n" #. module: web diff --git a/addons/web/i18n/es_DO.po b/addons/web/i18n/es_DO.po index f75f68af8c0..23b88465fdd 100644 --- a/addons/web/i18n/es_DO.po +++ b/addons/web/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_EC.po b/addons/web/i18n/es_EC.po index c6c0f47fcd5..8fc6129e4ec 100644 --- a/addons/web/i18n/es_EC.po +++ b/addons/web/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_MX.po b/addons/web/i18n/es_MX.po index bc79eeae4ec..a635938be37 100644 --- a/addons/web/i18n/es_MX.po +++ b/addons/web/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_PE.po b/addons/web/i18n/es_PE.po index 9ac3c8e889f..c79aedb7c54 100644 --- a/addons/web/i18n/es_PE.po +++ b/addons/web/i18n/es_PE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/et.po b/addons/web/i18n/et.po index b8af4cd1b05..31124e42155 100644 --- a/addons/web/i18n/et.po +++ b/addons/web/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/eu.po b/addons/web/i18n/eu.po index 7022d59d28c..3dbe990e9d4 100644 --- a/addons/web/i18n/eu.po +++ b/addons/web/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fa.po b/addons/web/i18n/fa.po index 414e2ca735e..73189acbf3b 100644 --- a/addons/web/i18n/fa.po +++ b/addons/web/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:32+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:39+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fi.po b/addons/web/i18n/fi.po index 955357d70b8..7964566fd42 100644 --- a/addons/web/i18n/fi.po +++ b/addons/web/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po index 2711d8e9cc2..3b8bb419f5b 100644 --- a/addons/web/i18n/fr.po +++ b/addons/web/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr_CA.po b/addons/web/i18n/fr_CA.po index f531089aaa3..f7bee061dd0 100644 --- a/addons/web/i18n/fr_CA.po +++ b/addons/web/i18n/fr_CA.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:33+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:40+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gl.po b/addons/web/i18n/gl.po index 75f27497162..31e924db129 100644 --- a/addons/web/i18n/gl.po +++ b/addons/web/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gu.po b/addons/web/i18n/gu.po index c23b149e96c..0a0e108f59e 100644 --- a/addons/web/i18n/gu.po +++ b/addons/web/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:38+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/he.po b/addons/web/i18n/he.po index 3fccd5d4f9c..c2ca619ac10 100644 --- a/addons/web/i18n/he.po +++ b/addons/web/i18n/he.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-02-26 06:31+0000\n" -"X-Generator: Launchpad (build 16935)\n" +"X-Launchpad-Export-Date: 2014-04-09 06:39+0000\n" +"X-Generator: Launchpad (build 16976)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hi.po b/addons/web/i18n/hi.po index 850f3775ddf..fb858fb82f0 100644 --- a/addons/web/i18n/hi.po +++ b/addons/web/i18n/hi.po @@ -8,35 +8,35 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME"], ["Header 1", "