diff --git a/openerp-server b/openerp-server index be0710cbce9..5d717c834de 100755 --- a/openerp-server +++ b/openerp-server @@ -30,7 +30,6 @@ GNU Public Licence. (c) 2003-TODAY, Fabien Pinckaers - OpenERP SA """ -import imp import logging import os import signal @@ -203,7 +202,7 @@ def quit_on_signals(): try: while quit_signals_received == 0: time.sleep(60) - except KeyboardInterrupt, e: + except KeyboardInterrupt: pass if config['pidfile']: diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 37c360b5cd8..2fa9910758d 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -29,1031 +29,6 @@ - - - United Arab Emirates - ae - - - Afghanistan, Islamic State of - af - - - Antigua and Barbuda - ag - - - Anguilla - ai - - - Albania - al - - - Armenia - am - - - Netherlands Antilles - an - - - Angola - ao - - - Antarctica - aq - - - Argentina - ar - - - American Samoa - as - - - Austria - at - - - Australia - au - - - - Aruba - aw - - - Åland Islands - ax - - - Azerbaijan - az - - - Bosnia-Herzegovina - ba - - - Barbados - bb - - - Bangladesh - bd - - - Belgium - be - - - - Burkina Faso - bf - - - Bulgaria - bg - - - Bahrain - bh - - - Burundi - bi - - - Benin - bj - - - Saint Barthélémy - bl - - - Bermuda - bm - - - Brunei Darussalam - bn - - - Bolivia - bo - - - Bonaire, Sint Eustatius and Saba - bq - - - Brazil - br - - - - Bahamas - bs - - - Bhutan - bt - - - Bouvet Island - bv - - - Botswana - bw - - - Belarus - by - - - Belize - bz - - - Canada - ca - - - - Cocos (Keeling) Islands - cc - - - Central African Republic - cf - - - Congo, Democratic Republic of the - cd - - - Congo - cg - - - Switzerland - ch - - - Ivory Coast (Cote D'Ivoire) - ci - - - Cook Islands - ck - - - Chile - cl - - - Cameroon - cm - - - China - cn - - - Colombia - co - - - Costa Rica - cr - - - Cuba - cu - - - Cape Verde - cv - - - Curaçao - cw - - - Christmas Island - cx - - - Cyprus - cy - - - Czech Republic - cz - - - Germany - de - - - - Djibouti - dj - - - Denmark - dk - - - Dominica - dm - - - Dominican Republic - do - - - Algeria - dz - - - Ecuador - ec - - - Estonia - ee - - - Egypt - eg - - - Western Sahara - eh - - - Eritrea - er - - - Spain - es - - - - Ethiopia - et - - - Finland - fi - - - Fiji - fj - - - Falkland Islands - fk - - - Micronesia - fm - - - Faroe Islands - fo - - - France - fr - - - - Gabon - ga - - - Grenada - gd - - - Georgia - ge - - - French Guyana - gf - - - Ghana - gh - - - Gibraltar - gi - - - Guernsey - gg - - - Greenland - gl - - - Gambia - gm - - - Guinea - gn - - - Guadeloupe (French) - gp - - - Equatorial Guinea - gq - - - Greece - gr - - - South Georgia and the South Sandwich Islands - gs - - - Guatemala - gt - - - Guam (USA) - gu - - - Guinea Bissau - gw - - - Guyana - gy - - - Hong Kong - hk - - - Heard and McDonald Islands - hm - - - Honduras - hn - - - Croatia - hr - - - Haiti - ht - - - Hungary - hu - - - Indonesia - id - - - Ireland - ie - - - Israel - il - - - Isle of Man - im - - - India - in - - - - British Indian Ocean Territory - io - - - Iraq - iq - - - Iran - ir - - - Iceland - is - - - Italy - it - - - Jersey - je - - - Jamaica - jm - - - Jordan - jo - - - Japan - jp - - - Kenya - ke - - - Kyrgyz Republic (Kyrgyzstan) - kg - - - Cambodia, Kingdom of - kh - - - Kiribati - ki - - - Comoros - km - - - Saint Kitts & Nevis Anguilla - kn - - - North Korea - kp - - - South Korea - kr - - - Kuwait - kw - - - Cayman Islands - ky - - - Kazakhstan - kz - - - Laos - la - - - Lebanon - lb - - - Saint Lucia - lc - - - Liechtenstein - li - - - Sri Lanka - lk - - - Liberia - lr - - - Lesotho - ls - - - Lithuania - lt - - - Luxembourg - lu - - - Latvia - lv - - - Libya - ly - - - Morocco - ma - - - Monaco - mc - - - Moldavia - md - - - Montenegro - me - - - Saint Martin (French part) - mf - - - Madagascar - mg - - - Marshall Islands - mh - - - Macedonia, the former Yugoslav Republic of - mk - - - Mali - ml - - - Myanmar - mm - - - Mongolia - mn - - - Macau - mo - - - Northern Mariana Islands - mp - - - Martinique (French) - mq - - - Mauritania - mr - - - Montserrat - ms - - - Malta - mt - - - Mauritius - mu - - - Maldives - mv - - - Malawi - mw - - - Mexico - mx - - - Malaysia - my - - - Mozambique - mz - - - Namibia - na - - - New Caledonia (French) - nc - - - Niger - ne - - - Norfolk Island - nf - - - Nigeria - ng - - - Nicaragua - ni - - - Netherlands - nl - - - - Norway - no - - - Nepal - np - - - Nauru - nr - - - Neutral Zone - nt - - - Niue - nu - - - New Zealand - nz - - - Oman - om - - - Panama - pa - - - Peru - pe - - - Polynesia (French) - pf - - - Papua New Guinea - pg - - - Philippines - ph - - - Pakistan - pk - - - Poland - pl - - - Saint Pierre and Miquelon - pm - - - Pitcairn Island - pn - - - Puerto Rico - pr - - - Palestinian Territory, Occupied - ps - - - Portugal - pt - - - Palau - pw - - - Paraguay - py - - - Qatar - qa - - - Reunion (French) - re - - - Romania - ro - - - Serbia - rs - - - Russian Federation - ru - - - Rwanda - rw - - - Saudi Arabia - sa - - - Solomon Islands - sb - - - Seychelles - sc - - - Sudan - sd - - - Sweden - se - - - Singapore - sg - - - Saint Helena - sh - - - Slovenia - si - - - Svalbard and Jan Mayen Islands - sj - - - Slovakia - sk - - - Sierra Leone - sl - - - San Marino - sm - - - Senegal - sn - - - Somalia - so - - - Suriname - sr - - - South Sudan - ss - - - Saint Tome (Sao Tome) and Principe - st - - - El Salvador - sv - - - Sint Maarten (Dutch part) - sx - - - Syria - sy - - - Swaziland - sz - - - Turks and Caicos Islands - tc - - - Chad - td - - - French Southern Territories - tf - - - Togo - tg - - - Thailand - th - - - Tajikistan - tj - - - Tokelau - tk - - - Turkmenistan - tm - - - Tunisia - tn - - - Tonga - to - - - East Timor - tp - - - Turkey - tr - - - Trinidad and Tobago - tt - - - Tuvalu - tv - - - Taiwan - tw - - - Tanzania - tz - - - Ukraine - ua - - - Uganda - ug - - - United Kingdom - - gb - - - USA Minor Outlying Islands - um - - - United States - us - - - - Uruguay - uy - - - Uzbekistan - uz - - - Holy See (Vatican City State) - va - - - Saint Vincent & Grenadines - vc - - - Venezuela - ve - - - Virgin Islands (British) - vg - - - Virgin Islands (USA) - vi - - - Vietnam - vn - - - Vanuatu - vu - - - Wallis and Futuna Islands - wf - - - Samoa - ws - - - Yemen - ye - - - Mayotte - yt - - - Yugoslavia - yu - - - South Africa - za - - - Zambia - zm - - - - Zaire - zr - - - Zimbabwe - zw - - Your Company diff --git a/openerp/addons/base/country_data.xml b/openerp/addons/base/country_data.xml index 5731b37f382..d4d880cb8ed 100644 --- a/openerp/addons/base/country_data.xml +++ b/openerp/addons/base/country_data.xml @@ -70,7 +70,7 @@ Australia au - + @@ -106,7 +106,7 @@ Belgium be - + @@ -162,7 +162,7 @@ Brazil br - + @@ -198,7 +198,7 @@ Canada ca - + @@ -350,7 +350,7 @@ Spain es - + @@ -386,7 +386,7 @@ France fr - + @@ -532,7 +532,7 @@ India in - + @@ -838,7 +838,7 @@ Netherlands nl - + @@ -1174,7 +1174,7 @@ United Kingdom - + gb @@ -1186,7 +1186,7 @@ United States us - + @@ -1269,6 +1269,7 @@ zm + Zaire diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index cb52e2f5de9..d2c6ebb3e1b 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.po @@ -794,7 +794,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3701,7 +3701,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5480,7 +5480,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11014,7 +11014,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11134,7 +11134,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index 3e1e29f7661..e618a02e88c 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index e127ce1abbb..9ea225bb79f 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.po @@ -798,7 +798,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3769,7 +3769,7 @@ msgstr "GPL-2 أو إصدار أحدث" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5573,7 +5573,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "رمز الولاية (ثلاثة حروف).\n" #. module: base @@ -11138,7 +11138,7 @@ msgstr "المتواليات" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11261,7 +11261,7 @@ msgstr "مرشح الفرز" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "السيدة" #. module: base diff --git a/openerp/addons/base/i18n/base.pot b/openerp/addons/base/i18n/base.pot index 884dac7d821..7721ab2711c 100644 --- a/openerp/addons/base/i18n/base.pot +++ b/openerp/addons/base/i18n/base.pot @@ -727,7 +727,7 @@ msgstr "" #: help:ir.actions.todo,type:0 msgid "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets automatically to Done." +"Launch Manually Once: after having been launched manually, it sets automatically to Done." msgstr "" #. module: base @@ -1317,11 +1317,6 @@ msgstr "" msgid "Create _Menu" msgstr "" -#. module: base -#: field:res.payterm,name:0 -msgid "Payment Term (short name)" -msgstr "" - #. module: base #: model:ir.model,name:base.model_res_bank #: view:res.bank:0 @@ -2155,7 +2150,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 -msgid "Portugese (BR) / Português (BR)" +msgid "Portuguese (BR) / Português (BR)" msgstr "" #. module: base @@ -3002,7 +2997,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 -msgid "Portugese / Português" +msgid "Portuguese / Português" msgstr "" #. module: base @@ -3206,11 +3201,6 @@ msgstr "" msgid "Error ! You cannot create recursive associated members." msgstr "" -#. module: base -#: view:res.payterm:0 -msgid "Payment Term" -msgstr "" - #. module: base #: selection:res.lang,direction:0 msgid "Right-to-Left" @@ -3430,7 +3420,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Sir" msgstr "" #. module: base @@ -5037,7 +5027,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" @@ -10134,7 +10124,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -10249,7 +10239,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base @@ -11306,6 +11296,35 @@ msgstr "" msgid "Madam" msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_mister +msgid "Mister" +msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_doctor +msgid "Doctor" +msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_prof +msgid "Professor" +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_mister +msgid "Mr." +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_doctor +msgid "Dr." +msgstr "" + +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_prof +msgid "Prof." +msgstr "" + + #. module: base #: model:res.country,name:base.ee msgid "Estonia" diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index 3d2625e4733..ca934b47963 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.po @@ -799,7 +799,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3753,8 +3753,8 @@ msgstr "GPL версия 2 или по-нова" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5554,7 +5554,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Кодът на държавата в три букви.\n" #. module: base @@ -11117,7 +11117,7 @@ msgstr "Последователност" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11237,7 +11237,7 @@ msgstr "Филтър" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Г-жа" #. module: base diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index 9a3b2255563..a4522c344c8 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.po @@ -783,7 +783,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3690,7 +3690,7 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5469,7 +5469,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11003,7 +11003,7 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11123,7 +11123,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index 6fc2fb91702..a4d102d7818 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.po @@ -807,7 +807,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3805,7 +3805,7 @@ msgstr "GPL-2 o versió posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -5641,7 +5641,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El codi de la província de 3 caràcters.\n" #. module: base @@ -11259,7 +11259,7 @@ msgstr "Seqüències" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11385,7 +11385,7 @@ msgstr "Filtre" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 6069a8e44ca..5fce16df6c7 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -805,7 +805,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3835,8 +3835,8 @@ msgstr "GPL-2 nebo pozdější verze" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5650,7 +5650,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Kód státu ve třech znacích.\n" #. module: base @@ -11276,7 +11276,7 @@ msgstr "Posloupnosti" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Paní" #. module: base @@ -11398,7 +11398,7 @@ msgstr "Filtr" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Pan" #. module: base diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index 62dc22344a7..879d4a76f24 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/i18n/da.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "Sekvenser" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 301be6a019e..8c5989a1e5b 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -869,7 +869,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "Manuell: manuell gestartet" @@ -4345,7 +4345,7 @@ msgstr "GPL-2 oder höher" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Hr." #. module: base @@ -6486,7 +6486,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Der 3 stellige Staatencode\n" #. module: base @@ -12558,7 +12558,7 @@ msgstr "Sequenzen" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Frau" #. module: base @@ -12683,7 +12683,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Frau" #. module: base diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index 610613af10c..888dd371b21 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3776,7 +3776,7 @@ msgstr "GPL-2 ή μεταγενέστερη έκδοση" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5589,7 +5589,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Ο κωδικός κατάστασης με 3 χαρακτήρες\n" #. module: base @@ -11159,7 +11159,7 @@ msgstr "Ιεραρχήσεις" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11281,7 +11281,7 @@ msgstr "Φίλτρο" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Κα/Δς" #. module: base diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index ee7bd182672..c435e12b4ce 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/i18n/en_GB.po @@ -862,7 +862,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Launched manually.\n" @@ -4355,8 +4355,8 @@ msgstr "GPL-2 or later version" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -6310,8 +6310,8 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" -msgstr "The state code in three chars.\n" +msgid "The state code in max. three chars." +msgstr "The state code in max. three chars." #. module: base #: model:res.country,name:base.sj @@ -11913,8 +11913,8 @@ msgstr "Sequences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -12038,8 +12038,8 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 3f0a4646113..853e7c31fc4 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -853,7 +853,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Se lanza manualmente.\n" @@ -4029,7 +4029,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -5868,7 +5868,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base @@ -11486,7 +11486,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11613,7 +11613,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index f215912bd37..188fedf98fa 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.po @@ -835,7 +835,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3843,7 +3843,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -5682,7 +5682,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base @@ -11300,7 +11300,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -11427,7 +11427,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_CR.po b/openerp/addons/base/i18n/es_CR.po index 87c2b8aa483..59784f67f0d 100644 --- a/openerp/addons/base/i18n/es_CR.po +++ b/openerp/addons/base/i18n/es_CR.po @@ -879,7 +879,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Lanzado manualmente.\n" @@ -4442,7 +4442,7 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Sr." #. module: base @@ -6736,7 +6736,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base @@ -13818,7 +13818,7 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra." #. module: base @@ -13945,7 +13945,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index 0ba92adb8ff..1f654b96e4b 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.po @@ -847,7 +847,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Se lanza manualmente.\n" @@ -4019,8 +4019,8 @@ msgstr "GPL-2 o versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5872,7 +5872,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "El código de la provincia de 3 caracteres.\n" #. module: base @@ -11535,8 +11535,8 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11662,7 +11662,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index aac50f06100..201786b5436 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.po @@ -788,7 +788,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3713,7 +3713,7 @@ msgstr "GPL-2 või hilisem versioon" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5499,7 +5499,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Maakonna kolmekohaline kood.\n" #. module: base @@ -11043,7 +11043,7 @@ msgstr "Jadad" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11163,7 +11163,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index 792b21b6765..a1a9b7153e2 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/i18n/eu.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index 066fe2500d8..27f15b9588e 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -786,7 +786,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3715,7 +3715,7 @@ msgstr "مجوز GPL-2 یا نگارش بالاتر" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5502,7 +5502,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "کد استان در ۳ نویسه‌ای.\n" #. module: base @@ -11048,7 +11048,7 @@ msgstr "دنباله‌ها" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11168,7 +11168,7 @@ msgstr "پالایه" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index 6d1b941729e..a7c3b27cd3c 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index 62d3fff7aa8..c991f971828 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.po @@ -805,7 +805,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3799,7 +3799,7 @@ msgstr "GPL-2 tai myöhäisempi versio" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5630,7 +5630,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Osavaltion koodi kolmella kirjaimella.\n" #. module: base @@ -11278,7 +11278,7 @@ msgstr "Jaksot" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11404,8 +11404,8 @@ msgstr "Suodin" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index 02830069df2..bf3cb22327c 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -879,7 +879,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manuel : lancé manuellement.\n" @@ -4422,7 +4422,7 @@ msgstr "GPL-2 ou version supérieure" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "M." #. module: base @@ -6659,7 +6659,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Le code état en trois caractères.\n" #. module: base @@ -13001,8 +13001,8 @@ msgstr "Séquences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mme" +msgid "Miss" +msgstr "Mlle" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -13129,8 +13129,8 @@ msgstr "Filtre" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Mlle" +msgid "Mrs." +msgstr "Mme" #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index a1f6dec55ea..ec3b210b927 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/i18n/gl.po @@ -808,7 +808,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3805,8 +3805,8 @@ msgstr "GPL-2 ou versión posterior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5635,7 +5635,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "O código de estado en tres caracteres.\n" #. module: base @@ -11245,8 +11245,8 @@ msgstr "Secuencias" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "MSS" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11372,7 +11372,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ms" #. module: base diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index 63b5e98ee3e..86ee39654d2 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/i18n/he.po @@ -785,7 +785,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3702,7 +3702,7 @@ msgstr "גרסא GPL-2 או מאוחרת יותר." #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5487,7 +5487,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "ביטוי הקוד בשלוש תוים.\n" #. module: base @@ -11030,7 +11030,7 @@ msgstr "רציפות" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11150,7 +11150,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index a001f4b9cbe..a8cbd469f06 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -840,7 +840,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3835,7 +3835,7 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "g." #. module: base @@ -5646,7 +5646,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Troznamenkasta šifra države/pokrajine/županije.\n" #. module: base @@ -11218,7 +11218,7 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "gđica" #. module: base @@ -11344,7 +11344,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "gđa." #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index 3a4de493607..8e9a7bcd686 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -804,7 +804,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3792,7 +3792,7 @@ msgstr "GPL-2 vagy korábbi verzió" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Úr" #. module: base @@ -5625,7 +5625,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Az állam kódja három karakterben.\n" #. module: base @@ -11243,8 +11243,8 @@ msgstr "Sorszámok" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11372,8 +11372,8 @@ msgstr "Szűrő" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index aa1d7e92777..35b84bad12d 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index 20884ecd62d..6907213e8d2 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.po @@ -779,7 +779,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3686,7 +3686,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5465,7 +5465,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10999,7 +10999,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11119,7 +11119,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index b7d55808fb0..d4020680c67 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.po @@ -793,7 +793,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Handvirkt: Keyrt handvirkt\n" @@ -3716,7 +3716,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5495,7 +5495,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11033,7 +11033,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11153,7 +11153,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index b73f9844de2..78b5b4eb008 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -847,7 +847,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manuale: Esegui manualmente\n" @@ -3855,8 +3855,8 @@ msgstr "GPL-2 o successiva" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5690,7 +5690,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Il codice dello stato in 3 caratteri\n" #. module: base @@ -11312,8 +11312,8 @@ msgstr "Sequenze" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11439,7 +11439,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sig.ra" #. module: base diff --git a/openerp/addons/base/i18n/kk.po b/openerp/addons/base/i18n/kk.po index 331db58c6fa..dd48dceb85f 100644 --- a/openerp/addons/base/i18n/kk.po +++ b/openerp/addons/base/i18n/kk.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "Сүзгі" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "миссис" #. module: base diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index dff6a43c5e1..9d0f5276cc1 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.po @@ -784,7 +784,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3729,7 +3729,7 @@ msgstr "GPL-2 또는 이후 버젼" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5518,7 +5518,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "3문자의 상태 코드\n" #. module: base @@ -11056,7 +11056,7 @@ msgstr "시퀀스" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11176,7 +11176,7 @@ msgstr "필터" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 71314ff39ec..c4795e2c8b4 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.po @@ -778,7 +778,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3694,7 +3694,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5483,7 +5483,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Savivaldybės kodas iš trijų simbolių.\n" #. module: base @@ -11029,7 +11029,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11149,7 +11149,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ponia" #. module: base diff --git a/openerp/addons/base/i18n/lt_LT.po b/openerp/addons/base/i18n/lt_LT.po index be05dc522d1..e9dba2fbd46 100644 --- a/openerp/addons/base/i18n/lt_LT.po +++ b/openerp/addons/base/i18n/lt_LT.po @@ -5407,7 +5407,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index a487c340251..d8c9f71053f 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.po @@ -786,7 +786,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3693,7 +3693,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5472,7 +5472,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11006,7 +11006,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11126,7 +11126,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index 273d4002096..6da5ca40c6a 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.po @@ -860,7 +860,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Гараар: Гараар ажилуулна.\n" @@ -4217,8 +4217,8 @@ msgstr "GPL-2 болон дараагийн хувилбар" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -6338,7 +6338,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Мужийн код гурван тэмдэгтээр.\n" #. module: base @@ -13104,7 +13104,7 @@ msgstr "Дараалал" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Хатагтай" #. module: base @@ -13230,7 +13230,7 @@ msgstr "Шүүлт" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Хатагтай." #. module: base diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index 5a6b76b7e6a..d2d44b0e797 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.po @@ -807,7 +807,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3746,8 +3746,8 @@ msgstr "GPL-2 eller senere versjon" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5545,7 +5545,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Koden til staten med tre karakterer.\n" #. module: base @@ -11093,7 +11093,7 @@ msgstr "Sekvenser" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11213,7 +11213,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index dbd37e376ac..eaef41bcfed 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -836,7 +836,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Handmatig: Start handmatig.\n" @@ -3940,7 +3940,7 @@ msgstr "GPL-2 of latere versie" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Hr." #. module: base @@ -5803,7 +5803,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "De provinciecode in drie karakters.\n" #. module: base @@ -11528,7 +11528,7 @@ msgstr "Reeksen" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Mej." #. module: base @@ -11655,7 +11655,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Mw." #. module: base diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index bf6b8deabaf..7affdca458b 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.po @@ -790,7 +790,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3697,7 +3697,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5476,7 +5476,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11010,7 +11010,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11130,7 +11130,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/nl_NL.po b/openerp/addons/base/i18n/nl_NL.po index 267b058bfef..7b51b9be54a 100644 --- a/openerp/addons/base/i18n/nl_NL.po +++ b/openerp/addons/base/i18n/nl_NL.po @@ -5598,7 +5598,7 @@ msgstr "STOCK_MEDIA_PAUSE" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "De provinciecode in drie karakters.\n" #. module: base diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 77e41253840..1ddbdd2992f 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -797,7 +797,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3778,7 +3778,7 @@ msgstr "GPL-2 lub wersja późniejsza" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5599,7 +5599,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Trzyliterowy kod regionu\n" #. module: base @@ -11196,7 +11196,7 @@ msgstr "Numeracje" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11318,7 +11318,7 @@ msgstr "Filtr" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Pani" #. module: base diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 3a7516a9dc2..51426f4bc29 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -877,7 +877,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Iniciado manualmente\n" @@ -4222,8 +4222,8 @@ msgstr "GPL-2 ou versão superior" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -6159,7 +6159,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "O código de situação com 3 caracteres.\n" #. module: base @@ -12111,7 +12111,7 @@ msgstr "Seqüências" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Sra" #. module: base @@ -12238,7 +12238,7 @@ msgstr "Filtro" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Sra." #. module: base diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index 2f82536f1ab..78b16dd9f3d 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.po @@ -877,7 +877,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manual: Lansat manual.\n" @@ -4414,7 +4414,7 @@ msgstr "GPL-2 sau o versiune mai noua" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Dl." #. module: base @@ -6695,7 +6695,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Codul statului, din trei caractere.\n" #. module: base @@ -13750,7 +13750,7 @@ msgstr "Secvente" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "D-ra" #. module: base @@ -13878,7 +13878,7 @@ msgstr "Filtru" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Dna." #. module: base diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 365f8db415a..bf2bd97eac8 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-08-20 15:45+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-09-10 14:37+0000\n" +"Last-Translator: Chertykov Denis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" -"X-Generator: Launchpad (build 15901)\n" +"X-Launchpad-Export-Date: 2012-09-11 04:50+0000\n" +"X-Generator: Launchpad (build 15924)\n" #. module: base #: model:res.country,name:base.sh @@ -604,7 +604,7 @@ msgstr "Испанский (VE) / Español (VE)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice msgid "Invoice on Timesheets" -msgstr "" +msgstr "Счет по затратам времени" #. module: base #: view:base.module.upgrade:0 @@ -830,7 +830,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -1269,7 +1269,7 @@ msgstr "Порт SMTP" #. module: base #: model:ir.module.module,shortdesc:base.module_import_sugarcrm msgid "SugarCRM Import" -msgstr "" +msgstr "Импорт SugarCRM" #. module: base #: view:res.lang:0 @@ -1374,7 +1374,7 @@ msgstr "Система управления документами" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_claim msgid "Claims Management" -msgstr "" +msgstr "Управление претензиями" #. module: base #: model:ir.ui.menu,name:base.menu_purchase_root @@ -1749,6 +1749,12 @@ msgid "" " Apply Different Category for the product.\n" " " msgstr "" +"\n" +" Базовый модуль управления ланчами\n" +"\n" +" Отслеживание заказов, движения средств, кассы, продукции.\n" +" Возможность разнесения продукции по категориям.\n" +" " #. module: base #: model:res.country,name:base.kg @@ -1862,7 +1868,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_html_view msgid "Html View" -msgstr "" +msgstr "Просмотр HTML" #. module: base #: field:res.currency,position:0 @@ -2533,7 +2539,7 @@ msgstr "Идеи" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm msgid "Opportunity to Quotation" -msgstr "" +msgstr "Предложение в Запрос цен" #. module: base #: model:ir.module.module,description:base.module_sale_analytic_plans @@ -2767,7 +2773,7 @@ msgstr "Словения" #. module: base #: help:res.currency,name:0 msgid "Currency Code (ISO 4217)" -msgstr "" +msgstr "Код валюты (ISO 4217)" #. module: base #: model:ir.actions.act_window,name:base.res_log_act_window @@ -3267,7 +3273,7 @@ msgstr "Режим SMTP-over-SSL недоступен" #. module: base #: model:ir.module.module,shortdesc:base.module_survey msgid "Survey" -msgstr "" +msgstr "Опрос" #. module: base #: view:base.language.import:0 @@ -3315,7 +3321,7 @@ msgstr "Уругвай" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_crm msgid "eMail Gateway for Leads" -msgstr "" +msgstr "Шлюз эл.почты для кандидатов" #. module: base #: selection:base.language.install,lang:0 @@ -3530,7 +3536,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "" +msgstr "Инструмент создания отчетов Webkit" #. module: base #: selection:publisher_warranty.contract,state:0 @@ -3557,7 +3563,7 @@ msgstr "Майотта" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_todo msgid "Tasks on CRM" -msgstr "" +msgstr "Задачи по CRM" #. module: base #: model:ir.module.category,name:base.module_category_generic_modules_accounting @@ -3683,12 +3689,12 @@ msgstr "Обнаружена рекурсия." #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit_sample msgid "Webkit Report Samples" -msgstr "" +msgstr "Примеры отчетов Webkit" #. module: base #: model:ir.module.module,shortdesc:base.module_point_of_sale msgid "Point Of Sale" -msgstr "" +msgstr "Точка продажи" #. module: base #: code:addons/base/module/module.py:302 @@ -3812,7 +3818,7 @@ msgstr "Проверка кода Ean" #. module: base #: field:res.partner,vat:0 msgid "VAT" -msgstr "ИНН" +msgstr "НДС" #. module: base #: field:res.users,new_password:0 @@ -3859,7 +3865,7 @@ msgstr "GPL версии 2 или более поздней" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "Г-н" #. module: base @@ -3945,7 +3951,7 @@ msgstr "Поддержка iCal" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail msgid "Email Gateway" -msgstr "" +msgstr "Шлюз эл.почты" #. module: base #: code:addons/base/ir/ir_mail_server.py:439 @@ -4069,7 +4075,7 @@ msgstr "Португалия" #. module: base #: model:ir.module.module,shortdesc:base.module_share msgid "Share any Document" -msgstr "" +msgstr "Совместный доступ r любым документам" #. module: base #: field:ir.module.module,certificate:0 @@ -4407,7 +4413,7 @@ msgstr "Код должен быть уникальным" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expenses Management" -msgstr "" +msgstr "Управление расходами" #. module: base #: view:workflow.activity:0 @@ -4418,7 +4424,7 @@ msgstr "Входящие переходы" #. module: base #: field:ir.values,value_unpickle:0 msgid "Default value or action reference" -msgstr "" +msgstr "Значение по умолчанию или ссылка на действие" #. module: base #: model:res.country,name:base.sr @@ -4558,7 +4564,7 @@ msgstr "Экваториальная Гвинея" #. module: base #: model:ir.module.module,shortdesc:base.module_warning msgid "Warning Messages and Alerts" -msgstr "" +msgstr "Предупреждающие сообщения и оповещения" #. module: base #: view:base.module.import:0 @@ -4870,7 +4876,7 @@ msgstr "Договор уже зарегистрирован в системе." #: model:ir.actions.act_window,name:base.action_res_partner_bank_type_form #: model:ir.ui.menu,name:base.menu_action_res_partner_bank_typeform msgid "Bank Account Types" -msgstr "" +msgstr "Типы банковского счета" #. module: base #: help:ir.sequence,suffix:0 @@ -4880,7 +4886,7 @@ msgstr "Суффикс записи для нумерации" #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Необязательное имя пользователя для аутентификации SMTP" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -4935,7 +4941,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_chat msgid "Web Chat" -msgstr "" +msgstr "Веб-чат" #. module: base #: field:res.company,rml_footer2:0 @@ -4966,7 +4972,7 @@ msgstr "Права доступа" #: code:addons/base/ir/ir_model.py:311 #, python-format msgid "Changing the storing system for field \"%s\" is not allowed." -msgstr "" +msgstr "Изменение системы хранения для поля \"%s\" не допускается." #. module: base #: help:res.partner.bank,company_id:0 @@ -5699,7 +5705,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Код области из трёх букв.\n" #. module: base @@ -11330,7 +11336,7 @@ msgstr "Нумерация" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Г-жа" #. module: base @@ -11456,7 +11462,7 @@ msgstr "Фильтр" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Г-жа" #. module: base diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index d6f64ab0e58..859d0b71b1a 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.po @@ -792,7 +792,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3760,7 +3760,7 @@ msgstr "GPL-2 alebo novšia verzia" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "pán" #. module: base @@ -5574,7 +5574,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Kód štátu na 3 znaky.\n" #. module: base @@ -11163,7 +11163,7 @@ msgstr "Postupnosti" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "slečna" #. module: base @@ -11290,7 +11290,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "pani" #. module: base diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index 7fb3aa56052..c02319720b5 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.po @@ -801,7 +801,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3789,7 +3789,7 @@ msgstr "GPL-2 ali naslednja verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "G." #. module: base @@ -5617,7 +5617,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Koda zvezne države v treh znakih.\n" #. module: base @@ -11220,7 +11220,7 @@ msgstr "Zaporedja" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Gospodična" #. module: base @@ -11348,7 +11348,7 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Ga." #. module: base diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index d7e31006f9a..ef5b0691035 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.po @@ -774,7 +774,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3681,7 +3681,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5460,7 +5460,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10994,7 +10994,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11114,7 +11114,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index b409d0c1fa1..83903f64938 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.po @@ -795,7 +795,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3758,8 +3758,8 @@ msgstr "GPL-2 ili novija verzija" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5561,7 +5561,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Šifra države u ti karaktera.\n" #. module: base @@ -11139,8 +11139,8 @@ msgstr "Sekvence" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11259,8 +11259,8 @@ msgstr "Filter" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." -msgstr "Ms." +msgid "Mrs." +msgstr "Mrs." #. module: base #: view:base.module.import:0 diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index 70905626277..45b5248b701 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -842,7 +842,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "Manuell: Starta manuellt.\n" @@ -4000,8 +4000,8 @@ msgstr "GPL-2 eller senare version" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5862,7 +5862,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Landskod, tre tecken\n" #. module: base @@ -11651,7 +11651,7 @@ msgstr "Nummerserier" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Fru" #. module: base @@ -11775,7 +11775,7 @@ msgstr "Filtrera" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Frk." #. module: base diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index 95cbf8b8e7e..c8fdfff81b0 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "ลำดับ" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index a01448bde57..83e71470547 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.po @@ -774,7 +774,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3681,7 +3681,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5460,7 +5460,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10994,7 +10994,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11114,7 +11114,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index c3827b43537..9bf11b54e08 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -806,7 +806,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3824,8 +3824,8 @@ msgstr "GPL-2 veya sonraki sürümü" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." -msgstr "M." +msgid "Mr." +msgstr "Mr." #. module: base #: code:addons/base/module/module.py:519 @@ -5662,7 +5662,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Üç karakterden oluşan eyalet kodu.\n" #. module: base @@ -11280,7 +11280,7 @@ msgstr "Silsileler" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "Bayan" #. module: base @@ -11404,7 +11404,7 @@ msgstr "Süzgeç" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "Bayan" #. module: base diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index fb53900b256..6295883b1b9 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.po @@ -796,7 +796,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3717,7 +3717,7 @@ msgstr "GPL-2 або пізніша версія" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5507,7 +5507,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "Код області довжиною в три букви.\n" #. module: base @@ -11046,7 +11046,7 @@ msgstr "Послідовності" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11166,7 +11166,7 @@ msgstr "Фільтр" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/uk_UA.po b/openerp/addons/base/i18n/uk_UA.po index 8a8f1d3613f..98f0dbf024d 100644 --- a/openerp/addons/base/i18n/uk_UA.po +++ b/openerp/addons/base/i18n/uk_UA.po @@ -5424,7 +5424,7 @@ msgstr "STOCK_MEDIA_PAUSE" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." "" msgstr "" diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index 5942b9e11a0..1e07783b95d 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index fbf09c542a4..782faa4695b 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -799,7 +799,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3709,7 +3709,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5490,7 +5490,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -11028,7 +11028,7 @@ msgstr "Sequences" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11150,7 +11150,7 @@ msgstr "Bộ lọc" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index c80e08c3c03..680504f44a2 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -821,7 +821,7 @@ msgstr "OpenERP的翻译在Launchpad.net网站上进行,OpenERP项目本身也 msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" "手动:手动执行\n" @@ -4083,7 +4083,7 @@ msgstr "GPL-2 或更新版本" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "先生" #. module: base @@ -5993,7 +5993,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "三个字符的省/州代码\n" #. module: base @@ -11847,8 +11847,8 @@ msgstr "序列" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" -msgstr "Mss" +msgid "Miss" +msgstr "Miss" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -11967,7 +11967,7 @@ msgstr "过滤" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "女士" #. module: base diff --git a/openerp/addons/base/i18n/zh_HK.po b/openerp/addons/base/i18n/zh_HK.po index f29b2edd59e..e0941a864f3 100644 --- a/openerp/addons/base/i18n/zh_HK.po +++ b/openerp/addons/base/i18n/zh_HK.po @@ -775,7 +775,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3682,7 +3682,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5461,7 +5461,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "" #. module: base @@ -10995,7 +10995,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11115,7 +11115,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "" #. module: base diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index 9886f689f96..5935d13e0c8 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.po @@ -779,7 +779,7 @@ msgstr "" msgid "" "Manual: Launched manually.\n" "Automatic: Runs whenever the system is reconfigured.\n" -"Launch Manually Once: after hacing been launched manually, it sets " +"Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" @@ -3687,7 +3687,7 @@ msgstr "GPL-2 或更新版本" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "M." +msgid "Mr." msgstr "" #. module: base @@ -5470,7 +5470,7 @@ msgstr "" #. module: base #: help:res.country.state,code:0 -msgid "The state code in three chars.\n" +msgid "The state code in max. three chars." msgstr "三個字元之省或州代碼\n" #. module: base @@ -11013,7 +11013,7 @@ msgstr "序列" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss" +msgid "Miss" msgstr "" #. module: base @@ -11133,7 +11133,7 @@ msgstr "過濾器" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam -msgid "Ms." +msgid "Mrs." msgstr "女士" #. module: base diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 383f78181e9..1845707eacb 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -573,7 +573,7 @@ class actions_server(osv.osv): # ids : original ids # id : current id of the object # OUT: - # False : Finnished correctly + # False : Finished correctly # ACTION_ID : Action to launch # FIXME: refactor all the eval() calls in run()! @@ -770,7 +770,7 @@ class ir_actions_todo(osv.osv): 'type': fields.selection(TODO_TYPES, 'Type', required=True, help="""Manual: Launched manually. Automatic: Runs whenever the system is reconfigured. -Launch Manually Once: after hacing been launched manually, it sets automatically to Done."""), +Launch Manually Once: after having been launched manually, it sets automatically to Done."""), 'groups_id': fields.many2many('res.groups', 'res_groups_action_rel', 'uid', 'gid', 'Groups'), 'note': fields.text('Text', translate=True), } diff --git a/openerp/addons/base/module/module_data.xml b/openerp/addons/base/module/module_data.xml index ecd5226ad89..15cbded05cd 100644 --- a/openerp/addons/base/module/module_data.xml +++ b/openerp/addons/base/module/module_data.xml @@ -134,7 +134,7 @@ - + diff --git a/openerp/addons/base/report/corporate_defaults.xml b/openerp/addons/base/report/corporate_defaults.xml index 12e8bb5eeea..751693e7e89 100644 --- a/openerp/addons/base/report/corporate_defaults.xml +++ b/openerp/addons/base/report/corporate_defaults.xml @@ -2,8 +2,7 @@ - - + <name type="field" name="partner_id.name"/> <street type="field" name="street"/> diff --git a/openerp/addons/base/report/corporate_defaults.xsl b/openerp/addons/base/report/corporate_defaults.xsl index e0f6918ec59..9e976381e48 100644 --- a/openerp/addons/base/report/corporate_defaults.xsl +++ b/openerp/addons/base/report/corporate_defaults.xsl @@ -39,8 +39,7 @@ <!--page bottom--> <lines>1.5cm 2.2cm 19.9cm 2.2cm</lines> - <drawCentredString x="10.5cm" y="1.7cm"><xsl:value-of select="//corporate-header/corporation/rml_footer1"/></drawCentredString> - <drawCentredString x="10.5cm" y="1.25cm"><xsl:value-of select="//corporate-header/corporation/rml_footer2"/></drawCentredString> + <drawCentredString x="10.5cm" y="1.7cm"><xsl:value-of select="//corporate-header/corporation/rml_footer"/></drawCentredString> <drawCentredString x="10.5cm" y="0.8cm">Your contact : <xsl:value-of select="//corporate-header/user/name"/></drawCentredString> </xsl:template> @@ -73,8 +72,7 @@ <!--page bottom--> <lines>1.5cm 1.2cm 19.9cm 1.2cm</lines> - <drawCentredString x="10.5cm" y="1.7cm"><xsl:value-of select="//corporate-header/corporation/rml_footer1"/></drawCentredString> - <drawCentredString x="10.5cm" y="1.25cm"><xsl:value-of select="//corporate-header/corporation/rml_footer2"/></drawCentredString> + <drawCentredString x="10.5cm" y="1.7cm"><xsl:value-of select="//corporate-header/corporation/rml_footer"/></drawCentredString> <!-- <drawCentredString x="10.5cm" y="0.8cm">Your contact : <xsl:value-of select="//corporate-header/user/name"/></drawCentredString>--> </xsl:template> diff --git a/openerp/addons/base/report/corporate_sxw_header.xml b/openerp/addons/base/report/corporate_sxw_header.xml index d752ffa91a5..6cd8e5a218f 100644 --- a/openerp/addons/base/report/corporate_sxw_header.xml +++ b/openerp/addons/base/report/corporate_sxw_header.xml @@ -233,8 +233,7 @@ <table:table-column table:style-name="Table1.A"/> <table:table-row> <table:table-cell table:style-name="Table1.A1" table:value-type="string"> - <text:p text:style-name="P7">[[ company.rml_footer1 ]]</text:p> - <text:p text:style-name="P7">[[ company.rml_footer2 ]]</text:p> + <text:p text:style-name="P7">[[ company.rml_footer ]]</text:p> <text:p text:style-name="P7">Contact : [[ user.name ]]</text:p> </table:table-cell> </table:table-row> diff --git a/openerp/addons/base/report/mako_footer.html b/openerp/addons/base/report/mako_footer.html index 7c2d5b67a08..9f8990998a7 100644 --- a/openerp/addons/base/report/mako_footer.html +++ b/openerp/addons/base/report/mako_footer.html @@ -7,15 +7,8 @@ </tr> <tr> <td> - % if company['rml_footer1']: - <p align = "center"><small><b>${company.rml_footer1}</b></small></br></p> - %endif - </td> - </tr> - <tr> - <td> - % if company['rml_footer2']: - <p align = "center"><small><b>${company.rml_footer2}</b></small></br></p> + % if company['rml_footer']: + <p align="center"><small><b>${company.rml_footer}</b></small></p> %endif </td> </tr> diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index c5c05c1807c..3bfbd822dae 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -109,7 +109,7 @@ class res_partner_bank(osv.osv): if not context.get('address'): return value - for address in self.pool.get('res.partner').resolve_o2m_commands_to_record_dicts( + for address in self.pool.get('res.partner').resolve_2many_commands( cursor, user, 'address', context['address'], ['type', field], context=context): if address.get('type') == 'default': @@ -199,9 +199,8 @@ class res_partner_bank(osv.osv): if not val._data[val.id]['bank_name']: val._data[val.id]['bank_name'] = _('BANK') result = self._prepare_name_get(cr, uid, t, val, context=context) - except: - result += ' [Formatting Error]' - raise + except Exception: + raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format.")) res.append((val.id, result)) return res diff --git a/openerp/addons/base/res/res_bank_view.xml b/openerp/addons/base/res/res_bank_view.xml index 0c88ceeff7c..8a8fa0e2922 100644 --- a/openerp/addons/base/res/res_bank_view.xml +++ b/openerp/addons/base/res/res_bank_view.xml @@ -91,8 +91,9 @@ <group col="4"> <field name="state"/> <field name="acc_number"/> - <field name="company_id" on_change="onchange_company_id(company_id)" invisible="context.get('company_hide', True)" widget="selection"/> - <field name="footer" attrs="{'invisible': [('company_id','=',False)]}"/> + <field name="company_id" on_change="onchange_company_id(company_id)" + invisible="context.get('company_hide', True)" widget="selection"/> + <field name="footer" invisible="context.get('footer_hide', True)"/> </group> <group> <group name="owner" string="Bank Account Owner"> @@ -128,7 +129,7 @@ <field name="acc_number"/> <field name="bank_name"/> <field name="company_id" invisible="context.get('company_hide', True)"/> - <field name="footer" invisible="context.get('company_hide', True)"/> + <field name="footer" invisible="context.get('footer_hide', True)"/> <field name="partner_id"/> </tree> </field> diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index c4c9ba585db..83b24b55a93 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -89,7 +89,6 @@ class res_company(osv.osv): result[company.id][field] = address[field] or False return result - def _set_address_data(self, cr, uid, company_id, name, value, arg, context=None): """ Write the 'address' functional fields. """ company = self.browse(cr, uid, company_id, context=context) @@ -103,18 +102,18 @@ class res_company(osv.osv): part_obj.create(cr, uid, {name: value or False, 'parent_id': company.partner_id.id}, context=context) return True - _columns = { 'name': fields.related('partner_id', 'name', string='Company Name', size=128, required=True, store=True, type='char'), 'parent_id': fields.many2one('res.company', 'Parent Company', select=True), 'child_ids': fields.one2many('res.company', 'parent_id', 'Child Companies'), 'partner_id': fields.many2one('res.partner', 'Partner', required=True), - 'rml_header1': fields.char('Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents (report header)."), - 'rml_footer1': fields.char('General Information Footer', size=200), - 'rml_footer2': fields.char('Bank Accounts Footer', size=250, help="Write here your bank accounts for customer payments."), 'rml_header': fields.text('RML Header', required=True), + 'rml_header1': fields.char('Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents (report header)."), 'rml_header2': fields.text('RML Internal Header', required=True), 'rml_header3': fields.text('RML Internal Header for Landscape Reports', required=True), + 'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports. Automatically set based on company details, "\ + "but may also be customized by directly editing it."), + 'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."), 'logo': fields.related('partner_id', 'image', string="Logo", type="binary"), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), @@ -138,15 +137,38 @@ class res_company(osv.osv): _sql_constraints = [ ('name_uniq', 'unique (name)', 'The company name must be unique !') ] - def on_change_header(self, cr, uid, ids, phone, email, fax, website, vat, reg=False, context=None): - val = [] - if phone: val.append(_('Phone: ')+phone) - if fax: val.append(_('Fax: ')+fax) - if website: val.append(_('Website: ')+website) - if vat: val.append(_('TIN: ')+vat) - if reg: val.append(_('Reg: ')+reg) - return {'value': {'rml_footer1':' | '.join(val)}} - + + def onchange_footer(self, cr, uid, ids, context=None): + # when touched, the footer becomes custom + return {'value': {'custom_footer': True}} + + def set_auto_footer(self, cr, uid, ids, context=None): + # unset the flag 'custom_footer'; this will automatically compute the footer + return self.write(cr, uid, ids, {'custom_footer': False}, context=context) + + def compute_footer(self, cr, uid, ids, context=None): + res_partner_bank = self.pool.get('res.partner.bank') + for company in self.browse(cr, uid, ids, context): + if not company.custom_footer: + # first line (notice that missing elements are filtered out before the join) + res = ' | '.join(filter(bool, [ + company.phone and '%s: %s' % (_('Phone'), company.phone), + company.fax and '%s: %s' % (_('Fax'), company.fax), + company.email and '%s: %s' % (_('Email'), company.email), + company.website and '%s: %s' % (_('Website'), company.website), + company.vat and '%s: %s' % (_('TIN'), company.vat), + company.company_registry and '%s: %s' % (_('Reg'), company.company_registry), + ])) + # second line: bank accounts + account_ids = [acc.id for acc in company.bank_ids if acc.footer] + account_names = res_partner_bank.name_get(cr, uid, account_ids, context=context) + if account_names: + title = _('Bank Accounts') if len(account_names) > 1 else _('Bank Account') + res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names)) + # update footer + self.write(cr, uid, [company.id], {'rml_footer': res}, context=context) + return True + def on_change_country(self, cr, uid, ids, country_id, context=None): currency_id = self._get_euro(cr, uid, context=context) if country_id: @@ -226,11 +248,17 @@ class res_company(osv.osv): self.cache_restart(cr) company_id = super(res_company, self).create(cr, uid, vals, context=context) obj_partner.write(cr, uid, partner_id, {'company_id': company_id}, context=context) + self.compute_footer(cr, uid, [company_id], context=context) return company_id - def write(self, cr, *args, **argv): + def write(self, cr, uid, ids, values, context=None): self.cache_restart(cr) - return super(res_company, self).write(cr, *args, **argv) + if isinstance(ids, (int, long)): + ids = [ids] + super(res_company, self).write(cr, uid, ids, values, context=context) + if 'rml_footer' not in values: + self.compute_footer(cr, uid, ids, context=context) + return True def _get_euro(self, cr, uid, context=None): rate_obj = self.pool.get('res.currency.rate') @@ -272,20 +300,22 @@ class res_company(osv.osv): return self._header_a4 _header_main = """ - <header> +<header> <pageTemplate> - <frame id="first" x1="1.3cm" y1="2.5cm" height="%s" width="19.0cm"/> + <frame id="first" x1="1.3cm" y1="3.0cm" height="%s" width="19.0cm"/> + <stylesheet> + <paraStyle name="main_footer" fontName="DejaVu Sans" fontSize="8.0" alignment="CENTER"/> + </stylesheet> <pageGraphics> <!-- You Logo - Change X,Y,Width and Height --> <image x="1.3cm" y="%s" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image> <setFont name="DejaVu Sans" size="8"/> <fill color="black"/> <stroke color="black"/> + + <!-- page header --> <lines>1.3cm %s 20cm %s</lines> - <drawRightString x="20cm" y="%s">[[ company.rml_header1 ]]</drawRightString> - - <drawString x="1.3cm" y="%s">[[ company.partner_id.name ]]</drawString> <drawString x="1.3cm" y="%s">[[ company.partner_id.street or '' ]]</drawString> <drawString x="1.3cm" y="%s">[[ company.partner_id.city or '' ]] - [[ company.partner_id.country_id and company.partner_id.country_id.name or '']]</drawString> @@ -295,13 +325,19 @@ class res_company(osv.osv): <drawRightString x="7cm" y="%s">[[ company.partner_id.email or '' ]]</drawRightString> <lines>1.3cm %s 7cm %s</lines> + <!-- left margin --> + <rotate degrees="90"/> + <fill color="grey"/> + <drawString x="2.65cm" y="-0.4cm">produced by OpenERP.com</drawString> + <fill color="black"/> + <rotate degrees="-90"/> + <!--page bottom--> - - <lines>1.2cm 2.15cm 19.9cm 2.15cm</lines> - - <drawCentredString x="10.5cm" y="1.7cm">[[ company.rml_footer1 ]]</drawCentredString> - <drawCentredString x="10.5cm" y="1.25cm">[[ company.rml_footer2 ]]</drawCentredString> - <drawCentredString x="10.5cm" y="0.8cm">Contact : [[ user.name ]] - Page: <pageNumber/></drawCentredString> + <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines> + <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm"> + <para style="main_footer">[[ company.rml_footer ]]</para> + <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para> + </place> </pageGraphics> </pageTemplate> </header>""" diff --git a/openerp/addons/base/res/res_company_view.xml b/openerp/addons/base/res/res_company_view.xml index b0db4748974..b92cfba19b6 100644 --- a/openerp/addons/base/res/res_company_view.xml +++ b/openerp/addons/base/res/res_company_view.xml @@ -31,19 +31,15 @@ <h1> <field name="name" class="oe_inline"/> </h1> - <label for="rml_header1" class="oe_edit_only"/> - <div> - <field name="rml_header1" placeholder="e.g. Global Business Solutions"/> - </div> </div> <group col="4"> - <field name="partner_id" readonly="1" required="0" groups="base.group_no_one"/> <field name="parent_id" groups="base.group_multi_company"/> </group> <notebook colspan="4"> <page string="General Information"> <group> <group> + <field name="partner_id" readonly="1" required="0" groups="base.group_no_one"/> <label for="street" string="Address"/> <div> <field name="street" placeholder="Street..."/> @@ -55,30 +51,36 @@ </div> <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}' on_change="on_change_country(country_id)"/> </div> + <label for="rml_header1"/> + <div> + <field name="rml_header1" placeholder="e.g. Global Business Solutions"/> + </div> <field name="website" widget="url" placeholder="e.g. www.openerp.com"/> </group> <group> - <field name="phone" on_change="on_change_header(phone, email, fax, website, vat, company_registry)"/> - <field name="fax" on_change="on_change_header(phone, email, fax, website, vat, company_registry)"/> - <field name="email" on_change="on_change_header(phone, email, fax, website, vat, company_registry)"/> - <field name="vat" on_change="on_change_header(phone, email, fax, website, vat, company_registry)"/> - <field name="company_registry" on_change="on_change_header(phone, email, fax, website, vat, company_registry)"/> + <field name="phone"/> + <field name="fax"/> + <field name="email"/> + <field name="vat"/> + <field name="company_registry"/> </group> </group> <group string="Bank Accounts"> - <field name="bank_ids" colspan="4" nolabel="1"/> - <label for="rml_footer2"/> - <div name="bank_acc"> - <field name="rml_footer2"/> - <!--<button name="%(bank_account_update)d" string="Set Bank Accounts" type="action" icon="gtk-go-forward" class="oe_inline"/>--> + <field name="bank_ids" nolabel="1" + context="{'default_company_id': active_id, 'footer_hide': False}"/> + </group> + <group string="Report Footer Configuration"> + <field name="paper_format" on_change="onchange_paper_format(paper_format)"/> + <field name="custom_footer" invisible="1"/> + <label for="rml_footer"/> + <div> + <field name="rml_footer" on_change="onchange_footer()"/> + <button string="Set Automatic Footer" type="object" name="set_auto_footer" + attrs="{'invisible': [('custom_footer','=',False)]}" class="oe_edit_only"/> </div> </group> </page> <page string="Header/Footer" groups="base.group_no_one"> - <group> - <field name="paper_format" on_change="onchange_paper_format(paper_format)"/> - <field name="rml_footer1"/> - </group> <label for="rml_header"/> <field name="rml_header"/> <label for="rml_header2"/> @@ -162,7 +164,7 @@ <field name="sequence"/> </group> </group> - </sheet> + </sheet> </form> </field> </record> @@ -190,4 +192,3 @@ </data> </openerp> - diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index 3f4a052a36b..d6b42e970bf 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -552,5 +552,22 @@ class res_config_settings(osv.osv_memory): if action_ids: return act_window.read(cr, uid, action_ids[0], [], context=context) return {} + + def name_get(self, cr, uid, ids, context=None): + """ Override name_get method to return an appropriate configuration wizard + name, and not the generated name.""" + + if not ids: + return [] + # name_get may receive int id instead of an id list + if isinstance(ids, (int, long)): + ids = [ids] + + act_window = self.pool.get('ir.actions.act_window') + action_ids = act_window.search(cr, uid, [('res_model', '=', self._name)], context=context) + name = self._name + if action_ids: + name = act_window.read(cr, uid, action_ids[0], ['name'], context=context)['name'] + return [(record.id, name) for record in self.browse(cr, uid , ids, context=context)] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_country.py b/openerp/addons/base/res/res_country.py index f1321605e5f..35fb2a29ea7 100644 --- a/openerp/addons/base/res/res_country.py +++ b/openerp/addons/base/res/res_country.py @@ -64,7 +64,7 @@ addresses belonging to this country.\n\nYou can use the python-style string pate 'The code of the country must be unique !') ] _defaults = { - 'address_format': "%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s", + 'address_format': "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s", } _order='name' @@ -89,9 +89,10 @@ class CountryState(osv.osv): _columns = { 'country_id': fields.many2one('res.country', 'Country', required=True), - 'name': fields.char('State Name', size=64, required=True), + 'name': fields.char('State Name', size=64, required=True, + help='Administrative divisions of a country. E.g. Fed. State, Departement, Canton'), 'code': fields.char('State Code', size=3, - help='The state code in three chars.\n', required=True), + help='The state code in max. three chars.', required=True), } _order = 'code' diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 1609fa2a16f..52200c3fb02 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -21,7 +21,6 @@ import math import openerp -import os from osv import osv, fields import re import tools @@ -33,14 +32,6 @@ import pytz def _tz_get(self,cr,uid, context=None): return [(x, x) for x in pytz.all_timezones] -class res_payterm(osv.osv): - _description = 'Payment term' - _name = 'res.payterm' - _order = 'name' - _columns = { - 'name': fields.char('Payment Term (short name)', size=64), - } - class res_partner_category(osv.osv): def name_get(self, cr, uid, ids, context=None): @@ -58,20 +49,20 @@ class res_partner_category(osv.osv): return super(res_partner_category, self).name_get(cr, uid, ids, context=context) if isinstance(ids, (int, long)): ids = [ids] - reads = self.read(cr, uid, ids, ['name','parent_id'], context=context) + reads = self.read(cr, uid, ids, ['name', 'parent_id'], context=context) res = [] for record in reads: name = record['name'] if record['parent_id']: - name = record['parent_id'][1]+' / '+name + name = record['parent_id'][1] + ' / ' + name res.append((record['id'], name)) return res def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): if not args: - args=[] + args = [] if not context: - context={} + context = {} if name: # Be sure name_search is symetric to name_get name = name.split(' / ')[-1] @@ -85,23 +76,23 @@ class res_partner_category(osv.osv): res = self.name_get(cr, uid, ids, context=context) return dict(res) - _description='Partner Categories' + _description = 'Partner Categories' _name = 'res.partner.category' _columns = { 'name': fields.char('Category Name', required=True, size=64, translate=True), 'parent_id': fields.many2one('res.partner.category', 'Parent Category', select=True, ondelete='cascade'), 'complete_name': fields.function(_name_get_fnc, type="char", string='Full Name'), 'child_ids': fields.one2many('res.partner.category', 'parent_id', 'Child Categories'), - 'active' : fields.boolean('Active', help="The active field allows you to hide the category without removing it."), - 'parent_left' : fields.integer('Left parent', select=True), - 'parent_right' : fields.integer('Right parent', select=True), + 'active': fields.boolean('Active', help="The active field allows you to hide the category without removing it."), + 'parent_left': fields.integer('Left parent', select=True), + 'parent_right': fields.integer('Right parent', select=True), 'partner_ids': fields.many2many('res.partner', id1='category_id', id2='partner_id', string='Partners'), } _constraints = [ (osv.osv._check_recursion, 'Error ! You can not create recursive categories.', ['parent_id']) ] _defaults = { - 'active' : lambda *a: 1, + 'active': lambda *a: 1, } _parent_store = True _parent_order = 'name' @@ -113,7 +104,7 @@ class res_partner_title(osv.osv): _columns = { 'name': fields.char('Title', required=True, size=46, translate=True), 'shortcut': fields.char('Abbreviation', size=16, translate=True), - 'domain': fields.selection([('partner','Partner'),('contact','Contact')], 'Domain', required=True, size=24) + 'domain': fields.selection([('partner', 'Partner'), ('contact', 'Contact')], 'Domain', required=True, size=24) } _defaults = { 'domain': 'contact', @@ -129,13 +120,13 @@ POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'countr ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') class res_partner(osv.osv): - _description='Partner' + _description = 'Partner' _name = "res.partner" def _address_display(self, cr, uid, ids, name, args, context=None): - res={} + res = {} for partner in self.browse(cr, uid, ids, context=context): - res[partner.id] =self._display_address(cr, uid, partner, context=context) + res[partner.id] = self._display_address(cr, uid, partner, context=context) return res def _get_image(self, cr, uid, ids, name, args, context=None): @@ -143,7 +134,7 @@ class res_partner(osv.osv): for obj in self.browse(cr, uid, ids, context=context): result[obj.id] = tools.image_get_resized_images(obj.image) return result - + def _set_image(self, cr, uid, id, name, value, args, context=None): return self.write(cr, uid, [id], {'image': tools.image_resize_image_big(value)}, context=context) @@ -151,7 +142,7 @@ class res_partner(osv.osv): _columns = { 'name': fields.char('Name', size=128, required=True, select=True), 'date': fields.date('Date', select=1), - 'title': fields.many2one('res.partner.title','Title'), + 'title': fields.many2one('res.partner.title', 'Title'), 'parent_id': fields.many2one('res.partner', 'Owned by'), 'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'), 'ref': fields.char('Reference', size=64, select=1), @@ -162,9 +153,9 @@ class res_partner(osv.osv): "It is important to set a value for this field. You should use the same timezone " "that is otherwise used to pick and render date and time values: your computer's timezone."), 'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this partner if any.'), - 'vat': fields.char('TIN',size=32 ,help="Tax Identification Number. Check the box if the partner is subjected to taxes. Used by the some of the legal statements."), + 'vat': fields.char('TIN', size=32, help="Tax Identification Number. Check the box if the partner is subjected to taxes. Used by the some of the legal statements."), 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), - 'website': fields.char('Website',size=64, help="Website of Partner or Company"), + 'website': fields.char('Website', size=64, help="Website of Partner or Company"), 'comment': fields.text('Notes'), 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # should be removed in version 7, but kept until then for backward compatibility 'category_id': fields.many2many('res.partner.category', id1='partner_id', id2='category_id', string='Tags'), @@ -175,8 +166,8 @@ class res_partner(osv.osv): 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), 'function': fields.char('Job Position', size=128), - 'type': fields.selection( [('default','Default'), ('invoice','Invoice'), - ('delivery','Delivery'), ('contact','Contact'), + 'type': fields.selection([('default', 'Default'), ('invoice', 'Invoice'), + ('delivery', 'Delivery'), ('contact', 'Contact'), ('other', 'Other')], 'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'street': fields.char('Street', size=128), @@ -193,25 +184,24 @@ class res_partner(osv.osv): 'birthdate': fields.char('Birthdate', size=64), 'is_company': fields.boolean('Company', help="Check if the contact is a company, otherwise it is a person"), 'use_parent_address': fields.boolean('Use Company Address', help="Select this if you want to set company's address information for this contact"), + # image: all image fields are base64 encoded and PIL-supported 'image': fields.binary("Image", - help="This field holds the image used as avatar for the "\ - "partner. The image is base64 encoded, and PIL-supported. "\ - "It is limited to a 1024x1024 px image."), + help="This field holds the image used as avatar for the partner, limited to 1024x1024px"), 'image_medium': fields.function(_get_image, fnct_inv=_set_image, string="Medium-sized image", type="binary", multi="_get_image", - store = { + store={ 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10), }, help="Medium-sized image of the partner. It is automatically "\ - "resized as a 180x180 px image, with aspect ratio preserved. "\ + "resized as a 128x128px image, with aspect ratio preserved. "\ "Use this field in form views or some kanban views."), 'image_small': fields.function(_get_image, fnct_inv=_set_image, string="Small-sized image", type="binary", multi="_get_image", - store = { + store={ 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10), }, help="Small-sized image of the partner. It is automatically "\ - "resized as a 50x50 px image, with aspect ratio preserved. "\ + "resized as a 64x64px image, with aspect ratio preserved. "\ "Use this field anywhere a small image is required."), 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'), @@ -230,40 +220,35 @@ class res_partner(osv.osv): if is_company: image = open(openerp.modules.get_module_resource('base', 'static/src/img', 'company_image.png')).read() else: - from PIL import Image - from StringIO import StringIO - color = (255,255,255) - if colorize: - from random import random - color = (int(random() * 192 + 32), int(random() * 192 + 32), int(random() * 192 + 32)) - face = Image.open(openerp.modules.get_module_resource('base', 'static/src/img', 'avatar.png')) - avatar = Image.new('RGB', face.size) - avatar.paste(color) - avatar.paste(face, mask=face) - buffer = StringIO() - avatar.save(buffer, 'PNG') - image = buffer.getvalue() - return image.encode('base64') + image = tools.image_colorize(open(openerp.modules.get_module_resource('base', 'static/src/img', 'avatar.png')).read()) + return tools.image_resize_image_big(image.encode('base64')) + + def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + if (not view_id) and (view_type=='form') and context and context.get('force_email', False): + view_id = self.pool.get('ir.model.data').get_object_reference(cr, user, 'base', 'view_partner_simple_form')[1] + + return super(res_partner, self).fields_view_get(cr, user, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu) + _defaults = { 'active': True, - 'lang': lambda self, cr, uid, context: context.get('lang', 'en_US'), - 'tz': lambda self, cr, uid, context: context.get('tz', False), + 'lang': lambda self, cr, uid, ctx: ctx.get('lang', 'en_US'), + 'tz': lambda self, cr, uid, ctx: ctx.get('tz', False), 'customer': True, 'category_id': _default_category, - 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c), + 'company_id': lambda self, cr, uid, ctx: self.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=ctx), 'color': 0, 'is_company': False, 'type': 'default', 'use_parent_address': True, - 'image': lambda self, cr, uid, context: self._get_default_image(cr, uid, context.get('default_is_company', False), context), + 'image': lambda self, cr, uid, ctx: self._get_default_image(cr, uid, ctx.get('default_is_company', False), ctx), } def copy(self, cr, uid, id, default=None, context=None): if default is None: default = {} name = self.read(cr, uid, [id], ['name'], context)[0]['name'] - default.update({'name': _('%s (copy)')%(name)}) + default.update({'name': _('%s (copy)') % (name)}) return super(res_partner, self).copy(cr, uid, id, default, context) def onchange_type(self, cr, uid, ids, is_company, context=None): @@ -512,7 +497,7 @@ class res_partner(osv.osv): # get the information that will be injected into the display format # get the address format address_format = address.country_id and address.country_id.address_format or \ - '%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' + "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s" args = { 'state_code': address.state_id and address.state_id.code or '', 'state_name': address.state_id and address.state_id.name or '', @@ -525,10 +510,10 @@ class res_partner(osv.osv): args[field] = getattr(address, field) or '' if without_company: args['company_name'] = '' + elif address.parent_id: + address_format = '%(company_name)s\n' + address_format return address_format % args - - # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version class res_partner_address(osv.osv): _table = "res_partner" diff --git a/openerp/addons/base/res/res_partner_data.xml b/openerp/addons/base/res/res_partner_data.xml index 138e44176f0..5bcb65a0461 100644 --- a/openerp/addons/base/res/res_partner_data.xml +++ b/openerp/addons/base/res/res_partner_data.xml @@ -20,17 +20,32 @@ <record id="res_partner_title_madam" model="res.partner.title"> <field name="domain">contact</field> <field name="name">Madam</field> - <field name="shortcut">Ms.</field> + <field name="shortcut">Mrs.</field> </record> <record id="res_partner_title_miss" model="res.partner.title"> <field name="domain">contact</field> <field name="name">Miss</field> - <field name="shortcut">Mss</field> + <field name="shortcut">Miss</field> </record> <record id="res_partner_title_sir" model="res.partner.title"> <field name="domain">contact</field> <field name="name">Sir</field> - <field name="shortcut">M.</field> + <field name="shortcut">Sir</field> + </record> + <record id="res_partner_title_mister" model="res.partner.title"> + <field name="domain">contact</field> + <field name="name">Mister</field> + <field name="shortcut">Mr.</field> + </record> + <record id="res_partner_title_doctor" model="res.partner.title"> + <field name="domain">contact</field> + <field name="name">Doctor</field> + <field name="shortcut">Dr.</field> + </record> + <record id="res_partner_title_prof" model="res.partner.title"> + <field name="domain">contact</field> + <field name="name">Professor</field> + <field name="shortcut">Prof.</field> </record> <!-- Default bank account description --> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a79610b7a18..18b5fd76a49 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -89,6 +89,26 @@ </field> </record> + <record id="view_partner_simple_form" model="ir.ui.view"> + <field name="name">res.partner.simplified.form</field> + <field name="model">res.partner</field> + <field name="arch" type="xml"> + <form string="Contact" version="7.0"> + <field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/> + <div class="oe_title"> + <group> + <field name="name"/> + <field name="category_id" widget="many2many_tags" placeholder="Tags..."/> + <field name="function" placeholder="e.g. Sales Director"/> + <field name="email" required="context.get('force_email', False)"/> + <field name="phone"/> + <field name="mobile"/> + </group> + </div> + </form> + </field> + </record> + <record id="view_partner_form" model="ir.ui.view"> <field name="name">res.partner.form</field> <field name="model">res.partner</field> @@ -423,25 +443,6 @@ <field name="filter" eval="True"/> </record> - <record id="view_payterm_form" model="ir.ui.view"> - <field name="name">res.payterm</field> - <field name="model">res.payterm</field> - <field name="arch" type="xml"> - <form string="Payment Term" version="7.0"> - <group> - <field name="name"/> - </group> - </form> - </field> - </record> - <record id="action_payterm_form" model="ir.actions.act_window"> - <field name="name">Payment term</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">res.payterm</field> - <field name="view_type">form</field> - <field name="view_id" ref="view_payterm_form"/> - </record> - <!-- Categories --> <record id="view_partner_category_form" model="ir.ui.view"> <field name="name">Partner Categories</field> diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index d0f07daa004..1f0d612468f 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -52,7 +52,19 @@ class groups(osv.osv): else: res[g.id] = g.name return res - + + def _search_group(self, cr, uid, obj, name, args, context=None): + operand = args[0][2] + operator = args[0][1] + values = operand.split('/') + group_name = values[0] + where = [('name', operator, group_name)] + if len(values) > 1: + application_name = values[0] + group_name = values[1] + where = ['|',('category_id.name', operator, application_name)] + where + return where + _columns = { 'name': fields.char('Name', size=64, required=True, translate=True), 'users': fields.many2many('res.users', 'res_groups_users_rel', 'gid', 'uid', 'Users'), @@ -62,7 +74,7 @@ class groups(osv.osv): 'menu_access': fields.many2many('ir.ui.menu', 'ir_ui_menu_group_rel', 'gid', 'menu_id', 'Access Menu'), 'comment' : fields.text('Comment', size=250, translate=True), 'category_id': fields.many2one('ir.module.category', 'Application', select=True), - 'full_name': fields.function(_get_full_name, type='char', string='Group Name'), + 'full_name': fields.function(_get_full_name, type='char', string='Group Name', fnct_search=_search_group), } _sql_constraints = [ @@ -244,14 +256,14 @@ class res_users(osv.osv): return result _defaults = { - 'password' : '', - 'active' : True, + 'password': '', + 'active': True, 'customer': False, 'menu_id': _get_menu, 'company_id': _get_company, 'company_ids': _get_companies, 'groups_id': _get_group, - 'image': lambda self, cr, uid, context: self.pool.get('res.partner')._get_default_image(cr, uid, False, context, colorize=True), + 'image': lambda self, cr, uid, ctx={}: self.pool.get('res.partner')._get_default_image(cr, uid, False, ctx, colorize=True), } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): @@ -806,7 +818,7 @@ class users_view(osv.osv): for app, kind, gs in self.pool.get('res.groups').get_groups_by_application(cr, uid, context): if kind == 'selection': # selection group field - tips = ['%s: %s' % (g.name, g.comment or '') for g in gs] + tips = ['%s: %s' % (g.name, g.comment) for g in gs if g.comment] res[name_selection_groups(map(int, gs))] = { 'type': 'selection', 'string': app and app.name or _('Other'), diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index c340e922396..3d9d0aa93e9 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -107,7 +107,6 @@ "access_ir_actions_server_all","ir_actions_server_all","model_ir_actions_server",,1,0,0,0 "access_ir_actions_server_group_system","ir_actions_server_group_system","model_ir_actions_server","group_system",1,1,1,1 "access_res_bank_group_system","res_bank_group_system","model_res_bank","group_system",1,1,1,1 -"access_res_payterm_group_system","res_payterm_group_system","model_res_payterm","group_system",1,1,1,1 "access_res_bank_group_partner_manager","res_bank_group_partner_manager","model_res_bank","group_partner_manager",1,1,1,1 "access_res_bank_user","res_bank user","model_res_bank","group_user",1,0,0,0 "access_multi_company_default user","multi_company_default all","model_multi_company_default",,1,0,0,0 diff --git a/openerp/netsvc.py b/openerp/netsvc.py index 170108a13ad..c1a31602262 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -86,12 +86,12 @@ class Service(object): cls._services.pop(name) def LocalService(name): - # Special case for addons support, will be removed in a few days when addons - # are updated to directly use openerp.osv.osv.service. - if name == 'object_proxy': - return openerp.osv.osv.service + # Special case for addons support, will be removed in a few days when addons + # are updated to directly use openerp.osv.osv.service. + if name == 'object_proxy': + return openerp.osv.osv.service - return Service._services[name] + return Service._services[name] class ExportService(object): """ Proxy for exported services. @@ -238,9 +238,9 @@ def init_logger(): # server intended to test it. def init_alternative_logger(): class H(logging.Handler): - def emit(self, record): - if record.levelno > 20: - print record.levelno, record.pathname, record.msg + def emit(self, record): + if record.levelno > 20: + print record.levelno, record.pathname, record.msg handler = H() # Add the handler to the 'openerp' logger. logger = logging.getLogger('openerp') diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 5cb006923c7..d81833b17a6 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -892,8 +892,8 @@ class BaseModel(object): for c in cls.__dict__.get(s, []): exist = False for c2 in range(len(new)): - #For _constraints, we should check field and methods as well - if new[c2][2]==c[2] and (new[c2][0] == c[0] \ + #For _constraints, we should check field and methods as well + if new[c2][2]==c[2] and (new[c2][0] == c[0] \ or getattr(new[c2][0],'__name__', True) == \ getattr(c[0],'__name__', False)): # If new class defines a constraint with @@ -1308,7 +1308,7 @@ class BaseModel(object): if not line[i]: continue - if field[:len(prefix)] <> prefix: + if field[:len(prefix)] != prefix: if line[i] and skip: return False continue @@ -2709,7 +2709,7 @@ class BaseModel(object): # if val is a many2one, just write the ID if type(val) == tuple: val = val[0] - if (val<>False) or (type(val)<>bool): + if val is not False: cr.execute(update_query, (ss[1](val), key)) def _check_selection_field_value(self, cr, uid, field, value, context=None): @@ -2733,7 +2733,7 @@ class BaseModel(object): elif val in dict(self._columns[field].selection(self, cr, uid, context=context)): return raise except_orm(_('ValidateError'), - _('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field)) + _('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field)) def _check_removed_columns(self, cr, log=False): # iterate on the database columns to drop the NOT NULL constraints @@ -5013,66 +5013,56 @@ class BaseModel(object): return True - def resolve_o2m_commands_to_record_dicts(self, cr, uid, field_name, o2m_commands, fields=None, context=None): - """ Serializes o2m commands into record dictionaries (as if - all the o2m records came from the database via a read()), and - returns an iterable over these dictionaries. + def resolve_2many_commands(self, cr, uid, field_name, commands, fields=None, context=None): + """ Serializes one2many and many2many commands into record dictionaries + (as if all the records came from the database via a read()). This + method is aimed at onchange methods on one2many and many2many fields. - Because o2m commands might be creation commands, not all - record ids will contain an ``id`` field. Commands matching an - existing record (``UPDATE`` and ``LINK_TO``) will have an id. + Because commands might be creation commands, not all record dicts + will contain an ``id`` field. Commands matching an existing record + will have an ``id``. - .. note:: ``CREATE``, ``UPDATE`` and ``LINK_TO`` stand for the - o2m command codes ``0``, ``1`` and ``4`` - respectively - - :param field_name: name of the o2m field matching the commands - :type field_name: str - :param o2m_commands: one2many commands to execute on ``field_name`` - :type o2m_commands: list((int|False, int|False, dict|False)) - :param fields: list of fields to read from the database, when applicable - :type fields: list(str) - :raises AssertionError: if a command is not ``CREATE``, ``UPDATE`` or ``LINK_TO`` - :returns: o2m records in a shape similar to that returned by - ``read()`` (except records may be missing the ``id`` - field if they don't exist in db) - :rtype: ``list(dict)`` + :param field_name: name of the one2many or many2many field matching the commands + :type field_name: str + :param commands: one2many or many2many commands to execute on ``field_name`` + :type commands: list((int|False, int|False, dict|False)) + :param fields: list of fields to read from the database, when applicable + :type fields: list(str) + :returns: records in a shape similar to that returned by ``read()`` + (except records may be missing the ``id`` field if they don't exist in db) + :rtype: list(dict) """ - o2m_model = self._all_columns[field_name].column._obj + result = [] # result (list of dict) + record_ids = [] # ids of records to read + updates = {} # {id: dict} of updates on particular records - # convert single ids and pairs to tripled commands - commands = [] - for o2m_command in o2m_commands: - if not isinstance(o2m_command, (list, tuple)): - command = 4 - commands.append((command, o2m_command, False)) - elif len(o2m_command) == 1: - (command,) = o2m_command - commands.append((command, False, False)) - elif len(o2m_command) == 2: - command, id = o2m_command - commands.append((command, id, False)) - else: - command = o2m_command[0] - commands.append(o2m_command) - assert command in (0, 1, 4), \ - "Only CREATE, UPDATE and LINK_TO commands are supported in resolver" + for command in commands: + if not isinstance(command, (list, tuple)): + record_ids.append(command) + elif command[0] == 0: + result.append(command[2]) + elif command[0] == 1: + record_ids.append(command[1]) + updates.setdefault(command[1], {}).update(command[2]) + elif command[0] in (2, 3): + record_ids = [id for id in record_ids if id != command[1]] + elif command[0] == 4: + record_ids.append(command[1]) + elif command[0] == 5: + result, record_ids = [], [] + elif command[0] == 6: + result, record_ids = [], list(command[2]) - # extract records to read, by id, in a mapping dict - ids_to_read = [id for (command, id, _) in commands if command in (1, 4)] - records_by_id = dict( - (record['id'], record) - for record in self.pool.get(o2m_model).read( - cr, uid, ids_to_read, fields=fields, context=context)) + # read the records and apply the updates + other_model = self.pool.get(self._all_columns[field_name].column._obj) + for record in other_model.read(cr, uid, record_ids, fields=fields, context=context): + record.update(updates.get(record['id'], {})) + result.append(record) - record_dicts = [] - # merge record from db with record provided by command - for command, id, record in commands: - item = {} - if command in (1, 4): item.update(records_by_id[id]) - if command in (0, 1): item.update(record) - record_dicts.append(item) - return record_dicts + return result + + # for backward compatibility + resolve_o2m_commands_to_record_dicts = resolve_2many_commands # keep this import here, at top it will cause dependency cycle errors import expression diff --git a/openerp/release.py b/openerp/release.py index a151e939d20..50d9b8ac760 100644 --- a/openerp/release.py +++ b/openerp/release.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- ############################################################################## # # OpenERP, Open Source Management Solution diff --git a/openerp/report/custom.py b/openerp/report/custom.py index 051d1f29862..596d9a9f1b9 100644 --- a/openerp/report/custom.py +++ b/openerp/report/custom.py @@ -21,7 +21,6 @@ import os import time -import openerp.netsvc as netsvc import openerp.tools as tools from openerp.tools.safe_eval import safe_eval as eval @@ -67,7 +66,6 @@ class report_custom(report_int): # def _row_get(self, cr, uid, objs, fields, conditions, row_canvas=None, group_by=None): result = [] - tmp = [] for obj in objs: tobreak = False for cond in conditions: @@ -108,7 +106,7 @@ class report_custom(report_int): key = levels.keys() for l in key: objs = eval('obj.'+l,{'obj': obj}) - if not isinstance(objs, browse_record_list) and type(objs) <> type([]): + if not isinstance(objs, (browse_record_list, list)): objs = [objs] field_new = [] cond_new = [] @@ -221,11 +219,9 @@ class report_custom(report_int): res_dic[prev].append(line) else: prev = line[groupby] - if res_dic.has_key(line[groupby]): - res_dic[line[groupby]].append(line) - else: - res_dic[line[groupby]] = [] - res_dic[line[groupby]].append(line) + res_dic.setdefault(line[groupby], []) + res_dic[line[groupby]].append(line) + #we use the keys in results since they are ordered, whereas in res_dic.heys() they aren't for key in filter(None, [x[groupby] for x in results]): row = [] @@ -267,7 +263,7 @@ class report_custom(report_int): else: try: row.append(float(r[j])) - except: + except Exception: row.append(r[j]) results2.append(row) if report['type']=='pie': @@ -365,7 +361,6 @@ class report_custom(report_int): order_date['Y'] = lambda x : x abscissa = [] - tmp = {} idx = 0 date_idx = None @@ -389,7 +384,7 @@ class report_custom(report_int): if date_idx != None: for r in results: key = process_date['Y'](r[date_idx]) - if not data_by_year.has_key(key): + if key not in data_by_year: data_by_year[key] = [] for i in range(len(r)): r[i] = fct[i](r[i]) @@ -407,14 +402,14 @@ class report_custom(report_int): for d in data_by_year[line]: for idx in range(len(fields)-1): fields_bar.append({}) - if fields_bar[idx].has_key(d[0]): + if d[0] in fields_bar[idx]: fields_bar[idx][d[0]] += d[idx+1] else: fields_bar[idx][d[0]] = d[idx+1] for idx in range(len(fields)-1): data = {} for k in fields_bar[idx].keys(): - if data.has_key(k): + if k in data: data[k] += fields_bar[idx][k] else: data[k] = fields_bar[idx][k] @@ -488,7 +483,7 @@ class report_custom(report_int): if date_idx != None: for r in results: key = process_date['Y'](r[date_idx]) - if not data_by_year.has_key(key): + if key not in data_by_year: data_by_year[key] = [] for i in range(len(r)): r[i] = fct[i](r[i]) @@ -507,14 +502,14 @@ class report_custom(report_int): for d in data_by_year[line]: for idx in range(len(fields)-1): fields_bar.append({}) - if fields_bar[idx].has_key(d[0]): + if d[0] in fields_bar[idx]: fields_bar[idx][d[0]] += d[idx+1] else: fields_bar[idx][d[0]] = d[idx+1] for idx in range(len(fields)-1): data = {} for k in fields_bar[idx].keys(): - if data.has_key(k): + if k in data: data[k] += fields_bar[idx][k] else: data[k] = fields_bar[idx][k] diff --git a/openerp/report/interface.py b/openerp/report/interface.py index 9a97c445671..17dc0973d7e 100644 --- a/openerp/report/interface.py +++ b/openerp/report/interface.py @@ -44,8 +44,8 @@ class report_int(netsvc.Service): def __init__(self, name): assert not self.exists(name), 'The report "%s" already exists!' % name super(report_int, self).__init__(name) - if name[0:7]<>'report.': - raise Exception, 'ConceptionError, bad report name, should start with "report."' + if not name.startswith('report.'): + raise Exception('ConceptionError, bad report name, should start with "report."') self.name = name self.id = 0 self.name2 = '.'.join(name.split('.')[1:]) @@ -181,7 +181,7 @@ class report_rml(report_int): def create_pdf(self, rml, localcontext = None, logo=None, title=None): if not localcontext: - localcontext={} + localcontext = {} localcontext.update({'internal_header':self.internal_header}) if logo: self.bin_datas['logo'] = logo diff --git a/openerp/report/preprocess.py b/openerp/report/preprocess.py index e681860d7a2..93b6b4d1bc9 100644 --- a/openerp/report/preprocess.py +++ b/openerp/report/preprocess.py @@ -48,7 +48,7 @@ class report(object): try: while n.tag != txt.group(3): n = n.getparent() - except: + except Exception: n = node else: n = node.getparent() diff --git a/openerp/report/print_xml.py b/openerp/report/print_xml.py index ee1b9a316b3..c2af0984c2e 100644 --- a/openerp/report/print_xml.py +++ b/openerp/report/print_xml.py @@ -200,7 +200,7 @@ class document(object): else: args = [] # get the object - if attrs.has_key('model'): + if 'model' in attrs: obj = self.pool.get(attrs['model']) else: if isinstance(browser, list): @@ -209,7 +209,7 @@ class document(object): obj = browser._table # get the ids - if attrs.has_key('ids'): + if 'ids' in attrs: ids = self.eval(browser, attrs['ids']) else: if isinstance(browser, list): @@ -228,7 +228,7 @@ class document(object): if not isinstance(datas[atr['value']], (str, unicode)): txt = str(datas[atr['value']]) else: - txt = datas[atr['value']] + txt = datas[atr['value']] el.text = txt else: for el_cld in node: diff --git a/openerp/report/printscreen/ps_form.py b/openerp/report/printscreen/ps_form.py index 8e3823e6b03..cf6d77cbe26 100644 --- a/openerp/report/printscreen/ps_form.py +++ b/openerp/report/printscreen/ps_form.py @@ -120,7 +120,7 @@ class report_printscreen_list(report_int): line[f]=round(line[f],precision) col = etree.SubElement(node_line, 'col', tree='no') if line[f] != None: - col.text = tools.ustr(line[f] or '') + col.text = tools.ustr(line[f] or '') else: col.text = '/' diff --git a/openerp/report/printscreen/ps_list.py b/openerp/report/printscreen/ps_list.py index dc280a53e3e..8f0629462f8 100644 --- a/openerp/report/printscreen/ps_list.py +++ b/openerp/report/printscreen/ps_list.py @@ -56,7 +56,7 @@ class report_printscreen_list(report_int): def _parse_string(self, view): try: dom = etree.XML(view.encode('utf-8')) - except: + except Exception: dom = etree.XML(view) return self._parse_node(dom) diff --git a/openerp/report/render/html2html/html2html.py b/openerp/report/render/html2html/html2html.py index 181c7f7ba67..09d7ad5e825 100644 --- a/openerp/report/render/html2html/html2html.py +++ b/openerp/report/render/html2html/html2html.py @@ -20,9 +20,7 @@ ############################################################################## from openerp.report.render.rml2pdf import utils -from lxml import etree import copy -import openerp.pooler as pooler import base64 import cStringIO import re diff --git a/openerp/report/render/makohtml2html/makohtml2html.py b/openerp/report/render/makohtml2html/makohtml2html.py index 57e57bd8d63..dbb3327a105 100644 --- a/openerp/report/render/makohtml2html/makohtml2html.py +++ b/openerp/report/render/makohtml2html/makohtml2html.py @@ -23,8 +23,7 @@ import mako from lxml import etree from mako.template import Template from mako.lookup import TemplateLookup -import openerp.netsvc as netsvc -import traceback, sys, os +import os _logger = logging.getLogger(__name__) @@ -126,9 +125,8 @@ class makohtml2html(object): final_html += self.format_header(etree_obj) final_html += self.format_body(etree_obj) return final_html - except Exception,e: - tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) - _logger.error('report :\n%s\n%s\n', tb_s, str(e)) + except Exception: + _logger.exception('report :') def parseNode(html, localcontext = {}): r = makohtml2html(html, localcontext) diff --git a/openerp/report/render/odt2odt/odt2odt.py b/openerp/report/render/odt2odt/odt2odt.py index d077207f4d7..b9713943dc8 100644 --- a/openerp/report/render/odt2odt/odt2odt.py +++ b/openerp/report/render/odt2odt/odt2odt.py @@ -20,7 +20,6 @@ ############################################################################## from openerp.report.render.rml2pdf import utils -from lxml import etree import copy class odt2odt(object): diff --git a/openerp/report/render/rml2html/rml2html.py b/openerp/report/render/rml2html/rml2html.py index 504492772df..90bd58af99a 100644 --- a/openerp/report/render/rml2html/rml2html.py +++ b/openerp/report/render/rml2html/rml2html.py @@ -39,7 +39,7 @@ import sys import cStringIO from lxml import etree import copy -import utils + from openerp.report.render.rml2pdf import utils class _flowable(object): @@ -98,7 +98,7 @@ class _flowable(object): try: if new_child.get('style').find('terp_tblheader')!= -1: new_node.tag = 'th' - except: + except Exception: pass process(node,new_node) if new_node.get('colWidths',False): @@ -232,7 +232,7 @@ class _rml_stylesheet(object): attr = {} attrs = ps.attrib for key, val in attrs.items(): - attr[key] = val + attr[key] = val attrs = [] for a in attr: if a in self._tags: @@ -296,13 +296,13 @@ class _rml_template(object): frames[(posy,posx,tmpl.get('id'))] = _rml_tmpl_frame(posx, utils.unit_get(tmpl.get('width'))) for tmpl in pt.findall('pageGraphics'): for n in tmpl: - if n.tag == 'image': - self.data = rc + utils._process_text(self, n.text) - if n.tag in self._tags: - t = self._tags[n.tag](n, self.style,self.localcontext) - frames[(t.posy,t.posx,n.tag)] = t - else: - self.style.update(n) + if n.tag == 'image': + self.data = rc + utils._process_text(self, n.text) + if n.tag in self._tags: + t = self._tags[n.tag](n, self.style,self.localcontext) + frames[(t.posy,t.posx,n.tag)] = t + else: + self.style.update(n) keys = frames.keys() keys.sort() keys.reverse() diff --git a/openerp/report/render/rml2pdf/trml2pdf.py b/openerp/report/render/rml2pdf/trml2pdf.py index 96287166074..a17c03b40cb 100644 --- a/openerp/report/render/rml2pdf/trml2pdf.py +++ b/openerp/report/render/rml2pdf/trml2pdf.py @@ -82,7 +82,7 @@ class NumberedCanvas(canvas.Canvas): def showPage(self): self._currentPage +=1 if not self._flag: - self._pageCount += 1 + self._pageCount += 1 else: self.pages.update({self._currentPage:self._pageCount}) self._codes.append({'code': self._code, 'stack': self._codeStack}) @@ -424,7 +424,7 @@ class _rml_canvas(object): flow.drawOn(self.canvas,infos['x'],infos['y']) infos['height']-=h else: - raise ValueError, "Not enough space" + raise ValueError("Not enough space") def _line_mode(self, node): ljoin = {'round':1, 'mitered':0, 'bevelled':2} diff --git a/openerp/report/render/rml2txt/rml2txt.py b/openerp/report/render/rml2txt/rml2txt.py index 4a30e0d2345..ab1930d81ba 100755 --- a/openerp/report/render/rml2txt/rml2txt.py +++ b/openerp/report/render/rml2txt/rml2txt.py @@ -22,9 +22,7 @@ import sys import StringIO -import copy from lxml import etree -import base64 import utils @@ -336,8 +334,8 @@ class _rml_stylesheet(object): attr = {} attrs = ps.attributes for i in range(attrs.length): - name = attrs.item(i).localName - attr[name] = ps.get(name) + name = attrs.item(i).localName + attr[name] = ps.get(name) attrs = [] for a in attr: if a in self._tags: diff --git a/openerp/report/render/rml2txt/utils.py b/openerp/report/render/rml2txt/utils.py index 174612d847e..a56ee02b66d 100644 --- a/openerp/report/render/rml2txt/utils.py +++ b/openerp/report/render/rml2txt/utils.py @@ -23,7 +23,6 @@ import copy import re import reportlab import reportlab.lib.units -from lxml import etree from openerp.tools.safe_eval import safe_eval as eval _regex = re.compile('\[\[(.+?)\]\]') @@ -38,7 +37,7 @@ def _child_get(node, self=None, tagname=None): if n.get('rml_except', False): try: eval(n.get('rml_except'), {}, self.localcontext) - except: + except Exception: continue if n.get('rml_tag'): try: @@ -47,7 +46,7 @@ def _child_get(node, self=None, tagname=None): n2.tag = tag n2.attrib.update(attr) yield n2 - except: + except Exception: yield n else: yield n @@ -56,7 +55,7 @@ def _child_get(node, self=None, tagname=None): if self and self.localcontext and n.get('rml_except', False): try: eval(n.get('rml_except'), {}, self.localcontext) - except: + except Exception: continue if (tagname is None) or (n.tag==tagname): yield n @@ -74,11 +73,11 @@ def _process_text(self, txt): if sps: try: txt2 = eval(sps.pop(0),self.localcontext) - except: + except Exception: txt2 = '' - if type(txt2) == type(0) or type(txt2) == type(0.0): + if isinstance(txt2, (int, float)): txt2 = str(txt2) - if type(txt2)==type('') or type(txt2)==type(u''): + if isinstance(txt2, basestring): result += txt2 return result diff --git a/openerp/report/render/simple.py b/openerp/report/render/simple.py index 4ce10991924..cb3831c141f 100644 --- a/openerp/report/render/simple.py +++ b/openerp/report/render/simple.py @@ -66,7 +66,6 @@ class simple(render.render): return self.result.getvalue() if __name__=='__main__': - import time s = simple() s.xml = '''<test> <author-list> @@ -82,7 +81,7 @@ if __name__=='__main__': </author-list> </test>''' if s.render(): - print s.get() + print s.get() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/service/http_server.py b/openerp/service/http_server.py index 07e31ea9c7d..20206cf147d 100644 --- a/openerp/service/http_server.py +++ b/openerp/service/http_server.py @@ -5,10 +5,10 @@ # # # WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential +# programmers who take the whole responsibility of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software +# guarantees and support are strongly advised to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or @@ -44,10 +44,8 @@ import posixpath import urllib import os import logging -from SimpleXMLRPCServer import SimpleXMLRPCDispatcher from websrv_lib import * -import openerp.netsvc as netsvc import openerp.tools as tools try: diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index 325288791f7..fcbfaf0ba82 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -126,12 +126,12 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): ct.start() lt = len(self.threads) if (lt > 10) and (lt % 10 == 0): - # Not many threads should be serving at the same time, so log - # their abuse. - _logger.debug("Netrpc: %d threads", len(self.threads)) + # Not many threads should be serving at the same time, so log + # their abuse. + _logger.debug("Netrpc: %d threads", len(self.threads)) self.socket.close() except Exception, e: - _logger.warning("Netrpc: closing because of exception %s" % str(e)) + _logger.warning("Netrpc: closing because of exception %s", e) self.socket.close() return False diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index d8a7c663dbe..5bc4eb7b9aa 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -238,9 +238,9 @@ class db(netsvc.ExportService): if not data or res: _logger.error( - 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '\ - 'It should be provided as a -w <PASSWD> command-line option, or as `db_password` in the '\ - 'server configuration file.\n %s' % (db_name, data)) + 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. ' + 'It should be provided as a -w <PASSWD> command-line option, or as `db_password` in the ' + 'server configuration file.\n %s', db_name, data) raise Exception, "Couldn't dump database" _logger.info('DUMP DB successful: %s', db_name) @@ -253,7 +253,7 @@ class db(netsvc.ExportService): self._set_pg_psw_env_var() if self.exp_db_exist(db_name): - _logger.warning('RESTORE DB: %s already exists' % (db_name,)) + _logger.warning('RESTORE DB: %s already exists', db_name) raise Exception, "Database already exists" self._create_empty_database(db_name) @@ -282,7 +282,7 @@ class db(netsvc.ExportService): res = stdout.close() if res: raise Exception, "Couldn't restore database" - _logger.info('RESTORE DB: %s' % (db_name)) + _logger.info('RESTORE DB: %s', db_name) return True finally: @@ -465,8 +465,7 @@ GNU Public Licence. backup_directory = os.path.join(tools.config['root_path'], 'backup', time.strftime('%Y-%m-%d-%H-%M')) if zips and not os.path.isdir(backup_directory): - _logger.info('create a new backup directory to \ - store the old modules: %s', backup_directory) + _logger.info('create a new backup directory to store the old modules: %s', backup_directory) os.makedirs(backup_directory) for module in zips: @@ -526,11 +525,11 @@ GNU Public Licence. 'OS Name : %s\n' \ %(platform.platform(), platform.os.name) if os.name == 'posix': - if platform.system() == 'Linux': - lsbinfo = os.popen('lsb_release -a').read() - environment += '%s'%(lsbinfo) - else: - environment += 'Your System is not lsb compliant\n' + if platform.system() == 'Linux': + lsbinfo = os.popen('lsb_release -a').read() + environment += '%s'%(lsbinfo) + else: + environment += 'Your System is not lsb compliant\n' environment += 'Operating System Release : %s\n' \ 'Operating System Version : %s\n' \ 'Operating System Architecture : %s\n' \ @@ -695,7 +694,7 @@ class report_spool(netsvc.ExportService): self._reports[id]['state'] = True except Exception, exception: - _logger.exception('Exception: %s\n', str(exception)) + _logger.exception('Exception: %s\n', exception) if hasattr(exception, 'name') and hasattr(exception, 'value'): self._reports[id]['exception'] = openerp.exceptions.DeferredException(tools.ustr(exception.name), tools.ustr(exception.value)) else: @@ -732,7 +731,7 @@ class report_spool(netsvc.ExportService): self._reports[id]['format'] = format self._reports[id]['state'] = True except Exception, exception: - _logger.exception('Exception: %s\n', str(exception)) + _logger.exception('Exception: %s\n', exception) if hasattr(exception, 'name') and hasattr(exception, 'value'): self._reports[id]['exception'] = openerp.exceptions.DeferredException(tools.ustr(exception.name), tools.ustr(exception.value)) else: diff --git a/openerp/service/websrv_lib.py b/openerp/service/websrv_lib.py index 4da6536ed51..d9f654f4edb 100644 --- a/openerp/service/websrv_lib.py +++ b/openerp/service/websrv_lib.py @@ -3,10 +3,10 @@ # Copyright P. Christeas <p_christ@hol.gr> 2008-2010 # # WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsability of assessing all potential +# programmers who take the whole responsibility of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial -# garantees and support are strongly adviced to contract a Free Software +# guarantees and support are strongly advised to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or diff --git a/openerp/tests/addons/test_impex/tests/test_import.py b/openerp/tests/addons/test_impex/tests/test_import.py index a186323c754..9aff3704f8b 100644 --- a/openerp/tests/addons/test_impex/tests/test_import.py +++ b/openerp/tests/addons/test_impex/tests/test_import.py @@ -716,6 +716,15 @@ class test_m2m(ImporterCase): class test_o2m(ImporterCase): model_name = 'export.one2many' + def test_name_get(self): + # FIXME: bloody hell why can't this just name_create the record? + self.assertRaises( + IndexError, + self.import_, + ['const', 'value'], + [['5', u'Java is a DSL for taking large XML files' + u' and converting them to stack traces']]) + def test_single(self): self.assertEqual( self.import_(['const', 'value/value'], [ diff --git a/openerp/tests/addons/test_limits/models.py b/openerp/tests/addons/test_limits/models.py index 5240acd23ab..32e2a9a16f4 100644 --- a/openerp/tests/addons/test_limits/models.py +++ b/openerp/tests/addons/test_limits/models.py @@ -27,7 +27,6 @@ class m(openerp.osv.osv.Model): return True def consume_cpu_time(self, cr, uid, seconds, context=None): - import os t0 = time.clock() t1 = time.clock() while t1 - t0 < seconds: diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py index ea9b37e5f3b..bce5bc3903a 100644 --- a/openerp/tests/test_orm.py +++ b/openerp/tests/test_orm.py @@ -1,4 +1,3 @@ -import os import unittest2 import openerp @@ -15,6 +14,10 @@ LINK_TO = lambda id: (4, id, False) DELETE_ALL = lambda: (5, False, False) REPLACE_WITH = lambda ids: (6, False, ids) +def sorted_by_id(list_of_dicts): + "sort dictionaries by their 'id' field; useful for comparisons" + return sorted(list_of_dicts, key=lambda d: d.get('id')) + class TestO2MSerialization(common.TransactionCase): def setUp(self): @@ -23,21 +26,18 @@ class TestO2MSerialization(common.TransactionCase): def test_no_command(self): " empty list of commands yields an empty list of records " - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', []) self.assertEqual(results, []) def test_CREATE_commands(self): " returns the VALUES dict as-is " - results = self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', - map(CREATE, [{'foo': 'bar'}, {'foo': 'baz'}, {'foo': 'baq'}])) - self.assertEqual(results, [ - {'foo': 'bar'}, - {'foo': 'baz'}, - {'foo': 'baq'} - ]) + values = [{'foo': 'bar'}, {'foo': 'baz'}, {'foo': 'baq'}] + results = self.partner.resolve_2many_commands( + self.cr, UID, 'address', map(CREATE, values)) + + self.assertEqual(results, values) def test_LINK_TO_command(self): " reads the records from the database, records are returned with their ids. " @@ -48,14 +48,14 @@ class TestO2MSerialization(common.TransactionCase): ] commands = map(LINK_TO, ids) - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', commands, ['name']) - self.assertEqual(results, [ + self.assertEqual(sorted_by_id(results), sorted_by_id([ {'id': ids[0], 'name': 'foo'}, {'id': ids[1], 'name': 'bar'}, {'id': ids[2], 'name': 'baz'} - ]) + ])) def test_bare_ids_command(self): " same as the equivalent LINK_TO commands " @@ -65,14 +65,14 @@ class TestO2MSerialization(common.TransactionCase): self.partner.create(self.cr, UID, {'name': 'baz'}) ] - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', ids, ['name']) - self.assertEqual(results, [ + self.assertEqual(sorted_by_id(results), sorted_by_id([ {'id': ids[0], 'name': 'foo'}, {'id': ids[1], 'name': 'bar'}, {'id': ids[2], 'name': 'baz'} - ]) + ])) def test_UPDATE_command(self): " take the in-db records and merge the provided information in " @@ -80,18 +80,32 @@ class TestO2MSerialization(common.TransactionCase): id_bar = self.partner.create(self.cr, UID, {'name': 'bar'}) id_baz = self.partner.create(self.cr, UID, {'name': 'baz', 'city': 'tag'}) - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', [ LINK_TO(id_foo), UPDATE(id_bar, {'name': 'qux', 'city': 'tagtag'}), UPDATE(id_baz, {'name': 'quux'}) ], ['name', 'city']) - self.assertEqual(results, [ + self.assertEqual(sorted_by_id(results), sorted_by_id([ {'id': id_foo, 'name': 'foo', 'city': False}, {'id': id_bar, 'name': 'qux', 'city': 'tagtag'}, {'id': id_baz, 'name': 'quux', 'city': 'tag'} - ]) + ])) + + def test_DELETE_command(self): + " deleted records are not returned at all. " + ids = [ + self.partner.create(self.cr, UID, {'name': 'foo'}), + self.partner.create(self.cr, UID, {'name': 'bar'}), + self.partner.create(self.cr, UID, {'name': 'baz'}) + ] + commands = [DELETE(ids[0]), DELETE(ids[1]), DELETE(ids[2])] + + results = self.partner.resolve_2many_commands( + self.cr, UID, 'address', commands, ['name']) + + self.assertEqual(results, []) def test_mixed_commands(self): ids = [ @@ -99,28 +113,27 @@ class TestO2MSerialization(common.TransactionCase): for name in ['NObar', 'baz', 'qux', 'NOquux', 'NOcorge', 'garply'] ] - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', [ CREATE({'name': 'foo'}), UPDATE(ids[0], {'name': 'bar'}), LINK_TO(ids[1]), - LINK_TO(ids[2]), + DELETE(ids[2]), UPDATE(ids[3], {'name': 'quux',}), UPDATE(ids[4], {'name': 'corge'}), CREATE({'name': 'grault'}), LINK_TO(ids[5]) ], ['name']) - self.assertEqual(results, [ + self.assertEqual(sorted_by_id(results), sorted_by_id([ {'name': 'foo'}, {'id': ids[0], 'name': 'bar'}, {'id': ids[1], 'name': 'baz'}, - {'id': ids[2], 'name': 'qux'}, {'id': ids[3], 'name': 'quux'}, {'id': ids[4], 'name': 'corge'}, {'name': 'grault'}, {'id': ids[5], 'name': 'garply'} - ]) + ])) def test_LINK_TO_pairs(self): "LINK_TO commands can be written as pairs, instead of triplets" @@ -131,43 +144,20 @@ class TestO2MSerialization(common.TransactionCase): ] commands = map(lambda id: (4, id), ids) - results = self.partner.resolve_o2m_commands_to_record_dicts( + results = self.partner.resolve_2many_commands( self.cr, UID, 'address', commands, ['name']) - self.assertEqual(results, [ + self.assertEqual(sorted_by_id(results), sorted_by_id([ {'id': ids[0], 'name': 'foo'}, {'id': ids[1], 'name': 'bar'}, {'id': ids[2], 'name': 'baz'} - ]) + ])) def test_singleton_commands(self): "DELETE_ALL can appear as a singleton" + results = self.partner.resolve_2many_commands( + self.cr, UID, 'address', [DELETE_ALL()], ['name']) - try: - self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', [(5,)], ['name']) - except AssertionError: - # 5 should fail with an assert error, but not e.g. a ValueError - pass - - def test_invalid_commands(self): - "Commands with uncertain semantics in this context should be forbidden" - - with self.assertRaises(AssertionError): - self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', [DELETE(42)], ['name']) - - with self.assertRaises(AssertionError): - self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', [FORGET(42)], ['name']) - - with self.assertRaises(AssertionError): - self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', [DELETE_ALL()], ['name']) - - with self.assertRaises(AssertionError): - self.partner.resolve_o2m_commands_to_record_dicts( - self.cr, UID, 'address', [REPLACE_WITH([42])], ['name']) - + self.assertEqual(results, []) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tiny_socket.py b/openerp/tiny_socket.py index b4bed83a4c0..b5f5bbccee3 100644 --- a/openerp/tiny_socket.py +++ b/openerp/tiny_socket.py @@ -22,12 +22,15 @@ import socket import cPickle import cStringIO -import marshal import netsvc #.apidoc title: Net-RPC classes +# Pickle protocol version 2 is optimized compared to default (version 0) +PICKLE_PROTOCOL = 2 + + class Myexception(Exception): """ custom exception object store @@ -63,20 +66,19 @@ class mysocket: netsvc.close_socket(self.sock) def mysend(self, msg, exception=False, traceback=None): - msg = cPickle.dumps([msg,traceback]) - self.sock.sendall('%8d%s%s' % (len(msg), exception and "1" or "0", msg)) + msg = cPickle.dumps([msg, traceback], PICKLE_PROTOCOL) + self.sock.sendall('%8d%d%s' % (len(msg), bool(exception), msg)) def myreceive(self): buf='' - while len(buf) < 8: - chunk = self.sock.recv(8 - len(buf)) + while len(buf) < 9: + chunk = self.sock.recv(9 - len(buf)) if not chunk: raise socket.timeout buf += chunk - size = int(buf) - buf = self.sock.recv(1) - if buf != "0": - exception = buf + size = int(buf[:8]) + if buf[8] != "0": + exception = buf[8] else: exception = False msg = '' diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py index be8465055ee..c9836d7f0c6 100644 --- a/openerp/tools/convert.py +++ b/openerp/tools/convert.py @@ -134,14 +134,14 @@ def _eval_xml(self, node, pool, cr, uid, idref, context=None): f_val = f_val[0] return f_val a_eval = node.get('eval','') - idref2 = {} if a_eval: idref2 = _get_idref(self, cr, uid, f_model, context, idref) try: return unsafe_eval(a_eval, idref2) except Exception: - _logger.warning('could not eval(%s) for %s in %s' % (a_eval, node.get('name'), context), exc_info=True) - return "" + logging.getLogger('openerp.tools.convert.init').error( + 'Could not eval(%s) for %s in %s', a_eval, node.get('name'), context) + raise def _process(s, idref): m = re.findall('[^%]%\((.*?)\)[ds]', s) for id in m: diff --git a/openerp/tools/image.py b/openerp/tools/image.py index 1caafb23a18..f673906f328 100644 --- a/openerp/tools/image.py +++ b/openerp/tools/image.py @@ -20,9 +20,12 @@ ############################################################################## import io -from PIL import Image import StringIO +from PIL import Image +from PIL import ImageFilter +from random import random + # ---------------------------------------- # Image resizing # ---------------------------------------- @@ -47,15 +50,17 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file image. - past the thumbnail on the transparent background and center it. - + :param base64_source: base64-encoded version of the source - image + image; if False, returns False :param size: tuple(height, width) :param encoding: the output encoding :param filetype: the output filetype :param avoid_if_small: do not resize if image height and width are smaller than the expected size. """ + if not base64_source: + return False image_stream = io.BytesIO(base64_source.decode(encoding)) image = Image.open(image_stream) # check image size: do not create a thumbnail if avoiding smaller images @@ -63,6 +68,7 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file return base64_source # create a thumbnail: will resize and keep ratios image.thumbnail(size, Image.ANTIALIAS) + image = image.filter(ImageFilter.SHARPEN) # create a transparent image for background background = Image.new('RGBA', size, (255, 255, 255, 0)) # past the resized image on the background @@ -72,42 +78,57 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file background.save(background_stream, filetype) return background_stream.getvalue().encode(encoding) -def image_resize_image_big(base64_source, size=(1204, 1204), encoding='base64', filetype='PNG'): +def image_resize_image_big(base64_source, size=(1204, 1204), encoding='base64', filetype='PNG', avoid_if_small=True): """ Wrapper on image_resize_image, to resize images larger than the standard 'big' image size: 1024x1024px. - :param base64_source: base64 encoded source image. If False, - the function returns False. + :param size, encoding, filetype, avoid_if_small: refer to image_resize_image """ - if not base64_source: - return False - return image_resize_image(base64_source, size, encoding, filetype, True) + return image_resize_image(base64_source, size, encoding, filetype, avoid_if_small) -def image_resize_image_medium(base64_source, size=(180, 180), encoding='base64', filetype='PNG'): +def image_resize_image_medium(base64_source, size=(128, 128), encoding='base64', filetype='PNG', avoid_if_small=False): """ Wrapper on image_resize_image, to resize to the standard 'medium' image size: 180x180. - :param base64_source: base64 encoded source image. If False, - the function returns False. + :param size, encoding, filetype, avoid_if_small: refer to image_resize_image """ - if not base64_source: - return False - return image_resize_image(base64_source, size, encoding, filetype) - -def image_resize_image_small(base64_source, size=(50, 50), encoding='base64', filetype='PNG'): + return image_resize_image(base64_source, size, encoding, filetype, avoid_if_small) + +def image_resize_image_small(base64_source, size=(64, 64), encoding='base64', filetype='PNG', avoid_if_small=False): """ Wrapper on image_resize_image, to resize to the standard 'small' image size: 50x50. - :param base64_source: base64 encoded source image. If False, - the function returns False. + :param size, encoding, filetype, avoid_if_small: refer to image_resize_image """ - if not base64_source: - return False - return image_resize_image(base64_source, size, encoding, filetype) + return image_resize_image(base64_source, size, encoding, filetype, avoid_if_small) + +# ---------------------------------------- +# Colors +# --------------------------------------- + +def image_colorize(original, randomize=True, color=(255, 255, 255)): + """ Add a color to the transparent background of an image. + :param original: file object on the original image file + :param randomize: randomize the background color + :param color: background-color, if not randomize + """ + # create a new image, based on the original one + original = Image.open(io.BytesIO(original)) + image = Image.new('RGB', original.size) + # generate the background color, past it as background + if randomize: + color = (int(random() * 192 + 32), int(random() * 192 + 32), int(random() * 192 + 32)) + image.paste(color) + image.paste(original, mask=original) + # return the new image + buffer = StringIO.StringIO() + image.save(buffer, 'PNG') + return buffer.getvalue() # ---------------------------------------- # Misc image tools # --------------------------------------- def image_get_resized_images(base64_source, return_big=False, return_medium=True, return_small=True, - big_name='image', medium_name='image_medium', small_name='image_small'): + big_name='image', medium_name='image_medium', small_name='image_small', + avoid_resize_big=True, avoid_resize_medium=False, avoid_resize_small=False): """ Standard tool function that returns a dictionary containing the big, medium and small versions of the source image. This function is meant to be used for the methods of functional fields for @@ -116,24 +137,22 @@ def image_get_resized_images(base64_source, return_big=False, return_medium=True Default parameters are given to be used for the getter of functional image fields, for example with res.users or res.partner. It returns only image_medium and image_small values, to update those fields. - - :param base64_source: if set to False, other values are set to False - also. The purpose is to be linked to the fields that hold images in - OpenERP and that are binary fields. - :param return_big: if set, return_dict contains the 'big_name' entry - :param return_medium: if set, return_dict contains the 'medium_name' entry - :param return_small: if set, return_dict contains the 'small_name' entry - :param big_name: name related to the big version of the image; - 'image' by default. - :param medium_name: name related to the medium version of the - image; 'image_medium' by default. - :param small_name: name related to the small version of the - image; 'image_small' by default. + + :param base64_source: base64-encoded version of the source + image; if False, all returnes values will be False + :param return_{..}: if set, computes and return the related resizing + of the image + :param {..}_name: key of the resized image in the return dictionary; + 'image', 'image_medium' and 'image_small' by default. + :param avoid_resize_[..]: see avoid_if_small parameter :return return_dict: dictionary with resized images, depending on previous parameters. """ return_dict = dict() - if return_big: return_dict[big_name] = image_resize_image_big(base64_source) - if return_medium: return_dict[medium_name] = image_resize_image_medium(base64_source) - if return_small: return_dict[small_name] = image_resize_image_small(base64_source) - return return_dict \ No newline at end of file + if return_big: + return_dict[big_name] = image_resize_image_big(base64_source, avoid_if_small=avoid_resize_big) + if return_medium: + return_dict[medium_name] = image_resize_image_medium(base64_source, avoid_if_small=avoid_resize_medium) + if return_small: + return_dict[small_name] = image_resize_image_small(base64_source, avoid_if_small=avoid_resize_small) + return return_dict diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index 9a7b3499425..2858a7e1f23 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -663,8 +663,8 @@ def get_languages(): 'nl_BE': u'Flemish (BE) / Vlaams (BE)', 'oc_FR': u'Occitan (FR, post 1500) / Occitan', 'pl_PL': u'Polish / Język polski', - 'pt_BR': u'Portugese (BR) / Português (BR)', - 'pt_PT': u'Portugese / Português', + 'pt_BR': u'Portuguese (BR) / Português (BR)', + 'pt_PT': u'Portuguese / Português', 'ro_RO': u'Romanian / română', 'ru_RU': u'Russian / русский язык', 'si_LK': u'Sinhalese / සිංහල', diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index f487070fea0..14b857cd658 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- import threading import types import time # used to eval time.strftime expressions diff --git a/openerp/wizard/__init__.py b/openerp/wizard/__init__.py index 7354a43498d..debf0f1e74f 100644 --- a/openerp/wizard/__init__.py +++ b/openerp/wizard/__init__.py @@ -31,7 +31,6 @@ import openerp.pooler as pooler from openerp.osv.osv import except_osv from openerp.osv.orm import except_orm -import sys _logger = logging.getLogger(__name__) @@ -168,10 +167,7 @@ class interface(netsvc.Service): or isinstance(e, except_orm): netsvc.abort_response(2, e.name, 'warning', e.value) else: - import traceback - tb_s = reduce(lambda x, y: x+y, traceback.format_exception( - sys.exc_type, sys.exc_value, sys.exc_traceback)) - _logger.error('Exception in call: ' + tb_s) + _logger.exception('Exception in call:') raise return res