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()