diff --git a/bin/addons/base/base.sql b/bin/addons/base/base.sql
index 1f7955eff10..bb792b78845 100644
--- a/bin/addons/base/base.sql
+++ b/bin/addons/base/base.sql
@@ -145,9 +145,11 @@ CREATE TABLE res_users (
email varchar(64) default null,
context_tz varchar(64) default null,
signature text,
--- action_id int references ir_act_window on delete set null,
context_lang varchar(64) default '',
+ -- No FK references below, will be added later by ORM
+ -- (when the destination rows exist)
action_id int,
+ company_id int,
primary key(id)
);
alter table res_users add constraint res_users_login_uniq unique (login);
@@ -342,7 +344,7 @@ CREATE TABLE ir_model_data (
-- Users
---------------------------------
-insert into res_users (id,login,password,name,action_id,active) values (1,'admin',NULL,'Administrator',NULL,True);
+insert into res_users (id,login,password,name,action_id,active,company_id) values (1,'admin',NULL,'Administrator',NULL,True,1);
insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
-- Compatibility purpose, to remove V6.0
diff --git a/bin/addons/base/base_data.xml b/bin/addons/base/base_data.xml
index 4f61dd1ddfc..6c9185eee7a 100644
--- a/bin/addons/base/base_data.xml
+++ b/bin/addons/base/base_data.xml
@@ -1001,6 +1001,8 @@
Tiny sprl
+
+
@@ -1011,14 +1013,18 @@
(+32).81.81.37.00
default
+
+
-
+
EUR
EUR
0.01
4
+
+
1.0
@@ -1042,12 +1048,21 @@
-
+
+
+
+
+
+
+
-
+
+
+
+
USD
USD
diff --git a/bin/addons/base/i18n/bg.po b/bin/addons/base/i18n/bg.po
index 54f38a8d16e..5570b263bec 100644
--- a/bin/addons/base/i18n/bg.po
+++ b/bin/addons/base/i18n/bg.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-26 05:19+0000\n"
+"PO-Revision-Date: 2010-03-30 04:19+0000\n"
"Last-Translator: Boris \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: 2010-03-27 04:58+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
@@ -1114,6 +1114,9 @@ msgid ""
"consider the present one as void. Do not hesitate to contact our accounting "
"department at (+32).81.81.37.00."
msgstr ""
+"Ако вашето плащане е извършено вече, моля не обръщайте внимание на това "
+"писмо. При възникване на въпроси не се колебайте да се свържете с нашия "
+"счетоводен отдел на телефон _____________."
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -1254,6 +1257,9 @@ msgid ""
"If set, sequence will only be used in case this python expression matches, "
"and will precede other sequences."
msgstr ""
+"Ако е зададено, последователноста ще бъде използвана само в случай, че "
+"изразът отговаря на условията и ще има приоритет пред други "
+"последователности."
#. module: base
#: selection:ir.actions.act_window,view_type:0
@@ -1415,6 +1421,9 @@ msgid ""
"order in Object, and you can have loop on the sales order line. Expression = "
"`object.order_line`."
msgstr ""
+"Въведете поле/израз, който връща списък. Например, изберете поръчка за "
+"продажба в обект и ще може да имате цикъл върху редовете от поръчка за "
+"продажба. Израз = 'object.order_line'."
#. module: base
#: selection:ir.translation,type:0
@@ -1468,6 +1477,8 @@ msgstr ""
#: help:ir.rule.group,global:0
msgid "Make the rule global, otherwise it needs to be put on a group"
msgstr ""
+"Направете правилото глобално, в противен случай то трябва да се зададе към "
+"определена група."
#. module: base
#: model:ir.actions.act_window,name:base.action_menu_admin
@@ -1538,6 +1549,9 @@ msgid ""
"Provide the field name that the record id refers to for the write operation. "
"If it is empty it will refer to the active id of the object."
msgstr ""
+"Задайте името на полето към което се отнася идентификатора на записа при "
+"операцията на запис. Ако оставите празно, ще сочи към активния запис от "
+"обекта."
#. module: base
#: model:res.country,name:base.zw
@@ -1657,7 +1671,7 @@ msgstr "%p - Еквивалент на \"AM\" или \"PM\"."
#. module: base
#: view:ir.actions.server:0
msgid "Iteration Actions"
-msgstr ""
+msgstr "Повтарящи се действия"
#. module: base
#: field:maintenance.contract,date_stop:0
@@ -1723,7 +1737,7 @@ msgstr "Грешка! НЕ може да създавате рекурсивни
#. module: base
#: selection:maintenance.contract,state:0
msgid "Valid"
-msgstr ""
+msgstr "Валиден"
#. module: base
#: code:addons/base/ir/ir_model.py:0
@@ -1777,7 +1791,7 @@ msgstr "Швеция"
#: selection:ir.ui.view,type:0
#: selection:wizard.ir.model.menu.create.line,view_type:0
msgid "Gantt"
-msgstr ""
+msgstr "Диаграма Гант"
#. module: base
#: view:ir.property:0
@@ -1968,7 +1982,7 @@ msgstr "Малта"
#. module: base
#: field:ir.actions.server,fields_lines:0
msgid "Field Mappings."
-msgstr ""
+msgstr "Свързвания на полето"
#. module: base
#: model:ir.model,name:base.model_ir_module_module
@@ -2436,7 +2450,7 @@ msgstr "SXW съдържание"
#. module: base
#: view:ir.cron:0
msgid "Action to Trigger"
-msgstr ""
+msgstr "Действие за извършване"
#. module: base
#: field:ir.report.custom.fields,fc0_operande:0
@@ -2538,7 +2552,7 @@ msgstr "Обновяване на системата"
#. module: base
#: field:workflow.activity,in_transitions:0
msgid "Incoming Transitions"
-msgstr ""
+msgstr "Входящи преходи"
#. module: base
#: model:res.country,name:base.sr
@@ -2648,7 +2662,7 @@ msgstr "Автор"
#. module: base
#: model:res.country,name:base.mk
msgid "FYROM"
-msgstr ""
+msgstr "Република Македония"
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -2851,7 +2865,7 @@ msgstr "RML горен колонтитул"
#. module: base
#: wizard_field:res.partner.sms_send,init,app_id:0
msgid "API ID"
-msgstr ""
+msgstr "API ID"
#. module: base
#: model:res.country,name:base.mu
@@ -3269,6 +3283,9 @@ msgid ""
"\"%s\" contains too many dots. XML ids should not contain dots ! These are "
"used to refer to other modules data, as in module.reference_id"
msgstr ""
+"\"%s\" съдържа твърде много точки. XML-идентификаторите не трябва да "
+"съдържат точки! Те се използват за свързване към данни от други модули, "
+"например в module.reference_id"
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -3324,7 +3341,7 @@ msgstr "Списък за контрол на достъпа"
#. module: base
#: model:res.country,name:base.um
msgid "USA Minor Outlying Islands"
-msgstr ""
+msgstr "САЩ Малки далечни острови"
#. module: base
#: field:res.partner.bank,state:0
@@ -3505,7 +3522,7 @@ msgstr "STOCK_DND_MULTIPLE"
#: model:ir.actions.act_window,name:base.action_partner_addess_tree
#: view:res.partner:0
msgid "Partner Contacts"
-msgstr ""
+msgstr "Партньорски контакти"
#. module: base
#: wizard_field:module.module.update,update,add:0
@@ -3694,7 +3711,7 @@ msgstr "terp-sale"
#. module: base
#: view:res.lang:0
msgid "%d - Day of the month as a decimal number [01,31]."
-msgstr ""
+msgstr "%d - пореден номер на деня от месеца като десетично число [01,31]."
#. module: base
#: view:res.lang:0
@@ -3763,12 +3780,12 @@ msgstr "Ботсвана"
#: model:ir.ui.menu,name:base.menu_partner_title_partner
#: view:res.partner.title:0
msgid "Partner Titles"
-msgstr ""
+msgstr "Обръщения към партньори"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Service"
-msgstr ""
+msgstr "Услуга"
#. module: base
#: help:ir.actions.act_window,auto_refresh:0
@@ -4149,7 +4166,7 @@ msgstr "А4"
#. module: base
#: field:ir.actions.act_window,search_view_id:0
msgid "Search View Ref."
-msgstr ""
+msgstr "\"Изглед\" търсене в справки"
#. module: base
#: view:ir.rule.group:0
@@ -4990,7 +5007,7 @@ msgstr "Модулния файл: %s, не можеда да бъде създ
#. module: base
#: model:ir.module.module,description:base.module_meta_information
msgid "The kernel of OpenERP, needed for all installation."
-msgstr ""
+msgstr "Ядрото на OpenERP, необходимо при всяка инсталация"
#. module: base
#: wizard_button:base.module.import,init,end:0
@@ -5190,7 +5207,7 @@ msgstr "Ще бъдат инсталирани"
#: model:ir.module.module,shortdesc:base.module_meta_information
#: field:res.currency,base:0
msgid "Base"
-msgstr ""
+msgstr "База"
#. module: base
#: model:res.country,name:base.lr
@@ -5261,7 +5278,7 @@ msgstr "Създай"
#. module: base
#: field:ir.exports,export_fields:0
msgid "Export ID"
-msgstr ""
+msgstr "Идентификатор на извличането"
#. module: base
#: model:res.country,name:base.fr
@@ -5292,7 +5309,7 @@ msgstr "Грешка!"
#. module: base
#: model:res.partner.bank.type.field,name:base.bank_normal_field_contry
msgid "country_id"
-msgstr ""
+msgstr "Идентификатор на държава"
#. module: base
#: field:ir.cron,interval_type:0
@@ -5308,7 +5325,7 @@ msgstr "Вид"
#. module: base
#: selection:ir.actions.todo,start_on:0
msgid "Manual"
-msgstr ""
+msgstr "Ръчно"
#. module: base
#: field:res.bank,fax:0
@@ -5416,12 +5433,12 @@ msgstr "Функции на контакта"
#. module: base
#: view:multi_company.default:0
msgid "Multi Company"
-msgstr ""
+msgstr "Холдинг"
#. module: base
#: view:ir.sequence:0
msgid "Day of the year: %(doy)s"
-msgstr ""
+msgstr "Ден от годината: %(ден)а"
#. module: base
#: model:res.country,name:base.nt
@@ -5688,7 +5705,7 @@ msgstr "Не е инсталиран"
#. module: base
#: field:workflow.activity,out_transitions:0
msgid "Outgoing Transitions"
-msgstr ""
+msgstr "Изходящи преходи"
#. module: base
#: field:ir.ui.menu,icon:0
@@ -5813,7 +5830,7 @@ msgstr "Поле %d трябва да бъде изображение"
#: model:ir.actions.act_window,name:base.action_inventory_form
#: model:ir.ui.menu,name:base.menu_action_inventory_form
msgid "Default Company per Object"
-msgstr ""
+msgstr "Компания по подразбиране за обекта"
#. module: base
#: view:ir.actions.configuration.wizard:0
@@ -5869,6 +5886,9 @@ msgid ""
"translations for your own module, you can also publish all your translation "
"at once."
msgstr ""
+"За да се подобрите превода на термини от официалния превод на OpenERP, Вие "
+"трябва да промените термините в launchpad. Ако сте превели голяма част от "
+"ваш модул, може да публикувате вашите преводи наведнъж."
#. module: base
#: wizard_button:module.lang.install,init,start:0
@@ -5878,7 +5898,7 @@ msgstr "Започни инсталацията"
#. module: base
#: help:res.lang,code:0
msgid "This field is used to set/get locales for user"
-msgstr ""
+msgstr "Това поле служи за задаване/доставяне на локали за потребителя"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_2
@@ -5932,6 +5952,9 @@ msgid ""
"' \\n 'for the currency: %s \n"
"' \\n 'at the date: %s"
msgstr ""
+"Не е намерен курс \n"
+"' \\n 'за валута: %s \n"
+"' \\n 'към дата: %s"
#. module: base
#: view:ir.actions.act_window:0
@@ -6127,7 +6150,7 @@ msgstr "Удовлетвореност"
#: model:ir.actions.act_window,name:base.action_country_state
#: model:ir.ui.menu,name:base.menu_country_state_partner
msgid "Fed. States"
-msgstr ""
+msgstr "Област/Щат"
#. module: base
#: view:ir.model:0
@@ -6202,7 +6225,7 @@ msgstr "Извличане на файл с превод"
#. module: base
#: field:ir.ui.view_sc,user_id:0
msgid "User Ref."
-msgstr ""
+msgstr "Справка за потребител"
#. module: base
#: model:ir.ui.menu,name:base.menu_base_config
@@ -6319,7 +6342,7 @@ msgstr "Зареждане на официален превод"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_10
msgid "Open Source Service Company"
-msgstr ""
+msgstr "Фирма за услуги с отворен код"
#. module: base
#: selection:res.request,state:0
@@ -6352,6 +6375,8 @@ msgid ""
"If set to true, the wizard will not be displayed on the right toolbar of a "
"form view."
msgstr ""
+"Ако е зададено \"истина\", помощникът няма да бъде показан в дясната страна "
+"на лентата с инструменти във \"изглед–бланка\"."
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -6427,6 +6452,7 @@ msgstr "Коста Рика"
#, python-format
msgid "Your can't submit bug reports due to uncovered modules: %s"
msgstr ""
+"Не можете да изпратите доклад за \"бъг\" заради неподдържани модули: %s"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_other_form
@@ -6625,6 +6651,8 @@ msgid ""
"Access all the fields related to the current object using expression in "
"double brackets, i.e. [[ object.partner_id.name ]]"
msgstr ""
+"Достъп до всички полета свързани с текущия обект чрез израз в двойни скоби "
+"напр. [[ object.partner_id.name ]]"
#. module: base
#: field:res.request.history,body:0
@@ -6662,7 +6690,7 @@ msgstr "Графика"
#: field:res.partner,child_ids:0
#: field:res.request,ref_partner_id:0
msgid "Partner Ref."
-msgstr ""
+msgstr "Справка за партньор"
#. module: base
#: field:ir.report.custom,print_format:0
@@ -6719,7 +6747,7 @@ msgstr "Номер на сметка"
#. module: base
#: view:res.lang:0
msgid "1. %c ==> Fri Dec 5 18:25:20 2008"
-msgstr ""
+msgstr "1. %c ==> Пет. Дек. 5 18:25:20 2008"
#. module: base
#: help:ir.ui.menu,groups_id:0
@@ -6728,6 +6756,9 @@ msgid ""
"groups. If this field is empty, Open ERP will compute visibility based on "
"the related object's read access."
msgstr ""
+"Ако използвате групи, видимоста на това меню ще се определя според групите. "
+"Ако полето е празно, Open ERP ще определи видимоста на менюто според правата "
+"за четене на свързаните обекти."
#. module: base
#: model:res.country,name:base.nc
@@ -6792,7 +6823,7 @@ msgstr "Китай"
#: code:addons/base/ir/ir_model.py:0
#, python-format
msgid "Password empty !"
-msgstr ""
+msgstr "Не е въведена парола !"
#. module: base
#: model:res.country,name:base.eh
@@ -6840,6 +6871,8 @@ msgid ""
"Only one client action will be execute, last "
"clinent action will be consider in case of multiples clients actions"
msgstr ""
+"Ще бъде изпълнено само едно клиентско действие. В случай, че са въведени "
+"множество действия, ще бъде изпълнено само последното."
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -6903,7 +6936,7 @@ msgstr "child_of"
#: view:res.users:0
#: field:res.users,company_ids:0
msgid "Accepted Companies"
-msgstr ""
+msgstr "Одобрени компании"
#. module: base
#: field:ir.report.custom.fields,operation:0
@@ -6930,7 +6963,7 @@ msgstr "Ирак"
#. module: base
#: view:ir.actions.server:0
msgid "Action to Launch"
-msgstr ""
+msgstr "Действие за стартиране"
#. module: base
#: wizard_view:base.module.import,import:0
@@ -7040,6 +7073,9 @@ msgid ""
"through launchpad. We use their online interface to synchronize all "
"translations efforts."
msgstr ""
+"Официалният превод на всички OpenERP/OpenObjects модули се управляват чрез "
+"launchpad. Ние използваме техния онлайн интерфейс за синхронизиране на "
+"всички действия по преводите."
#. module: base
#: field:ir.actions.report.xml,report_rml:0
@@ -7104,7 +7140,7 @@ msgstr "="
#: code:addons/base/ir/ir_report_custom.py:0
#, python-format
msgid "Second field should be figures"
-msgstr ""
+msgstr "Второто поле трябва да съдържа числа"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_grid_security
@@ -7143,7 +7179,7 @@ msgstr "Туркменистан"
#. module: base
#: model:res.country,name:base.pm
msgid "Saint Pierre and Miquelon"
-msgstr ""
+msgstr "Сен Пиер и Микелон"
#. module: base
#: help:ir.actions.report.xml,header:0
@@ -7193,7 +7229,7 @@ msgstr "датски / Dansk"
#. module: base
#: model:res.country,name:base.cx
msgid "Christmas Island"
-msgstr ""
+msgstr "о. Рождество"
#. module: base
#: view:ir.actions.server:0
@@ -7246,7 +7282,7 @@ msgstr "Оставете празно за личен адрес несвърз
#. module: base
#: model:res.country,name:base.vu
msgid "Vanuatu"
-msgstr ""
+msgstr "Вануату"
#. module: base
#: view:res.company:0
@@ -7260,6 +7296,8 @@ msgid ""
"Save this document to a .tgz file. This archive containt UTF-8 %s files and "
"may be uploaded to launchpad."
msgstr ""
+"Запази документа като .tgz файл. Този архив съдържа %s UTF-8 файлове и може "
+"да бъде качен в launchpad."
#. module: base
#: wizard_button:module.upgrade,end,config:0
@@ -7291,7 +7329,7 @@ msgstr "Саудитска Арабия"
#: code:addons/base/ir/ir_report_custom.py:0
#, python-format
msgid "Bar charts need at least two fields"
-msgstr ""
+msgstr "Графиката с правоъгълници има нужда от минимум две полета"
#. module: base
#: help:res.partner,supplier:0
@@ -7299,16 +7337,18 @@ msgid ""
"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."
msgstr ""
+"Отметнете ако партньора е доставчик. Ако не е отметнато, хората за поръчки "
+"няма да го виждат когато изготвят поръчка за доставка."
#. module: base
#: field:ir.model.fields,relation_field:0
msgid "Relation Field"
-msgstr ""
+msgstr "Зависимо поле"
#. module: base
#: field:workflow.triggers,instance_id:0
msgid "Destination Instance"
-msgstr ""
+msgstr "Дестинация"
#. module: base
#: field:ir.actions.wizard,multi:0
@@ -7348,6 +7388,10 @@ msgid ""
"of each users on the different objects of the system.\n"
" "
msgstr ""
+"Създайте вашите потребители.\n"
+"Може да назначите групи към потребителите. Групите определят правата на "
+"достъп на всеки потребител до различните обекти на системата.\n"
+" "
#. module: base
#: selection:res.request,priority:0
@@ -7436,7 +7480,7 @@ msgstr "ir.actions.act_window"
#. module: base
#: model:res.country,name:base.vi
msgid "Virgin Islands (USA)"
-msgstr ""
+msgstr "Вирджински острови (САЩ)"
#. module: base
#: model:res.country,name:base.tw
@@ -7480,7 +7524,7 @@ msgstr "Неинсталируем"
#. module: base
#: rml:ir.module.reference:0
msgid "View :"
-msgstr ""
+msgstr "\"Изглед\":"
#. module: base
#: field:ir.model.fields,view_load:0
@@ -7528,7 +7572,7 @@ msgstr "Провинция"
#. module: base
#: view:multi_company.default:0
msgid "Matching"
-msgstr ""
+msgstr "Сравняване"
#. module: base
#: field:ir.actions.configuration.wizard,name:0
@@ -7575,7 +7619,7 @@ msgstr "Бахрейн"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_12
msgid "Segmentation"
-msgstr ""
+msgstr "Разделяне"
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -7635,7 +7679,7 @@ msgstr "Гибралтар"
#. module: base
#: model:res.country,name:base.vg
msgid "Virgin Islands (British)"
-msgstr ""
+msgstr "Вирджински острови (Великобритания)"
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -7650,7 +7694,7 @@ msgstr "чешки / Čeština"
#. module: base
#: model:res.country,name:base.wf
msgid "Wallis and Futuna Islands"
-msgstr ""
+msgstr "О-ви Уолис и Футуна"
#. module: base
#: model:res.country,name:base.rw
@@ -7670,7 +7714,7 @@ msgstr "Изчисли сума"
#. module: base
#: view:ir.sequence:0
msgid "Day of the week (0:Monday): %(weekday)s"
-msgstr ""
+msgstr "Ден от седмицата (0:Понеделник): %(ден)а"
#. module: base
#: model:res.country,name:base.ck
@@ -7684,6 +7728,9 @@ msgid ""
"invoice, then `object.invoice_address_id.mobile` is the field which gives "
"the correct mobile number"
msgstr ""
+"Оказва полетата които ще се използват за доставяне на мобилен номер, напр., "
+"когато изберете фактура, тогава 'object.invoice_address_id.mobile' е полето "
+"което дава правилния мобилен номер"
#. module: base
#: field:ir.model.data,noupdate:0
@@ -7693,7 +7740,7 @@ msgstr "Не обновяем"
#. module: base
#: selection:module.lang.install,init,lang:0
msgid "Klingon"
-msgstr ""
+msgstr "Клингон"
#. module: base
#: model:res.country,name:base.sg
@@ -7760,7 +7807,7 @@ msgstr "Тегло"
#. module: base
#: view:res.lang:0
msgid "%X - Appropriate time representation."
-msgstr ""
+msgstr "%X - Правилно представяне на времето."
#. module: base
#: view:res.company:0
@@ -7775,6 +7822,11 @@ msgid ""
"1,06,500;[1,2,-1] will represent it to be 106,50,0;[3] will represent it as "
"106,500. Provided ',' as the thousand separator in each case."
msgstr ""
+"Формата на разделителя трябва дабъде [,n] , където 0 < n : като се започне "
+"от цифрата за единици. \"-1\" спира разделянето. Например, [3,2,-1] ще "
+"представи 106500 като 1,06,500; [1,2,-1] ще представи същото като 106,50,0; "
+"[3] ще представи същото като 106,500. ',' е разделител за хиляди във всеки "
+"случай."
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_customer_form_new
@@ -7830,7 +7882,7 @@ msgstr "Помощници на настройките"
#. module: base
#: field:res.lang,code:0
msgid "Locale Code"
-msgstr ""
+msgstr "Код на локала"
#. module: base
#: field:workflow.activity,split_mode:0
@@ -7866,7 +7918,7 @@ msgstr "Вмъкни файл с превод"
#. module: base
#: help:ir.values,model_id:0
msgid "This field is not used, it only helps you to select a good model."
-msgstr ""
+msgstr "Това поле не се използва, то само помага да се избере добър модел."
#. module: base
#: field:ir.ui.view,name:0
@@ -7881,7 +7933,7 @@ msgstr "италиански / Italiano"
#. module: base
#: field:ir.actions.report.xml,attachment:0
msgid "Save As Attachment Prefix"
-msgstr ""
+msgstr "Префикс на \"Запази като приложение\""
#. module: base
#: model:res.country,name:base.hr
@@ -7922,7 +7974,7 @@ msgstr "Сейшелски о-ви"
#: code:addons/base/res/res_user.py:0
#, python-format
msgid "You can not have two users with the same login !"
-msgstr ""
+msgstr "Не може да има двама потребитела с един и същ \"логин\"!"
#. module: base
#: model:res.country,name:base.sl
@@ -7943,7 +7995,7 @@ msgstr "terp-product"
#. module: base
#: model:res.country,name:base.tc
msgid "Turks and Caicos Islands"
-msgstr ""
+msgstr "о-ви Търкс и Кайкос"
#. module: base
#: field:res.partner.bank,owner_name:0
@@ -8018,7 +8070,7 @@ msgstr "BIC/Swift код"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_1
msgid "Prospect"
-msgstr ""
+msgstr "Перспектива"
#. module: base
#: selection:module.lang.install,init,lang:0
@@ -8028,7 +8080,7 @@ msgstr "полски / Język polski"
#. module: base
#: field:ir.exports,name:0
msgid "Export Name"
-msgstr ""
+msgstr "Име на извлечането"
#. module: base
#: help:res.partner.address,type:0
@@ -8036,6 +8088,8 @@ msgid ""
"Used to select automatically the right address according to the context in "
"sales and purchases documents."
msgstr ""
+"Използва се за автоматично избаране на правилния адрес според контекста на "
+"документите за продажби и поръчки."
#. module: base
#: wizard_view:module.lang.install,init:0
diff --git a/bin/addons/base/i18n/hr.po b/bin/addons/base/i18n/hr.po
index 9796ae7dd6c..f3739c66bf3 100644
--- a/bin/addons/base/i18n/hr.po
+++ b/bin/addons/base/i18n/hr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-28 04:33+0000\n"
+"PO-Revision-Date: 2010-03-30 04:36+0000\n"
"Last-Translator: goranc \n"
"Language-Team: openerp-translators\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-29 03:45+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Language: hr\n"
diff --git a/bin/addons/base/i18n/it.po b/bin/addons/base/i18n/it.po
index ed9e2a191a3..3d99b3829d9 100644
--- a/bin/addons/base/i18n/it.po
+++ b/bin/addons/base/i18n/it.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-12 05:20+0000\n"
-"Last-Translator: Maurizio.Colella \n"
+"PO-Revision-Date: 2010-03-30 09:53+0000\n"
+"Last-Translator: Carlo Vettore \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: 2010-03-13 04:50+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
@@ -2452,7 +2452,7 @@ msgstr "Contenuto SXW"
#. module: base
#: view:ir.cron:0
msgid "Action to Trigger"
-msgstr ""
+msgstr "Azione da innescare"
#. module: base
#: field:ir.report.custom.fields,fc0_operande:0
@@ -3348,7 +3348,7 @@ msgstr "Isole minori esterne degli USA"
#: field:res.partner.bank,state:0
#: field:res.partner.bank.type.field,bank_type_id:0
msgid "Bank Type"
-msgstr ""
+msgstr "Tipo Conto"
#. module: base
#: code:addons/base/res/res_user.py:0
@@ -3393,7 +3393,7 @@ msgstr "Titolare del conto"
#: model:ir.actions.act_window,name:base.act_values_form
#: model:ir.ui.menu,name:base.menu_values_form
msgid "Client Actions Connections"
-msgstr ""
+msgstr "Connessioni alle azioni del client"
#. module: base
#: field:ir.ui.view_sc,resource:0
@@ -3413,13 +3413,15 @@ msgstr "Guadalupa (Francia)"
#. module: base
#: field:ir.report.custom.fields,cumulate:0
msgid "Accumulate"
-msgstr ""
+msgstr "Accumula"
#. module: base
#: code:addons/base/ir/ir_report_custom.py:0
#, python-format
msgid "Tree can only be used in tabular reports"
msgstr ""
+"La struttura ad albero può essere utilizzata esclusivamente nei report "
+"tabellari"
#. module: base
#: rml:ir.module.reference:0
@@ -3639,7 +3641,7 @@ msgstr "Crea azione"
#. module: base
#: selection:ir.actions.report.xml,report_type:0
msgid "HTML from HTML"
-msgstr ""
+msgstr "HTML da HTML"
#. module: base
#: selection:ir.actions.report.xml,report_type:0
@@ -3731,12 +3733,12 @@ msgstr "STOCK_ADD"
#. module: base
#: field:ir.cron,doall:0
msgid "Repeat Missed"
-msgstr ""
+msgstr "Ripeti mancato"
#. module: base
#: help:ir.actions.server,state:0
msgid "Type of the Action that is to be executed"
-msgstr ""
+msgstr "Tipo dell'azione che deve essere eseguita"
#. module: base
#: field:ir.server.object.lines,server_id:0
@@ -3781,7 +3783,7 @@ msgstr "Botswana"
#: model:ir.ui.menu,name:base.menu_partner_title_partner
#: view:res.partner.title:0
msgid "Partner Titles"
-msgstr ""
+msgstr "Qualifiche Partner"
#. module: base
#: selection:ir.actions.todo,type:0
@@ -6720,7 +6722,7 @@ msgstr ""
#. module: base
#: field:res.partner.bank,acc_number:0
msgid "Account Number"
-msgstr ""
+msgstr "Numero conto"
#. module: base
#: view:res.lang:0
@@ -7512,7 +7514,7 @@ msgstr "Visualizza Auto-Caricamento"
#: model:ir.actions.act_window,name:base.action_partner_supplier_form
#: view:res.partner:0
msgid "Suppliers"
-msgstr ""
+msgstr "Fornitori"
#. module: base
#: selection:ir.ui.menu,icon:0
@@ -7549,7 +7551,7 @@ msgstr "Stati"
#. module: base
#: view:multi_company.default:0
msgid "Matching"
-msgstr ""
+msgstr "Confronto"
#. module: base
#: field:ir.actions.configuration.wizard,name:0
@@ -7624,7 +7626,7 @@ msgstr "Limite"
#. module: base
#: help:ir.actions.server,wkf_model_id:0
msgid "Workflow to be executed on this model."
-msgstr ""
+msgstr "Flusso di lavoro da eseguire su questo modello."
#. module: base
#: model:res.country,name:base.jm
@@ -7640,7 +7642,7 @@ msgstr "Azerbaijan"
#: code:addons/base/res/partner/partner.py:0
#, python-format
msgid "Warning"
-msgstr ""
+msgstr "Avviso"
#. module: base
#: selection:module.lang.install,init,lang:0
@@ -7770,12 +7772,12 @@ msgstr "Nome Categoria"
#. module: base
#: view:ir.actions.act_window:0
msgid "Select Groups"
-msgstr ""
+msgstr "Seleziona gruppi"
#. module: base
#: field:ir.sequence,weight:0
msgid "Weight"
-msgstr ""
+msgstr "Peso"
#. module: base
#: view:res.lang:0
@@ -7975,7 +7977,7 @@ msgstr "Turks e Caicos"
#. module: base
#: field:res.partner.bank,owner_name:0
msgid "Account Owner"
-msgstr ""
+msgstr "Titolare Conto"
#. module: base
#: field:ir.attachment,res_model:0
diff --git a/bin/addons/base/i18n/ja.po b/bin/addons/base/i18n/ja.po
index 75f564da990..9430360cb87 100644
--- a/bin/addons/base/i18n/ja.po
+++ b/bin/addons/base/i18n/ja.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-28 04:35+0000\n"
+"PO-Revision-Date: 2010-03-30 04:24+0000\n"
"Last-Translator: Harry (Open ERP) \n"
"Language-Team: Japanese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-03-29 03:45+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
diff --git a/bin/addons/base/i18n/sv.po b/bin/addons/base/i18n/sv.po
index 0b550763688..92102068d0d 100644
--- a/bin/addons/base/i18n/sv.po
+++ b/bin/addons/base/i18n/sv.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-28 04:27+0000\n"
+"PO-Revision-Date: 2010-03-30 04:18+0000\n"
"Last-Translator: Anders Wallenquist \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: 2010-03-29 03:45+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
diff --git a/bin/addons/base/i18n/uk.po b/bin/addons/base/i18n/uk.po
index 6b492ef857f..be9ac9ddeb1 100644
--- a/bin/addons/base/i18n/uk.po
+++ b/bin/addons/base/i18n/uk.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-28 04:33+0000\n"
+"PO-Revision-Date: 2010-03-30 04:37+0000\n"
"Last-Translator: Fabien (Open ERP) \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: 2010-03-29 03:45+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
diff --git a/bin/addons/base/i18n/zh_CN.po b/bin/addons/base/i18n/zh_CN.po
index 17a98775903..795f0a2c33f 100644
--- a/bin/addons/base/i18n/zh_CN.po
+++ b/bin/addons/base/i18n/zh_CN.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
-"PO-Revision-Date: 2010-03-28 04:32+0000\n"
+"PO-Revision-Date: 2010-03-30 04:19+0000\n"
"Last-Translator: OpenERP Administrators \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: 2010-03-29 03:45+0000\n"
+"X-Launchpad-Export-Date: 2010-03-31 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml
index b638742fd41..8c374acb80b 100644
--- a/bin/addons/base/res/partner/partner_view.xml
+++ b/bin/addons/base/res/partner/partner_view.xml
@@ -104,6 +104,7 @@
+
@@ -113,7 +114,6 @@
-
@@ -287,6 +287,7 @@
+
@@ -296,7 +297,6 @@
-
diff --git a/bin/osv/orm.py b/bin/osv/orm.py
index 0ef134a0a7a..32efe32558b 100644
--- a/bin/osv/orm.py
+++ b/bin/osv/orm.py
@@ -69,6 +69,15 @@ from tools.config import config
regex_order = re.compile('^(([a-z0-9_]+|"[a-z0-9_]+")( *desc| *asc)?( *, *|))+$', re.I)
+
+POSTGRES_CONFDELTYPES = {
+ 'RESTRICT': 'r',
+ 'NO ACTION': 'a',
+ 'CASCADE': 'c',
+ 'SET NULL': 'n',
+ 'SET DEFAULT': 'd',
+}
+
def last_day_of_current_month():
today = datetime.date.today()
last_day = str(calendar.monthrange(today.year, today.month)[1])
@@ -2282,14 +2291,7 @@ class orm(orm_template):
"AND con.contype = 'f'", (self._table, ref, k, 'id'))
res = cr.dictfetchall()
if res:
- confdeltype = {
- 'RESTRICT': 'r',
- 'NO ACTION': 'a',
- 'CASCADE': 'c',
- 'SET NULL': 'n',
- 'SET DEFAULT': 'd',
- }
- if res[0]['confdeltype'] != confdeltype.get(f.ondelete.upper(), 'a'):
+ if res[0]['confdeltype'] != POSTGRES_CONFDELTYPES.get(f.ondelete.upper(), 'a'):
cr.execute('ALTER TABLE "' + self._table + '" DROP CONSTRAINT "' + res[0]['conname'] + '"')
cr.execute('ALTER TABLE "' + self._table + '" ADD FOREIGN KEY ("' + k + '") REFERENCES "' + ref + '" ON DELETE ' + f.ondelete)
cr.commit()
@@ -2570,17 +2572,16 @@ class orm(orm_template):
return '"%s"' % (f,)
fields_pre2 = map(convert_field, fields_pre)
order_by = self._parent_order or self._order
- for i in range(0, len(ids), cr.IN_MAX):
- sub_ids = ids[i:i+cr.IN_MAX]
+ for sub_ids in cr.split_for_in_conditions(ids):
if d1:
- cr.execute('SELECT %s FROM %s WHERE %s.id = ANY (%%s) AND %s ORDER BY %s' % \
+ cr.execute('SELECT %s FROM %s WHERE %s.id IN %%s AND %s ORDER BY %s' % \
(','.join(fields_pre2 + [self._table + '.id']), ','.join(tables), self._table, ' and '.join(d1),
order_by),[sub_ids,]+d2)
- if not cr.rowcount == len({}.fromkeys(sub_ids)):
+ if cr.rowcount != len(sub_ids):
raise except_orm(_('AccessError'),
_('You try to bypass an access rule while reading (Document type: %s).') % self._description)
else:
- cr.execute('SELECT %s FROM \"%s\" WHERE id = ANY (%%s) ORDER BY %s' %
+ cr.execute('SELECT %s FROM \"%s\" WHERE id IN %%s ORDER BY %s' %
(','.join(fields_pre2 + ['id']), self._table,
order_by), (sub_ids,))
res.extend(cr.dictfetchall())
@@ -2732,28 +2733,24 @@ class orm(orm_template):
if res and res[0]:
raise except_orm('ConcurrencyException', _('Records were modified in the meanwhile'))
- def check_access_rule(self, cr, uid, ids, mode, context={}):
- d1, d2, tables = self.pool.get('ir.rule').domain_get(cr, uid, self._name, mode, context=context)
- if d1:
- d1 = ' and '+' and '.join(d1)
-
- for i in range(0, len(ids), cr.IN_MAX):
- sub_ids = ids[i:i+cr.IN_MAX]
- ids_str = string.join(map(str, sub_ids), ',')
- if d1:
- cr.execute('SELECT '+self._table+'.id FROM '+','.join(tables)+' ' \
- 'WHERE '+self._table+'.id IN ('+ids_str+')'+d1, d2)
- if not cr.rowcount == len(sub_ids):
+ def check_access_rule(self, cr, uid, ids, operation, context=None):
+ """Verifies that the operation given by ``operation`` is allowed for the user
+ according to ir.rules.
+ @param ``operation``: one of ``'read'``, ``'write'``, ``'unlink'``
+ @raise ``except_orm``: if current ir.rules do not permit this operation.
+ @return: ``None`` if the operation is allowed
+ """
+ where_clause, where_params, tables = self.pool.get('ir.rule').domain_get(cr, uid, self._name, operation, context=context)
+ if where_clause:
+ where_clause = ' and ' + ' and '.join(where_clause)
+ for sub_ids in cr.split_for_in_conditions(ids):
+ cr.execute('SELECT ' + self._table + '.id FROM ' + ','.join(tables) +
+ ' WHERE ' + self._table + '.id IN %s' + where_clause,
+ [sub_ids] + where_params)
+ if cr.rowcount != len(sub_ids):
raise except_orm(_('AccessError'),
- _('You try to bypass an access rule to '+mode+
- ' (Document type: %s).') % self._name)
- else:
- cr.execute('SELECT id FROM "'+self._table+'" WHERE id IN ('+ids_str+')')
- if not cr.rowcount == len(sub_ids):
- raise except_orm(_('AccessError'),
- _('You try to ' +mode+ ' a record that doesn\'t exist (Document type: %s).')
- % self._name)
- return ids_str
+ _('Operation prohibited by access rules (Operation: %s, Document type: %s).')
+ % (operation, self._name))
def unlink(self, cr, uid, ids, context=None):
if not ids:
@@ -2784,12 +2781,13 @@ class orm(orm_template):
# ids2 = [x[self._inherits[key]] for x in res]
# self.pool.get(key).unlink(cr, uid, ids2)
- ids_str = self.check_access_rule(cr, uid, ids, 'unlink', context=context)
- cr.execute('delete from '+self._table+' ' \
- 'where id in ('+ids_str+')', ids)
+ self.check_access_rule(cr, uid, ids, 'unlink', context=context)
+ for sub_ids in cr.split_for_in_conditions(ids):
+ cr.execute('delete from ' + self._table + ' ' \
+ 'where id in %s', sub_ids)
for order, object, store_ids, fields in result_store:
- if object<>self._name:
+ if object != self._name:
obj = self.pool.get(object)
cr.execute('select id from '+obj._table+' where id in ('+','.join(map(str, store_ids))+')')
rids = map(lambda x: x[0], cr.fetchall())
@@ -2885,9 +2883,10 @@ class orm(orm_template):
upd1.append(user)
if len(upd0):
- ids_str = self.check_access_rule(cr, user, ids, 'write', context=context)
- cr.execute('update '+self._table+' set '+string.join(upd0, ',')+' ' \
- 'where id in ('+ids_str+')', upd1)
+ self.check_access_rule(cr, user, ids, 'write', context=context)
+ for sub_ids in cr.split_for_in_conditions(ids):
+ cr.execute('update ' + self._table + ' set ' + ','.join(upd0) + ' ' \
+ 'where id in %s', upd1 + [sub_ids])
if totranslate:
# TODO: optimize
@@ -2918,11 +2917,9 @@ class orm(orm_template):
for table in self._inherits:
col = self._inherits[table]
nids = []
- for i in range(0, len(ids), cr.IN_MAX):
- sub_ids = ids[i:i+cr.IN_MAX]
- ids_str = string.join(map(str, sub_ids), ',')
+ for sub_ids in cr.split_for_in_conditions(ids):
cr.execute('select distinct "'+col+'" from "'+self._table+'" ' \
- 'where id in ('+ids_str+')', upd1)
+ 'where id in %s', (sub_ids,))
nids.extend([x[0] for x in cr.fetchall()])
v = {}
diff --git a/bin/report/interface.py b/bin/report/interface.py
index 371185dca0e..6aecfe66133 100644
--- a/bin/report/interface.py
+++ b/bin/report/interface.py
@@ -139,7 +139,7 @@ class report_rml(report_int):
if not context:
context={}
pool = pooler.get_pool(cr.dbname)
- ir_translation_obj = pool.get('ir.translation')
+ ir_translation_obj = pool.get('ir.translation')
# In some case we might not use xsl ...
if not self.xsl:
@@ -160,7 +160,7 @@ class report_rml(report_int):
def translate(doc, lang):
for node in doc.xpath('//*[@t]'):
- translation = ir_translation_obj._get_source(cr, uid, self.name2, 'xsl', lang, node.text)
+ translation = ir_translation_obj._get_source(cr, uid, self.name2, 'xsl', lang, node.text)
if translation:
node.text = translation
diff --git a/bin/sql_db.py b/bin/sql_db.py
index 17bfa340653..94336cde69a 100644
--- a/bin/sql_db.py
+++ b/bin/sql_db.py
@@ -63,7 +63,7 @@ re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$');
sql_counter = 0
class Cursor(object):
- IN_MAX = 1000
+ IN_MAX = 1000 # decent limit on size of IN queries - guideline = Oracle limit
__logger = logging.getLogger('db.cursor')
def check(f):
@@ -142,6 +142,12 @@ class Cursor(object):
self.sql_into_log[res_into.group(1)][1] += delay
return res
+
+ def split_for_in_conditions(self, ids):
+ """Split a list of identifiers into one or more smaller tuples
+ safe for IN conditions, after uniquifying them."""
+ return tools.misc.split_every(self.IN_MAX, set(ids))
+
def print_log(self):
global sql_counter
sql_counter += self.sql_log_count
diff --git a/bin/tools/convert.py b/bin/tools/convert.py
index 75b438cc6ea..a7bd6207cd3 100644
--- a/bin/tools/convert.py
+++ b/bin/tools/convert.py
@@ -376,7 +376,7 @@ form: module.record_id""" % (xml_id,)
usage = rec.get('usage','').encode('utf-8')
limit = rec.get('limit','').encode('utf-8')
auto_refresh = rec.get('auto_refresh','').encode('utf-8')
-
+ uid = self.uid
# def ref() added because , if context has ref('id') eval wil use this ref
active_id=str("active_id") # for further reference in client/bin/tools/__init__.py
@@ -384,6 +384,7 @@ form: module.record_id""" % (xml_id,)
def ref(str_id):
return self.id_get(cr, None, str_id)
context=eval(context)
+ domain=eval(domain)
res = {
'name': name,
diff --git a/bin/tools/misc.py b/bin/tools/misc.py
index 284324873de..ff20966857e 100644
--- a/bin/tools/misc.py
+++ b/bin/tools/misc.py
@@ -32,6 +32,7 @@ import zipfile
import release
import socket
import re
+from itertools import islice
if sys.version_info[:2] < (2, 4):
from threadinglocal import local
@@ -1267,6 +1268,18 @@ def detect_server_timezone():
return 'UTC'
+def split_every(n, iterable, piece_maker=tuple):
+ """Splits an iterable into length-n pieces. The last piece will be shorter
+ if ``n`` does not evenly divide the iterable length.
+ @param ``piece_maker``: function to build the pieces
+ from the slices (tuple,list,...)
+ """
+ iterator = iter(iterable)
+ piece = piece_maker(islice(iterator, n))
+ while piece:
+ yield piece
+ piece = piece_maker(islice(iterator, n))
+
if __name__ == '__main__':
import doctest
doctest.testmod()