diff options
| author | Fabien Meghazi <fme@openerp.com> | 2014-04-23 14:38:08 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2014-04-23 14:38:08 +0200 |
| commit | 8370d3f60e83f94cc158bdfd75fa8e683f7d5beb (patch) | |
| tree | 2837c8f14309b59690f816d3a7dbf8718b0cae77 | |
| parent | f4a37244cac024c8af907f7ead1fae73a2985bdf (diff) | |
| parent | 700763f2da05ca70a5ff0342a7e7244c2545a9c7 (diff) | |
[MERGE] upstream
bzr revid: fme@openerp.com-20140423123808-q58dtl8a0bb2ymlf
94 files changed, 419 insertions, 246 deletions
diff --git a/openerp/addons/base/i18n/ab.po b/openerp/addons/base/i18n/ab.po index 86600d7723c..b607b97927a 100644 --- a/openerp/addons/base/i18n/ab.po +++ b/openerp/addons/base/i18n/ab.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-04-09 05:50+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:37+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index c80488b1b13..18368ca9625 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.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-04-09 05:50+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index 2801a312ede..e01800e903e 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.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-04-09 05:51+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index e9f68449cd7..94d519ede9f 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.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: 2014-04-09 05:51+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index 3852489a95e..22143793621 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.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: 2014-04-09 05:52+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/bn.po b/openerp/addons/base/i18n/bn.po index 7e1c406a26f..0b90f4004aa 100644 --- a/openerp/addons/base/i18n/bn.po +++ b/openerp/addons/base/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-04-09 05:51+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index 9dc651dbaa1..babf20c960f 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.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: 2014-04-09 05:52+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index 0aa0bdb4b00..ffc9fde2411 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.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: 2014-04-09 05:52+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 0cce21599f8..a887afb6485 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.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: 2014-04-09 05:53+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n" +"X-Generator: Launchpad (build 16985)\n" "X-Poedit-Language: Czech\n" #. module: base diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index e18790d9ea7..4de0dfda4aa 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/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-04-09 05:53+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 18616bdfb59..77d38b8c065 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/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-04-09 05:55+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index 8aaa29b1d20..83bc68b4931 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -12,8 +12,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-04-09 05:55+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n" +"X-Generator: Launchpad (build 16985)\n" "X-Poedit-Country: GREECE\n" "X-Poedit-Language: Greek\n" "X-Poedit-SourceCharset: utf-8\n" diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index c5b27448931..d51e067b3af 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/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-04-09 06:08+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 1bafe12a2ac..4df65aba682 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.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: 2014-04-09 06:04+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_AR.po b/openerp/addons/base/i18n/es_AR.po index f9cf96454aa..a74699fb374 100644 --- a/openerp/addons/base/i18n/es_AR.po +++ b/openerp/addons/base/i18n/es_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-04-09 06:08+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_BO.po b/openerp/addons/base/i18n/es_BO.po index 64115de553f..9d4ae622b5c 100644 --- a/openerp/addons/base/i18n/es_BO.po +++ b/openerp/addons/base/i18n/es_BO.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-04-09 06:10+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index f197496e566..a113e36a82e 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.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: 2014-04-09 06:09+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_CR.po b/openerp/addons/base/i18n/es_CR.po index ed96b20642a..e5a617216b6 100644 --- a/openerp/addons/base/i18n/es_CR.po +++ b/openerp/addons/base/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-04-09 06:10+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n" +"X-Generator: Launchpad (build 16985)\n" "Language: \n" #. module: base diff --git a/openerp/addons/base/i18n/es_DO.po b/openerp/addons/base/i18n/es_DO.po index f4cf992b0dc..140f6cfa803 100644 --- a/openerp/addons/base/i18n/es_DO.po +++ b/openerp/addons/base/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-04-09 06:08+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index 6c9d93d2c5e..5804c8e377d 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.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: 2014-04-09 06:12+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_MX.po b/openerp/addons/base/i18n/es_MX.po index 6d49c4af121..cc4ea1ea67a 100644 --- a/openerp/addons/base/i18n/es_MX.po +++ b/openerp/addons/base/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-04-09 06:11+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_PE.po b/openerp/addons/base/i18n/es_PE.po index c24a34e899b..46733d5b1c6 100644 --- a/openerp/addons/base/i18n/es_PE.po +++ b/openerp/addons/base/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-04-09 06:12+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/es_VE.po b/openerp/addons/base/i18n/es_VE.po index 29a5b3730c6..039baabe46c 100644 --- a/openerp/addons/base/i18n/es_VE.po +++ b/openerp/addons/base/i18n/es_VE.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-04-09 06:07+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index d7363e67ba0..aa32b7585ab 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.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: 2014-04-09 05:53+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index af05c90097d..517499d3839 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/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-04-09 05:51+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index 4989167556c..55137dce3ab 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -9,8 +9,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-04-09 06:00+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n" +"X-Generator: Launchpad (build 16985)\n" "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" "X-Poedit-Language: Persian\n" diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index e189962cbd7..2673b2cc498 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.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-04-09 06:12+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:55+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index ff4918cdeb8..93f646c46e7 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.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: 2014-04-09 05:54+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index c92aee812f0..faaa7ded49a 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.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: 2014-04-09 05:54+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/fr_CA.po b/openerp/addons/base/i18n/fr_CA.po index 48f2b6ec179..96217a0ed29 100644 --- a/openerp/addons/base/i18n/fr_CA.po +++ b/openerp/addons/base/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-04-09 06:09+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index 9356943b633..33e0ca7f8e0 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/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-04-09 05:55+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/gu.po b/openerp/addons/base/i18n/gu.po index 3dbee22ae46..bb053ba30fe 100644 --- a/openerp/addons/base/i18n/gu.po +++ b/openerp/addons/base/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-04-09 05:56+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index 9befcdeacbb..370dc41acf9 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/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-04-09 05:56+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/hi.po b/openerp/addons/base/i18n/hi.po index be528252f0f..0df8f74590c 100644 --- a/openerp/addons/base/i18n/hi.po +++ b/openerp/addons/base/i18n/hi.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-04-09 05:56+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index 99319e85877..cd0597f7d39 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.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: 2014-04-09 06:03+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n" +"X-Generator: Launchpad (build 16985)\n" "Language: hr\n" #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index b65e88f7e4e..c97b13187a0 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.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: 2014-04-09 05:56+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index dd77f1732c8..e416c0e4a62 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -9,8 +9,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-04-09 05:51+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index 55f984d410c..25414f99fb5 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.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-04-09 05:57+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index 5cb7d77c323..125515b191f 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.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-04-09 05:57+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index 0cb63de9694..28d29b79aaf 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.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: 2014-04-09 05:57+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index c5901311c65..3af2a469283 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.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-04-09 05:58+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ka.po b/openerp/addons/base/i18n/ka.po index bc03369afe6..5dcd445e2ff 100644 --- a/openerp/addons/base/i18n/ka.po +++ b/openerp/addons/base/i18n/ka.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-04-09 05:54+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po index cb5b5faa652..f1fa010812b 100644 --- a/openerp/addons/base/i18n/kk.po +++ b/openerp/addons/base/i18n/kk.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-04-09 05:58+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index 970efa7c5bb..2404dae9661 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.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-04-09 05:58+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 1e7063751bc..25d6e31e73d 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.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: 2014-04-09 05:59+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po index a907da4ad7e..af3d0828dc7 100644 --- a/openerp/addons/base/i18n/lv.po +++ b/openerp/addons/base/i18n/lv.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-04-09 05:58+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index 6e4e39603d0..f725d265332 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.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-04-09 05:59+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index bdc3e7e37b7..78ce6ac5c69 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.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: 2014-04-09 05:59+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index d75034d791d..65d8cf62e7d 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.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-04-09 06:00+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index 23c7cf66791..39d1bddcd75 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.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: 2014-04-09 05:53+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index 81590a55d18..a07fb33fb4b 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.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-04-09 06:09+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index c851223d1b7..ca3e805d7f1 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.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: 2014-04-09 06:00+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index f2ea63aa7f3..0576d40462c 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.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: 2014-04-09 06:01+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 7df1d214e2c..2b19ec2c486 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.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-04-09 06:07+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index 28b33255bbc..6d29c529e44 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.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: 2014-04-09 06:01+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index e49768a0f72..60c8819d04b 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.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: 2014-04-09 06:02+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index 6075c9ee6d0..c03d0de6f72 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.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-04-09 06:03+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index da1e8f47974..a62f242e210 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.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: 2014-04-09 06:04+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index e022e19b605..a0be5625110 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.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: 2014-04-09 05:50+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index bb354004c23..3ac25b53253 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.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-04-09 06:02+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po index 4e86d70c5bd..30a9a0af3ab 100644 --- a/openerp/addons/base/i18n/sr@latin.po +++ b/openerp/addons/base/i18n/sr@latin.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-04-09 06:12+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:55+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index 08eaa1a49f4..2975c159a09 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.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: 2014-04-09 06:04+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index b502e37fdc1..ee2313badfc 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.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-04-09 06:05+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index 5ff7e203931..199dd5d4073 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.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: 2014-04-09 06:05+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index f373aa3c8b4..7dc68a474cf 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.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: 2014-04-09 06:05+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index 0493f60ddc7..e678f952bb4 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.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: 2014-04-09 06:06+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index 75aa8fc4ace..3c8880f3270 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.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-04-09 06:06+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index 53c94aa43fc..68616a81d7f 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.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-04-09 06:07+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index 69163ff7b36..6e09a983dc1 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.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: 2014-04-09 06:11+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po index 6f21dd44565..ea043ffc98c 100644 --- a/openerp/addons/base/i18n/zh_HK.po +++ b/openerp/addons/base/i18n/zh_HK.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-04-09 06:07+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index b7e8da5b200..33bfe9db460 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.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: 2014-04-09 06:10+0000\n" -"X-Generator: Launchpad (build 16976)\n" +"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing diff --git a/openerp/addons/base/ir/ir_attachment.py b/openerp/addons/base/ir/ir_attachment.py index 186c02f00b8..8478682eb7c 100644 --- a/openerp/addons/base/ir/ir_attachment.py +++ b/openerp/addons/base/ir/ir_attachment.py @@ -26,6 +26,8 @@ import os import re from openerp import tools +from openerp.tools.translate import _ +from openerp.exceptions import AccessError from openerp.osv import fields,osv from openerp import SUPERUSER_ID @@ -71,33 +73,49 @@ class ir_attachment(osv.osv): def _filestore(self, cr, uid, context=None): return tools.config.filestore(cr.dbname) + def force_storage(self, cr, uid, context=None): + """Force all attachments to be stored in the currently configured storage""" + if not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'): + raise AccessError(_('Only administrators can execute this action.')) + + location = self._storage(cr, uid, context) + domain = { + 'db': [('store_fname', '!=', False)], + 'file': [('db_datas', '!=', False)], + }[location] + + ids = self.search(cr, uid, domain, context=context) + for attach in self.browse(cr, uid, ids, context=context): + attach.write({'datas': attach.datas}) + return True + # 'data' field implementation - def _full_path(self, cr, uid, location, path): + def _full_path(self, cr, uid, path): # sanitize ath path = re.sub('[.]', '', path) path = path.strip('/\\') return os.path.join(self._filestore(cr, uid), path) - def _get_path(self, cr, uid, location, bin_data): + def _get_path(self, cr, uid, bin_data): sha = hashlib.sha1(bin_data).hexdigest() # retro compatibility fname = sha[:3] + '/' + sha - full_path = self._full_path(cr, uid, location, fname) + full_path = self._full_path(cr, uid, fname) if os.path.isfile(full_path): return fname, full_path # keep existing path # scatter files across 256 dirs # we use '/' in the db (even on windows) fname = sha[:2] + '/' + sha - full_path = self._full_path(cr, uid, location, fname) + full_path = self._full_path(cr, uid, fname) dirname = os.path.dirname(full_path) if not os.path.isdir(dirname): os.makedirs(dirname) return fname, full_path - def _file_read(self, cr, uid, location, fname, bin_size=False): - full_path = self._full_path(cr, uid, location, fname) + def _file_read(self, cr, uid, fname, bin_size=False): + full_path = self._full_path(cr, uid, fname) r = '' try: if bin_size: @@ -108,9 +126,9 @@ class ir_attachment(osv.osv): _logger.error("_read_file reading %s",full_path) return r - def _file_write(self, cr, uid, location, value): + def _file_write(self, cr, uid, value): bin_value = value.decode('base64') - fname, full_path = self._get_path(cr, uid, location, bin_value) + fname, full_path = self._get_path(cr, uid, bin_value) if not os.path.exists(full_path): try: with open(full_path, 'wb') as fp: @@ -119,10 +137,10 @@ class ir_attachment(osv.osv): _logger.error("_file_write writing %s", full_path) return fname - def _file_delete(self, cr, uid, location, fname): + def _file_delete(self, cr, uid, fname): count = self.search(cr, 1, [('store_fname','=',fname)], count=True) - if count <= 1: - full_path = self._full_path(cr, uid, location, fname) + full_path = self._full_path(cr, uid, fname) + if count <= 1 and os.path.exists(full_path): try: os.unlink(full_path) except OSError: @@ -135,11 +153,10 @@ class ir_attachment(osv.osv): if context is None: context = {} result = {} - location = self._storage(cr, uid, context) bin_size = context.get('bin_size') for attach in self.browse(cr, uid, ids, context=context): - if location != 'db' and attach.store_fname: - result[attach.id] = self._file_read(cr, uid, location, attach.store_fname, bin_size) + if attach.store_fname: + result[attach.id] = self._file_read(cr, uid, attach.store_fname, bin_size) else: result[attach.id] = attach.db_datas return result @@ -152,15 +169,15 @@ class ir_attachment(osv.osv): context = {} location = self._storage(cr, uid, context) file_size = len(value.decode('base64')) + attach = self.browse(cr, uid, id, context=context) + if attach.store_fname: + self._file_delete(cr, uid, attach.store_fname) if location != 'db': - attach = self.browse(cr, uid, id, context=context) - if attach.store_fname: - self._file_delete(cr, uid, location, attach.store_fname) - fname = self._file_write(cr, uid, location, value) + fname = self._file_write(cr, uid, value) # SUPERUSER_ID as probably don't have write access, trigger during create - super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'store_fname': fname, 'file_size': file_size}, context=context) + super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'store_fname': fname, 'file_size': file_size, 'db_datas': False}, context=context) else: - super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'db_datas': value, 'file_size': file_size}, context=context) + super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'db_datas': value, 'file_size': file_size, 'store_fname': False}, context=context) return True _name = 'ir.attachment' @@ -298,11 +315,9 @@ class ir_attachment(osv.osv): if isinstance(ids, (int, long)): ids = [ids] self.check(cr, uid, ids, 'unlink', context=context) - location = self._storage(cr, uid, context) - if location != 'db': - for attach in self.browse(cr, uid, ids, context=context): - if attach.store_fname: - self._file_delete(cr, uid, location, attach.store_fname) + for attach in self.browse(cr, uid, ids, context=context): + if attach.store_fname: + self._file_delete(cr, uid, attach.store_fname) return super(ir_attachment, self).unlink(cr, uid, ids, context) def create(self, cr, uid, values, context=None): diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index a5442dbbcad..6eb41879522 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -152,7 +152,7 @@ class QWeb(orm.AbstractModel): """Add a parsed template in the context. Used to preprocess templates.""" qwebcontext.templates[name] = node - def load_document(self, document, qwebcontext): + def load_document(self, document, res_id, qwebcontext): """ Loads an XML document and installs any contained template in the engine """ @@ -164,9 +164,13 @@ class QWeb(orm.AbstractModel): dom = xml.dom.minidom.parse(document) for node in dom.documentElement.childNodes: - if node.nodeType == self.node.ELEMENT_NODE and node.getAttribute('t-name'): - name = str(node.getAttribute("t-name")) - self.add_template(qwebcontext, name, node) + if node.nodeType == self.node.ELEMENT_NODE: + if node.getAttribute('t-name'): + name = str(node.getAttribute("t-name")) + self.add_template(qwebcontext, name, node) + if res_id and node.tagName == "t": + self.add_template(qwebcontext, res_id, node) + res_id = None def get_template(self, name, qwebcontext): origin_template = qwebcontext.get('__caller__') or qwebcontext['__stack__'][0] @@ -175,7 +179,7 @@ class QWeb(orm.AbstractModel): xml_doc = qwebcontext.loader(name) except ValueError: raise_qweb_exception(QWebTemplateNotFound, message="Loader could not find template %r" % name, template=origin_template) - self.load_document(xml_doc, qwebcontext=qwebcontext) + self.load_document(xml_doc, isinstance(name, (int, long)) and name or None, qwebcontext=qwebcontext) if name in qwebcontext.templates: return qwebcontext.templates[name] @@ -393,7 +397,12 @@ class QWeb(orm.AbstractModel): cr = d.get('request') and d['request'].cr or None uid = d.get('request') and d['request'].uid or None - return self.render(cr, uid, self.eval_format(template_attributes["call"], d), d) + template = self.eval_format(template_attributes["call"], d) + try: + template = int(template) + except ValueError: + pass + return self.render(cr, uid, template, d) def render_tag_call_assets(self, element, template_attributes, generated_attributes, qwebcontext): """ This special 't-call' tag can be used in order to aggregate/minify javascript and css assets""" @@ -440,8 +449,7 @@ class QWeb(orm.AbstractModel): element, template_attributes, generated_attributes, qwebcontext, context=qwebcontext.context) def get_converter_for(self, field_type): - return self.pool.get('ir.qweb.field.' + field_type, - self.pool['ir.qweb.field']) + return self.pool.get('ir.qweb.field.' + field_type, self.pool['ir.qweb.field']) def get_widget_for(self, widget): return self.pool.get('ir.qweb.widget.' + widget, self.pool['ir.qweb.widget']) @@ -840,6 +848,8 @@ class Contact(orm.AbstractModel): _inherit = 'ir.qweb.field.many2one' def record_to_html(self, cr, uid, field_name, record, column, options=None, context=None): + if options is None: + options = {} opf = options.get('fields') or ["name", "address", "phone", "mobile", "fax", "email"] if not getattr(record, field_name): @@ -859,6 +869,7 @@ class Contact(orm.AbstractModel): 'country_id': field_browse.country_id and field_browse.country_id.name_get()[0][1], 'email': field_browse.email, 'fields': opf, + 'object': field_browse, 'options': options } @@ -866,6 +877,26 @@ class Contact(orm.AbstractModel): return HTMLSafe(html) +class QwebView(orm.AbstractModel): + _name = 'ir.qweb.field.qweb' + _inherit = 'ir.qweb.field.many2one' + + def record_to_html(self, cr, uid, field_name, record, column, options=None, context=None): + if not getattr(record, field_name): + return None + + view = getattr(record, field_name) + + if view._model._name != "ir.ui.view": + _logger.warning("%s.%s must be a 'ir.ui.view' model." % (record, field_name)) + return None + + ctx = (context or {}).copy() + ctx['object'] = record + html = view.render(ctx, engine='ir.qweb', context=ctx).decode('utf8') + + return HTMLSafe(html) + class QwebWidget(osv.AbstractModel): _name = 'ir.qweb.widget' diff --git a/openerp/addons/base/ir/ir_qweb.xml b/openerp/addons/base/ir/ir_qweb.xml index 25bb4ef8ef9..a21a3fcf2af 100644 --- a/openerp/addons/base/ir/ir_qweb.xml +++ b/openerp/addons/base/ir/ir_qweb.xml @@ -2,7 +2,12 @@ <data> <template id="contact"> <address t-ignore="true" class="mb0" itemscope="itemscope" itemtype="http://schema.org/Organization"> - <div t-att-class="'name' not in fields and 'css_non_editable_mode_hidden'"><span itemprop="name" t-esc="name"/></div> + <div t-att-class="'name' not in fields and 'css_non_editable_mode_hidden'"> + <span itemprop="name" t-esc="name"/> + <t t-if="options.get('country_image') and 'country_id' in fields and object.country_id and object.country_id.image"> + <span t-field="object.country_id.image" t-field-options='{"widget": "image", "class": "country_flag"}'/> + </t> + </div> <div itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"> <div t-if="address and 'address' in fields" class='css_editable_mode_hidden'> <i t-if="not options.get('no_marker')" class='fa fa-map-marker'/> <span itemprop="streetAddress" t-raw="address.replace('\n', options.get('no_tag_br') and ', ' or ('<br/>%s' % ('' if options.get('no_marker') else '&nbsp; &nbsp; ')))"/> diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index b6d785f5054..ea2c9d6ecbe 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -698,6 +698,16 @@ class view(osv.osv): for action, operation in (('create', 'create'), ('delete', 'unlink'), ('edit', 'write')): if not node.get(action) and not Model.check_access_rights(cr, user, operation, raise_exception=False): node.set(action, 'false') + if node.tag in ('kanban'): + group_by_field = node.get('default_group_by') + if group_by_field and Model._all_columns.get(group_by_field): + group_by_column = Model._all_columns[group_by_field].column + if group_by_column._type == 'many2one': + group_by_model = Model.pool.get(group_by_column._obj) + for action, operation in (('group_create', 'create'), ('group_delete', 'unlink'), ('group_edit', 'write')): + if not node.get(action) and not group_by_model.check_access_rights(cr, user, operation, raise_exception=False): + node.set(action, 'false') + arch = etree.tostring(node, encoding="utf-8").replace('\t', '') for k in fields.keys(): if k not in fields_def: @@ -719,10 +729,13 @@ class view(osv.osv): #------------------------------------------------------ @tools.ormcache_context(accepted_keys=('lang','inherit_branding', 'editable', 'translatable')) def read_template(self, cr, uid, xml_id, context=None): - if '.' not in xml_id: - raise ValueError('Invalid template id: %r' % (xml_id,)) + if isinstance(xml_id, (int, long)): + view_id = xml_id + else: + if '.' not in xml_id: + raise ValueError('Invalid template id: %r' % (xml_id,)) + view_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, xml_id, raise_if_not_found=True) - view_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, xml_id, raise_if_not_found=True) arch = self.read_combined(cr, uid, view_id, fields=['arch'], context=context)['arch'] arch_tree = etree.fromstring(arch) @@ -847,9 +860,6 @@ class view(osv.osv): def render(self, cr, uid, id_or_xml_id, values=None, engine='ir.qweb', context=None): if isinstance(id_or_xml_id, list): id_or_xml_id = id_or_xml_id[0] - tname = id_or_xml_id - if isinstance(tname, (int, long)): - tname = self.get_view_xmlid(cr, uid, tname) if not context: context = {} @@ -868,7 +878,7 @@ class view(osv.osv): def loader(name): return self.read_template(cr, uid, name, context=context) - return self.pool[engine].render(cr, uid, tname, qcontext, loader=loader, context=context) + return self.pool[engine].render(cr, uid, id_or_xml_id, qcontext, loader=loader, context=context) #------------------------------------------------------ # Misc @@ -956,4 +966,18 @@ class view(osv.osv): ids = map(itemgetter(0), cr.fetchall()) return self._check_xml(cr, uid, ids) + def _validate_module_views(self, cr, uid, module): + """Validate architecture of all the views of a given module""" + assert not self.pool._init or module in self.pool._init_modules + cr.execute("""SELECT max(v.id) + FROM ir_ui_view v + LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id) + WHERE md.module = %s + GROUP BY coalesce(v.inherit_id, v.id) + """, (module,)) + + for vid, in cr.fetchall(): + if not self._check_xml(cr, uid, [vid]): + self.raise_view_error(cr, uid, "Can't validate view", vid) + # vim:et: diff --git a/openerp/addons/base/module/module_data.xml b/openerp/addons/base/module/module_data.xml index 2b7fd2bdab5..ad5998b091b 100644 --- a/openerp/addons/base/module/module_data.xml +++ b/openerp/addons/base/module/module_data.xml @@ -85,12 +85,6 @@ <field name="sequence">11</field> </record> - <record model="ir.module.category" id="module_category_survey"> - <field name="name">Survey</field> - <field name="description">Lets you create, send, share and answer to surveys.</field> - <field name="sequence">11</field> - </record> - <record model="ir.module.category" id="module_category_marketing"> <field name="name">Marketing</field> <field name="description">Helps you manage your marketing campaigns step by step.</field> diff --git a/openerp/addons/base/res/res_bank_view.xml b/openerp/addons/base/res/res_bank_view.xml index 09197e37dc5..be9918be27c 100644 --- a/openerp/addons/base/res/res_bank_view.xml +++ b/openerp/addons/base/res/res_bank_view.xml @@ -74,6 +74,7 @@ <field name="code"/> </group> <field name="field_ids"/> + <label for="format_layout"/> <field name="format_layout"/> </form> </field> diff --git a/openerp/addons/base/res/res_country_view.xml b/openerp/addons/base/res/res_country_view.xml index e4784c3d9ca..35eb0a592ed 100644 --- a/openerp/addons/base/res/res_country_view.xml +++ b/openerp/addons/base/res/res_country_view.xml @@ -32,6 +32,7 @@ <field name="code"/> </group> </group> + <label for="address_format"/> <field name="address_format" groups="base.group_no_one" placeholder="Address format..."/> </form> </field> diff --git a/openerp/addons/base/res/res_currency.py b/openerp/addons/base/res/res_currency.py index 1419cc7ccb4..19444786935 100644 --- a/openerp/addons/base/res/res_currency.py +++ b/openerp/addons/base/res/res_currency.py @@ -58,7 +58,8 @@ class res_currency(osv.osv): elif not raise_on_no_rate: res[id] = 0 else: - raise osv.except_osv(_('Error!'),_("No currency rate associated for currency %d for the given period" % (id))) + currency = self.browse(cr, uid, id, context=context) + raise osv.except_osv(_('Error!'),_("No currency rate associated for currency '%s' for the given period" % (currency.name))) return res _name = "res.currency" diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 896f455a274..df8a2daf6b3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -234,7 +234,7 @@ class res_partner(osv.osv, format_address): 'title': fields.many2one('res.partner.title', 'Title'), 'parent_id': fields.many2one('res.partner', 'Related Company', select=True), 'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts', domain=[('active','=',True)]), # force "active_test" domain to bypass _search() override - 'ref': fields.char('Reference', size=64, select=1), + 'ref': fields.char('Contact Reference', size=64, select=1), 'lang': fields.selection(_lang_get, 'Language', help="If the selected language is loaded in the system, all documents related to this contact will be printed in this language. If not, it will be English."), 'tz': fields.selection(_tz_get, 'Timezone', size=64, @@ -360,6 +360,7 @@ class res_partner(osv.osv, format_address): value = {} value['title'] = False if is_company: + value['use_parent_address'] = False domain = {'title': [('domain', '=', 'partner')]} else: domain = {'title': [('domain', '=', 'contact')]} @@ -379,9 +380,10 @@ class res_partner(osv.osv, format_address): 'was never correctly set. If an existing contact starts working for a new ' 'company then a new contact should be created under that new ' 'company. You can use the "Discard" button to abandon this change.')} - parent = self.browse(cr, uid, parent_id, context=context) - address_fields = self._address_fields(cr, uid, context=context) - result['value'] = dict((key, value_or_id(parent[key])) for key in address_fields) + if use_parent_address: + parent = self.browse(cr, uid, parent_id, context=context) + address_fields = self._address_fields(cr, uid, context=context) + result['value'] = dict((key, value_or_id(parent[key])) for key in address_fields) else: result['value'] = {'use_parent_address': False} return result diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a0e32ab83bd..a5f04a120a7 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -158,8 +158,8 @@ <div> <field name="use_parent_address" class="oe_edit_only oe_inline" on_change="onchange_address(use_parent_address, parent_id)" - attrs="{'invisible': [('parent_id','=', False),('use_parent_address','=',False)]}"/> - <label for="use_parent_address" class="oe_edit_only" attrs="{'invisible': [('parent_id','=', False),('use_parent_address','=',False)]}"/> + attrs="{'invisible': ['|', ('is_company', '=', True),('parent_id', '=', False)]}"/> + <label for="use_parent_address" class="oe_edit_only" attrs="{'invisible': ['|', ('is_company', '=', True), ('parent_id', '=', False)]}"/> <button name="open_parent" type="object" string="(edit company address)" class="oe_link oe_edit_only" attrs="{'invisible': ['|',('parent_id','=', False),('use_parent_address','=',False)]}"/> <field name="street" placeholder="Street..." attrs="{'readonly': [('use_parent_address','=',True)]}"/> @@ -188,7 +188,7 @@ <notebook colspan="4"> <page string="Contacts" attrs="{'invisible': [('is_company','=',False), ('child_ids', '=', [])]}" autofocus="autofocus"> - <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}"> + <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_use_parent_address': True}"> <kanban> <field name="color"/> <field name="name"/> diff --git a/openerp/cli/__init__.py b/openerp/cli/__init__.py index 7111112c026..27428369cbc 100644 --- a/openerp/cli/__init__.py +++ b/openerp/cli/__init__.py @@ -38,7 +38,8 @@ def main(): # The only shared option is '--addons-path=' needed to discover additional # commands from modules if len(args) > 1 and args[0].startswith('--addons-path=') and not args[1].startswith("-"): - tools.config.parse_config([args[0]]) + # parse only the addons-path, do not setup the logger... + tools.config._parse_config([args[0]]) args = args[1:] # Default legacy command diff --git a/openerp/http.py b/openerp/http.py index c51934fb223..b98eff2cb08 100644 --- a/openerp/http.py +++ b/openerp/http.py @@ -604,8 +604,8 @@ class ControllerType(type): # flag old-style methods with req as first argument for k, v in attrs.items(): - if inspect.isfunction(v): - spec = inspect.getargspec(v) + if inspect.isfunction(v) and hasattr(v, 'original_func'): + spec = inspect.getargspec(v.original_func) first_arg = spec.args[1] if len(spec.args) >= 2 else None if first_arg in ["req", "request"]: v._first_arg_is_req = True diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py index 5635e42e780..2b507acc0bb 100644 --- a/openerp/modules/loading.py +++ b/openerp/modules/loading.py @@ -3,7 +3,7 @@ # # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). -# Copyright (C) 2010-2013 OpenERP s.a. (<http://openerp.com>). +# Copyright (C) 2010-2014 OpenERP s.a. (<http://openerp.com>). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -153,7 +153,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= loaded_modules.append(package.name) if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'): init_module_models(cr, package.name, models) - registry._init_modules.add(package.name) status['progress'] = float(index) / len(graph) # Can't put this line out of the loop: ir.module.module will be @@ -182,6 +181,10 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= migrations.migrate_module(package, 'post') + registry._init_modules.add(package.name) + # validate all the views at a whole + registry['ir.ui.view']._validate_module_views(cr, SUPERUSER_ID, module_name) + if has_demo: # launch tests only in demo mode, allowing tests to use demo data. if tools.config.options['test_enable']: @@ -207,6 +210,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules= if hasattr(package, kind): delattr(package, kind) + registry._init_modules.add(package.name) cr.commit() # The query won't be valid for models created later (i.e. custom model diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index ef6aaf19d5a..eb591c53521 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -199,7 +199,7 @@ class Registry(Mapping): def leave_test_mode(self): """ Leave the test mode. """ assert self.test_cr is not None - self.test_cr.close(force=True) # close the cursor for real + self.test_cr.force_close() self.test_cr = None RegistryManager.leave_test_mode() @@ -207,13 +207,14 @@ class Registry(Mapping): """ Return a new cursor for the database. The cursor itself may be used as a context manager to commit/rollback and close automatically. """ - if self.test_cr is not None: + cr = self.test_cr + if cr is not None: # While in test mode, we use one special cursor across requests. The # test cursor uses a reentrant lock to serialize accesses. The lock # is granted here by cursor(), and automatically released by the # cursor itself in its method close(). - self.test_cr.acquire() - return self.test_cr + cr.acquire() + return cr return self._db.cursor() class DummyRLock(object): diff --git a/openerp/netsvc.py b/openerp/netsvc.py index d762eb5006f..15f02645d52 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -86,7 +86,7 @@ class PostgreSQLHandler(logging.Handler): if traceback: msg = "%s\n%s" % (msg, traceback) level = logging.getLevelName(record.levelno) - val = (ct_uid, ct_uid, 'server', dbname, record.name, level, msg, record.pathname, record.lineno, record.funcName) + val = (ct_uid, ct_uid, 'server', ct_db, record.name, level, msg, record.pathname, record.lineno, record.funcName) cr.execute(""" INSERT INTO ir_logging(create_date, write_date, create_uid, write_uid, type, dbname, name, level, message, path, line, func) VALUES (NOW() at time zone 'UTC', NOW() at time zone 'UTC', %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index f60e83726c4..439463b962a 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -344,6 +344,30 @@ class date(_column): exc_info=True) return (context_today or today).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) + @staticmethod + def date_to_datetime(model, cr, uid, userdate, context=None): + """ Convert date values expressed in user's timezone to + server-side UTC timestamp, assuming a default arbitrary + time of 12:00 AM - because a time is needed. + + :param str userdate: date string in in user time zone + :return: UTC datetime string for server-side use + """ + user_date = DT.datetime.strptime(userdate, tools.DEFAULT_SERVER_DATE_FORMAT) + if context and context.get('tz'): + tz_name = context['tz'] + else: + tz_name = model.pool.get('res.users').read(cr, SUPERUSER_ID, uid, ['tz'])['tz'] + if tz_name: + utc = pytz.timezone('UTC') + context_tz = pytz.timezone(tz_name) + user_datetime = user_date + DT.timedelta(hours=12.0) + local_timestamp = context_tz.localize(user_datetime, is_dst=False) + user_datetime = local_timestamp.astimezone(utc) + return user_datetime.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT) + return user_date.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT) + + class datetime(_column): _type = 'datetime' @@ -1191,42 +1215,69 @@ class function(_column): return self._fnct_search(obj, cr, uid, obj, name, args, context=context) def postprocess(self, cr, uid, obj, field, value=None, context=None): + return self._postprocess_batch(cr, uid, obj, field, {0: value}, context=context)[0] + + def _postprocess_batch(self, cr, uid, obj, field, values, context=None): + if not values: + return values + if context is None: context = {} - result = value - field_type = obj._columns[field]._type - if field_type == "many2one": - # make the result a tuple if it is not already one - if isinstance(value, (int,long)) and hasattr(obj._columns[field], 'relation'): - obj_model = obj.pool[obj._columns[field].relation] - dict_names = dict(obj_model.name_get(cr, SUPERUSER_ID, [value], context)) - result = (value, dict_names[value]) - if field_type == 'binary': - if context.get('bin_size'): - # client requests only the size of binary fields - result = get_nice_size(value) - elif not context.get('bin_raw'): - result = sanitize_binary_value(value) + field_type = obj._columns[field]._type + new_values = dict(values) - if field_type == "integer" and value > xmlrpclib.MAXINT: + if field_type == "integer": # integer/long values greater than 2^31-1 are not supported # in pure XMLRPC, so we have to pass them as floats :-( # This is not needed for stored fields and non-functional integer # fields, as their values are constrained by the database backend # to the same 32bits signed int limit. - result = __builtin__.float(value) - return result + for rid, value in values.iteritems(): + if value and value > xmlrpclib.MAXINT: + new_values[rid] = __builtin__.float(value) + + elif field_type == 'binary': + if context.get('bin_size'): + # client requests only the size of binary fields + for rid, value in values.iteritems(): + if value: + new_values[rid] = get_nice_size(value) + elif not context.get('bin_raw'): + for rid, value in values.iteritems(): + if value: + new_values[rid] = sanitize_binary_value(value) + + elif field_type == "many2one" and hasattr(obj._columns[field], 'relation'): + # make the result a tuple if it is not already one + if all(isinstance(value, (int, long)) for value in values.values() if value): + obj_model = obj.pool[obj._columns[field].relation] + ids = [i for i in values.values() if i] + dict_names = dict(obj_model.name_get(cr, SUPERUSER_ID, ids, context)) + for rid, value in values.iteritems(): + if value: + new_values[rid] = (value, dict_names[value]) + + return new_values def get(self, cr, obj, ids, name, uid=False, context=None, values=None): result = self._fnct(obj, cr, uid, ids, name, self._arg, context) - for id in ids: - if self._multi and id in result: - for field, value in result[id].iteritems(): - if value: - result[id][field] = self.postprocess(cr, uid, obj, field, value, context) - elif result.get(id): - result[id] = self.postprocess(cr, uid, obj, name, result[id], context) + if self._multi: + swap = {} + for rid, values in result.iteritems(): + for f, v in values.iteritems(): + if f not in name: + continue + swap.setdefault(f, {})[rid] = v + + for field, values in swap.iteritems(): + new_values = self._postprocess_batch(cr, uid, obj, field, values, context) + for rid, value in new_values.iteritems(): + result[rid][field] = value + + else: + result = self._postprocess_batch(cr, uid, obj, name, result, context) + return result def set(self, cr, obj, id, name, value, user=None, context=None): diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index b545f593559..a198e013746 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1915,6 +1915,31 @@ class BaseModel(object): } return result + def get_formview_id(self, cr, uid, id, context=None): + """ Return an view id to open the document with. This method is meant to be + overridden in addons that want to give specific view ids for example. + + :param int id: id of the document to open + """ + return False + + def get_formview_action(self, cr, uid, id, context=None): + """ Return an action to open the document. This method is meant to be + overridden in addons that want to give specific view ids for example. + + :param int id: id of the document to open + """ + view_id = self.get_formview_id(cr, uid, id, context=context) + return { + 'type': 'ir.actions.act_window', + 'res_model': self._name, + 'view_type': 'form', + 'view_mode': 'form', + 'views': [(view_id, 'form')], + 'target': 'current', + 'res_id': id, + } + def _view_look_dom_arch(self, cr, uid, node, view_id, context=None): return self.pool['ir.ui.view'].postprocess_and_fields( cr, uid, self._name, node, view_id, context=context) @@ -2332,7 +2357,7 @@ class BaseModel(object): del data['id'] return data - def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context={}, orderby=False, lazy=True): + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True): """ Get the list of records in list view grouped by the given ``groupby`` fields @@ -2364,6 +2389,8 @@ class BaseModel(object): :raise AccessError: * if user has no read rights on the requested object * if user tries to bypass access rules for read on the requested object """ + if context is None: + context = {} self.check_access_rights(cr, uid, 'read') query = self._where_calc(cr, uid, domain, context=context) fields = fields or self._columns.keys() diff --git a/openerp/release.py b/openerp/release.py index 1a9c863660c..99de8e00bde 100644 --- a/openerp/release.py +++ b/openerp/release.py @@ -30,7 +30,7 @@ RELEASE_LEVELS_DISPLAY = {ALPHA: ALPHA, # properly comparable using normal operarors, for example: # (6,1,0,'beta',0) < (6,1,0,'candidate',1) < (6,1,0,'candidate',2) # (6,1,0,'candidate',2) < (6,1,0,'final',0) < (6,1,2,'final',0) -version_info = (8, 0, 0, ALPHA, 1) +version_info = (7, 'saas~4', 0, FINAL, 0) version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '') series = serie = major_version = '.'.join(map(str, version_info[:2])) diff --git a/openerp/service/server.py b/openerp/service/server.py index 76b415eb01e..72e130edf8b 100644 --- a/openerp/service/server.py +++ b/openerp/service/server.py @@ -280,7 +280,7 @@ class ThreadedServer(CommonServer): t.start() _logger.info('HTTP service (werkzeug) running on %s:%s', self.interface, self.port) - def start(self): + def start(self, stop=False): _logger.debug("Setting signal handlers") if os.name == 'posix': signal.signal(signal.SIGINT, self.signal_handler) @@ -291,8 +291,15 @@ class ThreadedServer(CommonServer): elif os.name == 'nt': import win32api win32api.SetConsoleCtrlHandler(lambda sig: self.signal_handler(sig, None), 1) - self.cron_spawn() - self.http_spawn() + + test_mode = config['test_enable'] or config['test_file'] + if not stop or test_mode: + # some tests need the http deamon to be available... + self.http_spawn() + + if not stop: + # only relevant if we are not in "--stop-after-init" mode + self.cron_spawn() def stop(self): """ Shutdown the WSGI server. Wait for non deamon threads. @@ -329,7 +336,7 @@ class ThreadedServer(CommonServer): The first SIGINT or SIGTERM signal will initiate a graceful shutdown while a second one if any will force an immediate exit. """ - self.start() + self.start(stop=stop) rc = preload_registries(preload) @@ -552,8 +559,6 @@ class PreforkServer(CommonServer): raise def start(self): - # Empty the cursor pool, we dont want them to be shared among forked workers. - openerp.sql_db.close_all() # wakeup pipe, python doesnt throw EINTR when a syscall is interrupted # by a signal simulating a pseudo SA_RESTART. We write to a pipe in the # signal handler to overcome this behaviour @@ -602,6 +607,9 @@ class PreforkServer(CommonServer): self.stop() return rc + # Empty the cursor pool, we dont want them to be shared among forked workers. + openerp.sql_db.close_all() + _logger.debug("Multiprocess starting") while 1: try: diff --git a/openerp/sql_db.py b/openerp/sql_db.py index fcc60e7b6f3..3e401347a18 100644 --- a/openerp/sql_db.py +++ b/openerp/sql_db.py @@ -399,12 +399,13 @@ class TestCursor(Cursor): def release(self): self._lock.release() - def close(self, force=False): - if force: - super(TestCursor, self).close() - elif not self._closed: + def force_close(self): + super(TestCursor, self).close() + + def close(self): + if not self._closed: self.rollback() # for stuff that has not been committed - self.release() + self.release() def autocommit(self, on): _logger.debug("TestCursor.autocommit(%r) does nothing", on) diff --git a/openerp/tests/common.py b/openerp/tests/common.py index 7cc753e810b..e881959a31b 100644 --- a/openerp/tests/common.py +++ b/openerp/tests/common.py @@ -233,6 +233,7 @@ class HttpCase(TransactionCase): _logger.info("phantom_run execution finished") def _wait_remaining_requests(self): + t0 = int(time.time()) for thread in threading.enumerate(): if thread.name.startswith('openerp.service.http.request.'): while thread.isAlive(): @@ -240,6 +241,11 @@ class HttpCase(TransactionCase): # and would prevent the forced shutdown. thread.join(0.05) time.sleep(0.05) + t1 = int(time.time()) + if t0 != t1: + _logger.info('remaining requests') + openerp.tools.misc.dumpstacks() + t0 = t1 def phantom_jsfile(self, jsfile, timeout=60, **kw): options = { diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index bb61fe2e7a2..d63e2a987e9 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -1171,7 +1171,7 @@ class ConstantMapping(Mapping): return self._value -def dumpstacks(sig, frame): +def dumpstacks(sig=None, frame=None): """ Signal handler: dump a stack trace for each existing thread.""" code = [] @@ -171,7 +171,7 @@ setuptools.setup( 'python-openid', 'pytz', 'pyusb >= 1.0.0b1', - 'pywebdav <= 0.9.4', + 'pywebdav < 0.9.8', 'pyyaml', 'qrcode', 'reportlab', # windows binary pypi.python.org/pypi/reportlab |
