[Merge] Merge with main server.

bzr revid: mdi@tinyerp.com-20121129042711-not0us62x2p681fj
This commit is contained in:
Divyesh Makwana (Open ERP) 2012-11-29 09:57:11 +05:30
commit 591050a943
16 changed files with 269 additions and 193 deletions

View File

@ -149,7 +149,6 @@ CREATE TABLE res_users (
active boolean default True,
login varchar(64) NOT NULL UNIQUE,
password varchar(64) default null,
tz varchar(64) default null,
lang varchar(64) default '',
-- No FK references below, will be added later by ORM
-- (when the destination rows exist)

View File

@ -88,6 +88,7 @@ gk//2Q==</field>
<record model="res.partner" id="base.partner_root">
<field name="email">admin@example.com</field>
<field name="tz">Europe/Brussels</field>
<field name="image">/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP
ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACmAKYDASIA

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-26 17:49+0000\n"
"PO-Revision-Date: 2012-11-27 14:09+0000\n"
"Last-Translator: gobi <Unknown>\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-11-27 05:22+0000\n"
"X-Launchpad-Export-Date: 2012-11-28 04:39+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: base
@ -471,6 +471,13 @@ msgid ""
"document and Wiki based Hidden.\n"
" "
msgstr ""
"\n"
"Нууцлагдсан мэдлэгийн санг суулгагч.\n"
"=====================================\n"
"\n"
"Мэдлэг Програмын Тохируулагчийг ил болгож нууцлагдсан байдаг баримт болон "
"Викиг суулгах боломжтой болгодог.\n"
" "
#. module: base
#: model:ir.module.category,name:base.module_category_customer_relationship_management
@ -755,7 +762,7 @@ msgstr "Колумб"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_mister
msgid "Mister"
msgstr ""
msgstr "Ноён"
#. module: base
#: help:res.country,code:0
@ -784,7 +791,7 @@ msgstr "Орчуулагдаагүй"
#. module: base
#: view:ir.mail_server:0
msgid "Outgoing Mail Server"
msgstr ""
msgstr "Гарах Мэйл Сервер"
#. module: base
#: help:ir.actions.act_window,context:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: pt_BR\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-24 23:58+0000\n"
"Last-Translator: Luiz Fernando M.França <Unknown>\n"
"PO-Revision-Date: 2012-11-27 09:51+0000\n"
"Last-Translator: Carlos Paiva <Unknown>\n"
"Language-Team: <pt@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-26 04:40+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-28 04:40+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -314,6 +314,10 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Plano de contas e impostos chileno\n"
"\n"
" "
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale
@ -1449,7 +1453,7 @@ msgstr "Haití"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
msgid "French Payroll"
msgstr ""
msgstr "Folha de pagamento - França"
#. module: base
#: view:ir.ui.view:0

View File

@ -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-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-10-25 07:14+0000\n"
"PO-Revision-Date: 2012-11-27 14:04+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\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-11-25 05:30+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-28 04:40+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -60,7 +60,7 @@ msgstr "Архитектура представления"
#. module: base
#: model:ir.module.module,summary:base.module_sale_stock
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
msgstr ""
msgstr "Предложение, заказ продажи, доставка и управление выставлением счета"
#. module: base
#: selection:ir.sequence,implementation:0
@ -89,7 +89,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,summary:base.module_point_of_sale
msgid "Touchscreen Interface for Shops"
msgstr ""
msgstr "Сенсорный интерфейс для магазинов"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
@ -135,11 +135,14 @@ msgid ""
"The module adds google user in res user.\n"
"========================================\n"
msgstr ""
"\n"
"Модуль добавляет пользователя Google в res user.\n"
"========================================\n"
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if this contact is an Employee."
msgstr ""
msgstr "Выберите эту опцию, если этот контакт - сотрудник ."
#. module: base
#: help:ir.model.fields,domain:0
@ -170,7 +173,7 @@ msgstr "Окно назначения"
#. module: base
#: field:ir.actions.report.xml,report_rml:0
msgid "Main Report File Path"
msgstr ""
msgstr "Главный путь к файлу отчета"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
@ -293,7 +296,7 @@ msgstr "Инуктитут / ᐃᓄᒃᑎᑐᑦ"
#. module: base
#: model:res.groups,name:base.group_multi_currency
msgid "Multi Currencies"
msgstr ""
msgstr "Валюты"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cl
@ -317,6 +320,8 @@ msgid ""
"The internal user that is in charge of communicating with this contact if "
"any."
msgstr ""
"Внутренний пользователь, который отвечает за связи с этим контактом , если "
"таковые имеются."
#. module: base
#: view:res.partner:0
@ -570,7 +575,7 @@ msgstr ""
#. module: base
#: view:workflow.transition:0
msgid "Workflow Transition"
msgstr ""
msgstr "Переход рабочего процесса"
#. module: base
#: model:res.country,name:base.gf
@ -580,7 +585,7 @@ msgstr "Французская Гвиана"
#. module: base
#: model:ir.module.module,summary:base.module_hr
msgid "Jobs, Departments, Employees Details"
msgstr ""
msgstr "Вакансии, отделы, сотрудники"
#. module: base
#: model:ir.module.module,description:base.module_analytic
@ -693,7 +698,7 @@ msgstr "Колумбия"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_mister
msgid "Mister"
msgstr ""
msgstr "Господин"
#. module: base
#: help:res.country,code:0
@ -722,7 +727,7 @@ msgstr "Без перевода"
#. module: base
#: view:ir.mail_server:0
msgid "Outgoing Mail Server"
msgstr ""
msgstr "Сервер исходящей почты"
#. module: base
#: help:ir.actions.act_window,context:0
@ -872,7 +877,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_config_settings
msgid "res.config.settings"
msgstr ""
msgstr "res.config.settings"
#. module: base
#: help:res.partner,image_small:0
@ -881,6 +886,9 @@ msgid ""
"image, with aspect ratio preserved. Use this field anywhere a small image is "
"required."
msgstr ""
"Маленькое изображение контакта. Автоматически преобразуется в изображение "
"64x64px, с сохранением пропорций. Используйте это поле там, где требуется "
"маленькое изображение."
#. module: base
#: help:ir.actions.server,mobile:0
@ -901,7 +909,7 @@ msgstr "Безопасность и аутентификация"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_calendar
msgid "Web Calendar"
msgstr ""
msgstr "Веб календарь"
#. module: base
#: selection:base.language.install,lang:0
@ -912,7 +920,7 @@ msgstr "Шведский / svenska"
#: field:base.language.export,name:0
#: field:ir.attachment,datas_fname:0
msgid "File Name"
msgstr ""
msgstr "Имя файла"
#. module: base
#: model:res.country,name:base.rs
@ -1111,7 +1119,7 @@ msgstr "Другие лицензии утвержденные OSI"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_gantt
msgid "Web Gantt"
msgstr ""
msgstr "Веб Гант"
#. module: base
#: model:ir.actions.act_window,name:base.act_menu_create
@ -1138,7 +1146,7 @@ msgstr "Пользователи Google"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fleet
msgid "Fleet Management"
msgstr ""
msgstr "Управление транспортом"
#. module: base
#: help:ir.server.object.lines,value:0
@ -1163,7 +1171,7 @@ msgstr "Княжество Андорра"
#. module: base
#: field:ir.rule,perm_read:0
msgid "Apply for Read"
msgstr ""
msgstr "Применить для чтения"
#. module: base
#: model:res.country,name:base.mn
@ -1193,7 +1201,7 @@ msgstr ""
#: code:addons/base/ir/ir_model.py:724
#, python-format
msgid "Document model"
msgstr ""
msgstr "Модель документа"
#. module: base
#: view:res.lang:0
@ -1243,7 +1251,7 @@ msgstr "Название страны должно быть уникальным
#. module: base
#: field:ir.module.module,installed_version:0
msgid "Latest Version"
msgstr ""
msgstr "Последняя версия"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:213
@ -1265,7 +1273,7 @@ msgstr "Неправильный XML для просмотра архитект
#. module: base
#: view:res.partner:0
msgid "Tel:"
msgstr ""
msgstr "Тел:"
#. module: base
#: model:res.country,name:base.ky
@ -1275,7 +1283,7 @@ msgstr "Каймановы острова"
#. module: base
#: view:ir.rule:0
msgid "Record Rule"
msgstr ""
msgstr "Ограничение доступа"
#. module: base
#: model:res.country,name:base.kr
@ -1303,7 +1311,7 @@ msgstr "Участники"
#. module: base
#: field:ir.rule,perm_unlink:0
msgid "Apply for Delete"
msgstr ""
msgstr "Применить для удаления"
#. module: base
#: selection:ir.property,type:0
@ -1318,7 +1326,7 @@ msgstr "Видимый"
#. module: base
#: model:ir.actions.client,name:base.action_client_base_menu
msgid "Open Settings Menu"
msgstr ""
msgstr "Открыть меню настройки"
#. module: base
#: selection:base.language.install,lang:0
@ -1593,7 +1601,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.mf
msgid "Saint Martin (French part)"
msgstr ""
msgstr "Сен-Мартен (Франция)"
#. module: base
#: model:ir.model,name:base.model_ir_exports
@ -1610,7 +1618,7 @@ msgstr "Нет языка с кодом \"%s\""
#: model:ir.module.category,name:base.module_category_social_network
#: model:ir.module.module,shortdesc:base.module_mail
msgid "Social Network"
msgstr ""
msgstr "Социальная сеть"
#. module: base
#: view:res.lang:0
@ -1620,7 +1628,7 @@ msgstr "%Y - год полностью"
#. module: base
#: view:res.company:0
msgid "Report Footer Configuration"
msgstr ""
msgstr "Настройка нижнего колонтитула отчета"
#. module: base
#: field:ir.translation,comments:0
@ -1690,7 +1698,7 @@ msgstr ""
#. module: base
#: help:res.partner,website:0
msgid "Website of Partner or Company"
msgstr ""
msgstr "Сайт партнера или компании"
#. module: base
#: help:base.language.install,overwrite:0
@ -1735,7 +1743,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,summary:base.module_sale
msgid "Quotations, Sale Orders, Invoicing"
msgstr ""
msgstr "Предложения, заказы продаж, счета"
#. module: base
#: field:res.users,login:0
@ -1754,7 +1762,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_portal_project_issue
msgid "Portal Issue"
msgstr ""
msgstr "Портал выпуска"
#. module: base
#: model:ir.ui.menu,name:base.menu_tools
@ -1778,7 +1786,7 @@ msgstr ""
#. module: base
#: field:res.partner,image_small:0
msgid "Small-sized image"
msgstr ""
msgstr "Маленькое изображение"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock
@ -1930,7 +1938,7 @@ msgstr ""
#. module: base
#: selection:ir.translation,state:0
msgid "Translation in Progress"
msgstr ""
msgstr "Перевод в процессе"
#. module: base
#: model:ir.model,name:base.model_ir_rule
@ -1945,7 +1953,7 @@ msgstr "Дней"
#. module: base
#: model:ir.module.module,summary:base.module_fleet
msgid "Vehicle, leasing, insurances, costs"
msgstr ""
msgstr "Автомобиль, лизинг, страховка, затраты"
#. module: base
#: view:ir.model.access:0
@ -2170,7 +2178,7 @@ msgstr "Полный путь"
#. module: base
#: view:base.language.export:0
msgid "The next step depends on the file format:"
msgstr ""
msgstr "Следующий шаг зависит от формата файла:"
#. module: base
#: model:ir.module.module,shortdesc:base.module_idea
@ -2192,6 +2200,7 @@ msgstr ""
#: view:base.language.export:0
msgid "PO(T) format: you should edit it with a PO editor such as"
msgstr ""
"Формат PO(T): вы должны редактировать его редактором PO файлов, таким как"
#. module: base
#: model:ir.ui.menu,name:base.menu_administration
@ -2215,7 +2224,7 @@ msgstr "Создание / Запись / Копирование"
#. module: base
#: view:ir.sequence:0
msgid "Second: %(sec)s"
msgstr ""
msgstr "Второй: %(sec)s"
#. module: base
#: field:ir.actions.act_window,view_mode:0
@ -2244,7 +2253,7 @@ msgstr "Корейский (KP) / 한국어 (KP)"
#. module: base
#: model:res.country,name:base.ax
msgid "Åland Islands"
msgstr ""
msgstr "Аландские острова"
#. module: base
#: field:res.company,logo:0
@ -2280,7 +2289,7 @@ msgstr "Багамские острова"
#. module: base
#: field:ir.rule,perm_create:0
msgid "Apply for Create"
msgstr ""
msgstr "Применить для создания"
#. module: base
#: code:addons/base/res/res_partner.py:522
@ -2307,6 +2316,8 @@ msgid ""
"Appears by default on the top right corner of your printed documents (report "
"header)."
msgstr ""
"По умолчанию отображается в верхнем правом углу печатных документов "
"(заголовок отчета)."
#. module: base
#: field:base.module.update,update:0
@ -2602,7 +2613,7 @@ msgstr ""
#. module: base
#: field:res.company,rml_header1:0
msgid "Company Slogan"
msgstr ""
msgstr "Девиз компании"
#. module: base
#: model:res.country,name:base.bb
@ -2648,7 +2659,7 @@ msgstr "Греческий / Ελληνικά"
#. module: base
#: field:res.company,custom_footer:0
msgid "Custom Footer"
msgstr ""
msgstr "Пользовательский нижний колонтитул"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_crm
@ -2716,7 +2727,7 @@ msgstr "Название закладки"
#. module: base
#: field:res.partner,contact_address:0
msgid "Complete Address"
msgstr ""
msgstr "Полный адрес"
#. module: base
#: help:ir.actions.act_window,limit:0
@ -2788,7 +2799,7 @@ msgstr "ID записи"
#. module: base
#: view:ir.filters:0
msgid "My Filters"
msgstr ""
msgstr "Мой фильтры"
#. module: base
#: field:ir.actions.server,email:0
@ -2802,12 +2813,15 @@ msgid ""
"Module to attach a google document to any model.\n"
"================================================\n"
msgstr ""
"\n"
"Модуль для приложения документа Google к любой модели.\n"
"======================================================\n"
#. module: base
#: code:addons/base/ir/ir_fields.py:334
#, python-format
msgid "Found multiple matches for field '%%(field)s' (%d matches)"
msgstr ""
msgstr "Найдено несколько полей '%%(field)s' (%d найдено)"
#. module: base
#: selection:base.language.install,lang:0
@ -2841,7 +2855,7 @@ msgstr "Аргументы, отправленные клиенту вместе
#. module: base
#: model:ir.module.module,summary:base.module_contacts
msgid "Contacts, People and Companies"
msgstr ""
msgstr "Контакты, люди и компании"
#. module: base
#: model:res.country,name:base.tt
@ -2907,7 +2921,7 @@ msgstr ""
#: code:addons/base/ir/ir_model.py:715
#, python-format
msgid "Sorry, you are not allowed to access this document."
msgstr ""
msgstr "Извините, вы не можете получить доступ к этому документу."
#. module: base
#: model:res.country,name:base.py
@ -2922,7 +2936,7 @@ msgstr "Фиджи"
#. module: base
#: view:ir.actions.report.xml:0
msgid "Report Xml"
msgstr ""
msgstr "Отчет Xml"
#. module: base
#: model:ir.module.module,description:base.module_purchase
@ -2993,7 +3007,7 @@ msgstr "Унаследованный"
#: code:addons/base/ir/ir_fields.py:147
#, python-format
msgid "yes"
msgstr ""
msgstr "да"
#. module: base
#: field:ir.model.fields,serialization_field_id:0
@ -3023,7 +3037,7 @@ msgstr ""
#: code:addons/base/ir/ir_fields.py:175
#, python-format
msgid "'%s' does not seem to be an integer for field '%%(field)s'"
msgstr ""
msgstr "'%s' не является целым числом для поля '%%(field)s'"
#. module: base
#: model:ir.module.category,description:base.module_category_report_designer
@ -3084,7 +3098,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_linkedin
msgid "LinkedIn Integration"
msgstr ""
msgstr "Интеграция с LinkedIn"
#. module: base
#: code:addons/orm.py:2012
@ -3133,6 +3147,8 @@ msgid ""
"the user will have an access to the sales configuration as well as statistic "
"reports."
msgstr ""
"пользователь будет иметь доступ к настройке продаж, а также к статистическим "
"отчетам ."
#. module: base
#: model:res.country,name:base.nz
@ -3218,6 +3234,8 @@ msgid ""
"the user will have an access to the human resources configuration as well as "
"statistic reports."
msgstr ""
"пользователь будет иметь доступ к настройке управления персоналом, а также к "
"статистическим отчетам ."
#. module: base
#: model:ir.module.module,description:base.module_web_shortcuts
@ -3259,7 +3277,7 @@ msgstr "Неизвестный тип отчета: %s"
#. module: base
#: model:ir.module.module,summary:base.module_hr_expense
msgid "Expenses Validation, Invoicing"
msgstr ""
msgstr "Утверждение расходов, выставление счетов"
#. module: base
#: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account
@ -3278,7 +3296,7 @@ msgstr "Армения"
#. module: base
#: model:ir.module.module,summary:base.module_hr_evaluation
msgid "Periodical Evaluations, Appraisals, Surveys"
msgstr ""
msgstr "Периодические оценки, оценки, опросы"
#. module: base
#: model:ir.actions.act_window,name:base.ir_property_form
@ -3327,7 +3345,7 @@ msgstr "Швеция"
#. module: base
#: field:ir.actions.report.xml,report_file:0
msgid "Report File"
msgstr ""
msgstr "Файл отчета"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@ -3360,7 +3378,7 @@ msgstr ""
#: code:addons/orm.py:3824
#, python-format
msgid "Missing document(s)"
msgstr ""
msgstr "Отсутствует документ(ы)"
#. module: base
#: model:ir.model,name:base.model_res_partner_bank_type
@ -3375,6 +3393,8 @@ msgid ""
"For more details about translating OpenERP in your language, please refer to "
"the"
msgstr ""
"Для более подробной информаций о переводе OpenERP на ваш язык, пожалуйста, "
"обратитесь к"
#. module: base
#: field:res.partner,image:0
@ -3397,7 +3417,7 @@ msgstr "Календарь"
#. module: base
#: model:ir.module.category,name:base.module_category_knowledge_management
msgid "Knowledge"
msgstr ""
msgstr "Знания"
#. module: base
#: field:workflow.activity,signal_send:0
@ -3561,7 +3581,7 @@ msgstr "workflow.activity"
#. module: base
#: view:base.language.export:0
msgid "Export Complete"
msgstr ""
msgstr "Экспорт завершен"
#. module: base
#: help:ir.ui.view_sc,res_id:0
@ -3590,7 +3610,7 @@ msgstr "Финский / Suomi"
#. module: base
#: view:ir.config_parameter:0
msgid "System Properties"
msgstr ""
msgstr "Свойства системы"
#. module: base
#: field:ir.sequence,prefix:0
@ -3639,7 +3659,7 @@ msgstr ""
#. module: base
#: field:base.language.export,modules:0
msgid "Modules To Export"
msgstr ""
msgstr "Модули для экспорта"
#. module: base
#: model:res.country,name:base.mt
@ -3652,6 +3672,7 @@ msgstr "Мальта"
msgid ""
"Only users with the following access level are currently allowed to do that"
msgstr ""
"Только пользователям со следующим уровнем доступа, разрешено делать это"
#. module: base
#: field:ir.actions.server,fields_lines:0
@ -3742,7 +3763,7 @@ msgstr "Антарктида"
#. module: base
#: view:res.partner:0
msgid "Persons"
msgstr ""
msgstr "Люди"
#. module: base
#: view:base.language.import:0
@ -3812,7 +3833,7 @@ msgstr "Ошибка! Вы не можете создавать рекурсив
#: field:res.company,rml_footer:0
#: field:res.company,rml_footer_readonly:0
msgid "Report Footer"
msgstr ""
msgstr "Нижний колонтитул отчета"
#. module: base
#: selection:res.lang,direction:0
@ -3822,7 +3843,7 @@ msgstr "Справа-налево"
#. module: base
#: model:res.country,name:base.sx
msgid "Sint Maarten (Dutch part)"
msgstr ""
msgstr "Синт-Мартен (голландская часть)"
#. module: base
#: view:ir.actions.act_window:0
@ -3909,7 +3930,7 @@ msgstr "Того"
#: field:ir.actions.act_window,res_model:0
#: field:ir.actions.client,res_model:0
msgid "Destination Model"
msgstr ""
msgstr "Модель назначения"
#. module: base
#: selection:ir.sequence,implementation:0
@ -3932,7 +3953,7 @@ msgstr "Урду / اردو"
#: code:addons/orm.py:3855
#, python-format
msgid "Access Denied"
msgstr ""
msgstr "Доступ запрещён"
#. module: base
#: field:res.company,name:0
@ -3994,7 +4015,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.je
msgid "Jersey"
msgstr ""
msgstr "Джерси"
#. module: base
#: model:ir.module.module,description:base.module_auth_anonymous
@ -4004,6 +4025,10 @@ msgid ""
"==================================\n"
" "
msgstr ""
"\n"
"Анонимный доступ к OpenERP.\n"
"===========================\n"
" "
#. module: base
#: view:res.lang:0
@ -4065,7 +4090,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.sk
msgid "Slovakia"
msgstr ""
msgstr "Словакия"
#. module: base
#: model:res.country,name:base.nr
@ -4228,7 +4253,7 @@ msgstr "Совместный доступ к любым документам"
#. module: base
#: model:ir.module.module,summary:base.module_crm
msgid "Leads, Opportunities, Phone Calls"
msgstr ""
msgstr "Кандидаты, предложения, телефонные звонки"
#. module: base
#: view:res.lang:0
@ -4325,7 +4350,7 @@ msgstr "План счетов"
#. module: base
#: model:ir.ui.menu,name:base.menu_event_main
msgid "Events Organization"
msgstr ""
msgstr "Организация мероприятий"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_customer_form
@ -4353,7 +4378,7 @@ msgstr "Базовое поле"
#. module: base
#: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts
msgid "Managing vehicles and contracts"
msgstr ""
msgstr "Управление транспортом и контрактами"
#. module: base
#: model:ir.module.module,description:base.module_base_setup
@ -4407,7 +4432,7 @@ msgstr "По умолчанию"
#. module: base
#: model:ir.module.module,summary:base.module_lunch
msgid "Lunch Order, Meal, Food"
msgstr ""
msgstr "Заказ обеда, еда, питание"
#. module: base
#: view:ir.model.fields:0
@ -4478,7 +4503,7 @@ msgstr ""
#. module: base
#: field:res.partner,parent_id:0
msgid "Related Company"
msgstr ""
msgstr "Связанная компания"
#. module: base
#: help:ir.actions.act_url,help:0
@ -4524,7 +4549,7 @@ msgstr "Код должен быть уникальным"
#. module: base
#: model:ir.module.module,shortdesc:base.module_knowledge
msgid "Knowledge Management System"
msgstr ""
msgstr "Система управления знаниями"
#. module: base
#: view:workflow.activity:0
@ -4601,7 +4626,7 @@ msgstr "Тип нумерации"
#. module: base
#: view:base.language.export:0
msgid "Unicode/UTF-8"
msgstr ""
msgstr "Юникод/UTF-8"
#. module: base
#: selection:base.language.install,lang:0
@ -4613,12 +4638,12 @@ msgstr "Хинди / हिंदी"
#: model:ir.actions.act_window,name:base.action_view_base_language_install
#: model:ir.ui.menu,name:base.menu_view_base_language_install
msgid "Load a Translation"
msgstr ""
msgstr "Загрузить перевод"
#. module: base
#: field:ir.module.module,latest_version:0
msgid "Installed Version"
msgstr ""
msgstr "Установленная версия"
#. module: base
#: field:ir.module.module,license:0
@ -4707,7 +4732,7 @@ msgstr "Экваториальная Гвинея"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_api
msgid "OpenERP Web API"
msgstr ""
msgstr "OpenERP Web API"
#. module: base
#: model:ir.module.module,description:base.module_l10n_fr_rib
@ -4761,7 +4786,7 @@ msgstr "ir.actions.report.xml"
#. module: base
#: model:res.country,name:base.ps
msgid "Palestinian Territory, Occupied"
msgstr ""
msgstr "Палестинская территория, оккупированная"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_ch
@ -4914,7 +4939,7 @@ msgstr "Рабочие процессы"
#. module: base
#: model:ir.ui.menu,name:base.next_id_73
msgid "Purchase"
msgstr ""
msgstr "Закупка"
#. module: base
#: selection:base.language.install,lang:0
@ -4924,7 +4949,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_needaction_mixin
msgid "ir.needaction_mixin"
msgstr ""
msgstr "ir.needaction_mixin"
#. module: base
#: view:base.language.export:0
@ -4934,7 +4959,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_7
msgid "IT Services"
msgstr ""
msgstr "ИТ услуги"
#. module: base
#: model:ir.module.category,name:base.module_category_specific_industry_applications
@ -4944,13 +4969,13 @@ msgstr "Приложения для определенной индустрии"
#. module: base
#: model:ir.module.module,shortdesc:base.module_google_docs
msgid "Google Docs integration"
msgstr ""
msgstr "Интеграция Google Docs"
#. module: base
#: code:addons/base/ir/ir_fields.py:328
#, python-format
msgid "name"
msgstr ""
msgstr "имя"
#. module: base
#: model:ir.module.module,description:base.module_mrp_operations
@ -4996,7 +5021,7 @@ msgstr "Пропустить"
#. module: base
#: model:ir.module.module,shortdesc:base.module_event_sale
msgid "Events Sales"
msgstr ""
msgstr "Мероприятия продаж"
#. module: base
#: model:res.country,name:base.ls
@ -5006,7 +5031,7 @@ msgstr "Лесото"
#. module: base
#: view:base.language.export:0
msgid ", or your preferred text editor"
msgstr ""
msgstr ", или ваш любимый текстовый редактор"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_partner_assign
@ -5073,12 +5098,12 @@ msgstr "Установить в NULL"
#. module: base
#: view:res.users:0
msgid "Save"
msgstr ""
msgstr "Сохранить"
#. module: base
#: field:ir.actions.report.xml,report_xml:0
msgid "XML Path"
msgstr ""
msgstr "Путь XML"
#. module: base
#: model:res.country,name:base.bj
@ -5270,7 +5295,7 @@ msgstr "Курсы"
#. module: base
#: model:ir.module.module,shortdesc:base.module_email_template
msgid "Email Templates"
msgstr ""
msgstr "Шаблоны писем"
#. module: base
#: model:res.country,name:base.sy
@ -5370,7 +5395,7 @@ msgstr ""
#. module: base
#: view:res.company:0
msgid "Preview Header/Footer"
msgstr ""
msgstr "Просмотр верхнего/нижнего колонтитула"
#. module: base
#: field:ir.ui.menu,parent_id:0
@ -5403,12 +5428,12 @@ msgstr "Десятичный разделитель"
#: code:addons/orm.py:5224
#, python-format
msgid "Missing required value for the field '%s'."
msgstr ""
msgstr "Отсутствие требуемого значения для поля '%s'."
#. module: base
#: model:ir.model,name:base.model_res_partner_address
msgid "res.partner.address"
msgstr ""
msgstr "res.partner.address"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_groups
@ -5443,12 +5468,12 @@ msgstr "Журнал"
#. module: base
#: model:res.country,name:base.im
msgid "Isle of Man"
msgstr ""
msgstr "Остров Мэн"
#. module: base
#: help:ir.actions.client,res_model:0
msgid "Optional model, mostly used for needactions."
msgstr ""
msgstr "Дополнительная модель, в основном используется для needactions."
#. module: base
#: field:ir.attachment,create_uid:0

View File

@ -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-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-08-20 15:34+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2012-11-27 22:38+0000\n"
"Last-Translator: Ahmet Altınışık <Unknown>\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-11-25 05:32+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-11-28 04:40+0000\n"
"X-Generator: Launchpad (build 16309)\n"
#. module: base
#: model:ir.module.module,description:base.module_account_check_writing
@ -24,6 +24,10 @@ msgid ""
"================================================\n"
" "
msgstr ""
"\n"
"Çek yazımı ve basımı için modül.\n"
"================================================\n"
" "
#. module: base
#: model:res.country,name:base.sh
@ -59,7 +63,7 @@ msgstr "Görünüm Yapısı"
#. module: base
#: model:ir.module.module,summary:base.module_sale_stock
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
msgstr ""
msgstr "Teklif, Satış Siparişi, Teslimat & Faturalama Kontrolü"
#. module: base
#: selection:ir.sequence,implementation:0
@ -88,12 +92,12 @@ msgstr ""
#. module: base
#: model:ir.module.module,summary:base.module_point_of_sale
msgid "Touchscreen Interface for Shops"
msgstr ""
msgstr "Satış noktaları için dokunmatik ekran arayüzü"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
msgid "Indian Payroll"
msgstr ""
msgstr "Hindistan Bordro"
#. module: base
#: help:ir.cron,model:0
@ -134,11 +138,14 @@ msgid ""
"The module adds google user in res user.\n"
"========================================\n"
msgstr ""
"\n"
"Bu modül res user a google kullanıcıları ekler.\n"
"========================================\n"
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if this contact is an Employee."
msgstr ""
msgstr "Bu kontak bir çalışan ise bu kutuyu işaretleyin"
#. module: base
#: help:ir.model.fields,domain:0
@ -166,7 +173,7 @@ msgstr "Hedef Pencere"
#. module: base
#: field:ir.actions.report.xml,report_rml:0
msgid "Main Report File Path"
msgstr ""
msgstr "Ana rapor dosya yolu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
@ -263,7 +270,7 @@ msgstr "Oluşturuldu."
#. module: base
#: field:ir.actions.report.xml,report_xsl:0
msgid "XSL Path"
msgstr ""
msgstr "XSL Yolu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr
@ -289,7 +296,7 @@ msgstr "Eskimo / ᐃᓄᒃᑎᑐᑦ"
#. module: base
#: model:res.groups,name:base.group_multi_currency
msgid "Multi Currencies"
msgstr ""
msgstr "Çoklu Para birimleri"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cl
@ -513,7 +520,7 @@ msgstr ""
#. module: base
#: field:ir.model.relation,name:0
msgid "Relation Name"
msgstr ""
msgstr "İlişki Adı"
#. module: base
#: model:res.country,name:base.tv
@ -553,7 +560,7 @@ msgstr ""
#. module: base
#: view:workflow.transition:0
msgid "Workflow Transition"
msgstr ""
msgstr "İşakışı Geçişi"
#. module: base
#: model:res.country,name:base.gf
@ -563,7 +570,7 @@ msgstr "Fransız Guyanası"
#. module: base
#: model:ir.module.module,summary:base.module_hr
msgid "Jobs, Departments, Employees Details"
msgstr ""
msgstr "İşler, Bölümler, Çalışan Bilgileri"
#. module: base
#: model:ir.module.module,description:base.module_analytic
@ -705,7 +712,7 @@ msgstr "Çevrilmemiş"
#. module: base
#: view:ir.mail_server:0
msgid "Outgoing Mail Server"
msgstr ""
msgstr "Giden Posta Sunucusu"
#. module: base
#: help:ir.actions.act_window,context:0
@ -893,7 +900,7 @@ msgstr "İsveçce / Svenska"
#: field:base.language.export,name:0
#: field:ir.attachment,datas_fname:0
msgid "File Name"
msgstr ""
msgstr "Dosya Adı"
#. module: base
#: model:res.country,name:base.rs

View File

@ -20,7 +20,10 @@
##############################################################################
import base64
from docutils import io, nodes
from docutils.core import publish_string
from docutils.transforms import Transform, writer_aux
from docutils.writers.html4css1 import Writer
import imp
import logging
import re
@ -28,6 +31,7 @@ import urllib
import zipimport
from openerp import modules, pooler, release, tools, addons
from openerp.modules.db import create_categories
from openerp.tools.parse_version import parse_version
from openerp.tools.translate import _
from openerp.osv import fields, osv, orm
@ -80,6 +84,32 @@ class module_category(osv.osv):
'visible' : 1,
}
class MyFilterMessages(Transform):
"""
Custom docutils transform to remove `system message` for a document and
generate warnings.
(The standard filter removes them based on some `report_level` passed in
the `settings_override` dictionary, but if we use it, we can't see them
and generate warnings.)
"""
default_priority = 870
def apply(self):
for node in self.document.traverse(nodes.system_message):
_logger.warning("docutils' system message present: %s", str(node))
node.parent.remove(node)
class MyWriter(Writer):
"""
Custom docutils html4ccs1 writer that doesn't add the warnings to the
output document.
"""
def get_transforms(self):
return [MyFilterMessages, writer_aux.Admonitions]
class module(osv.osv):
_name = "ir.module.module"
_rec_name = "shortdesc"
@ -100,7 +130,7 @@ class module(osv.osv):
res = dict.fromkeys(ids, '')
for module in self.browse(cr, uid, ids, context=context):
overrides = dict(embed_stylesheet=False, doctitle_xform=False, output_encoding='unicode')
output = publish_string(source=module.description, writer_name='html', settings_overrides=overrides)
output = publish_string(source=module.description, settings_overrides=overrides, writer=MyWriter())
res[module.id] = output
return res
@ -609,21 +639,8 @@ class module(osv.osv):
categs = category.split('/')
if categs != current_category_path:
p_id = None
while categs:
if p_id is not None:
cr.execute('SELECT id FROM ir_module_category WHERE name=%s AND parent_id=%s', (categs[0], p_id))
else:
cr.execute('SELECT id FROM ir_module_category WHERE name=%s AND parent_id is NULL', (categs[0],))
c_id = cr.fetchone()
if not c_id:
cr.execute('INSERT INTO ir_module_category (name, parent_id) VALUES (%s, %s) RETURNING id', (categs[0], p_id))
c_id = cr.fetchone()[0]
else:
c_id = c_id[0]
p_id = c_id
categs = categs[1:]
self.write(cr, uid, [mod_browse.id], {'category_id': p_id})
cat_id = create_categories(cr, categs)
mod_browse.write({'category_id': cat_id})
def update_translations(self, cr, uid, ids, filter_lang=None, context=None):
if not filter_lang:

View File

@ -19,6 +19,7 @@
#
##############################################################################
import datetime
import math
import openerp
from osv import osv, fields
@ -178,6 +179,12 @@ class res_partner(osv.osv, format_address):
result[obj.id] = tools.image_get_resized_images(obj.image)
return result
def _get_tz_offset(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
for obj in self.browse(cr, uid, ids, context=context):
result[obj.id] = datetime.datetime.now(pytz.timezone(obj.tz or 'GMT')).strftime('%z')
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)
@ -195,6 +202,7 @@ class res_partner(osv.osv, format_address):
help="The partner's timezone, used to output proper date and time values inside printed reports. "
"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."),
'tz_offset': fields.function(_get_tz_offset, type='char', size=5, string='Timezone offset', store=True),
'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this contact if any.'),
'vat': fields.char('TIN', size=32, help="Tax Identification Number. Check the box if this contact is subjected to taxes. Used by the some of the legal statements."),
'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'),

View File

@ -343,7 +343,7 @@ class res_users(osv.osv):
for k in self._all_columns.keys():
if k.startswith('context_'):
context_key = k[8:]
elif k in ['lang', 'tz']:
elif k in ['lang', 'tz', 'tz_offset']:
context_key = k
else:
context_key = False

View File

@ -94,7 +94,11 @@ def setup_pid_file():
def preload_registry(dbname):
""" Preload a registry, and start the cron."""
try:
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=openerp.tools.config['init'] or openerp.tools.config['update'], pooljobs=False)
config = openerp.tools.config
update_module = True if config['init'] or config['update'] else False
db, registry = openerp.pooler.get_db_and_pool(
dbname, update_module=update_module, pooljobs=False,
force_demo=not config['without_demo'])
# jobs will start to be processed later, when openerp.cron.start_master_thread() is called by openerp.service.start_services()
registry.schedule_cron_jobs()
@ -105,7 +109,9 @@ def run_test_file(dbname, test_file):
""" Preload a registry, possibly run a test file, and start the cron."""
try:
config = openerp.tools.config
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False)
update_module = True if config['init'] or config['update'] else False
db, registry = openerp.pooler.get_db_and_pool(
dbname, update_module=update_module, pooljobs=False, force_demo=not config['without_demo'])
cr = db.cursor()
_logger.info('loading test file %s', test_file)
openerp.tools.convert_yaml_import(cr, 'base', file(test_file), 'test', {}, 'test', True)

View File

@ -3,7 +3,7 @@
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010 OpenERP s.a. (<http://openerp.com>).
# Copyright (C) 2010-2012 OpenERP s.a. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -119,21 +119,17 @@ def create_categories(cr, categories):
category = []
while categories:
category.append(categories[0])
if p_id is not None:
cr.execute('SELECT id \
FROM ir_module_category \
WHERE name=%s AND parent_id=%s', (categories[0], p_id))
else:
cr.execute('SELECT id \
FROM ir_module_category \
WHERE name=%s AND parent_id IS NULL', (categories[0],))
xml_id = 'module_category_' + ('_'.join(map(lambda x: x.lower(), category))).replace('&', 'and').replace(' ', '_')
# search via xml_id (because some categories are renamed)
cr.execute("SELECT res_id FROM ir_model_data WHERE name=%s AND module=%s AND model=%s",
(xml_id, "base", "ir.module.category"))
c_id = cr.fetchone()
if not c_id:
cr.execute('INSERT INTO ir_module_category \
(name, parent_id) \
VALUES (%s, %s) RETURNING id', (categories[0], p_id))
c_id = cr.fetchone()[0]
xml_id = 'module_category_' + ('_'.join(map(lambda x: x.lower(), category))).replace('&', 'and').replace(' ', '_')
cr.execute('INSERT INTO ir_model_data (module, name, res_id, model) \
VALUES (%s, %s, %s, %s)', ('base', xml_id, c_id, 'ir.module.category'))
else:

View File

@ -87,15 +87,19 @@ class Graph(dict):
for k, v in additional_data[package.name].items():
setattr(package, k, v)
def add_module(self, cr, module, force=None):
self.add_modules(cr, [module], force)
def add_module(self, cr, module, force_demo=False):
self.add_modules(cr, [module], force_demo)
def add_modules(self, cr, module_list, force=None):
if force is None:
force = []
def add_modules(self, cr, module_list, force_demo=False):
packages = []
len_graph = len(self)
for module in module_list:
if force_demo:
cr.execute("""
UPDATE ir_module_module
SET demo='t'
WHERE name = %s""",
(module,))
# This will raise an exception if no/unreadable descriptor file.
# NOTE The call to load_information_from_description_file is already
# done by db.initialize, so it is possible to not do it again here.
@ -121,9 +125,6 @@ class Graph(dict):
current.remove(package)
node = self.add_node(package, info)
node.data = info
for kind in ('init', 'demo', 'update'):
if package in tools.config[kind] or 'all' in tools.config[kind] or kind in force:
setattr(node, kind, True)
else:
later.add(package)
packages.append((package, info))
@ -185,18 +186,11 @@ class Node(Singleton):
node.depth = self.depth + 1
if node not in self.children:
self.children.append(node)
for attr in ('init', 'update', 'demo'):
if hasattr(self, attr):
setattr(node, attr, True)
self.children.sort(lambda x, y: cmp(x.name, y.name))
return node
def __setattr__(self, name, value):
super(Singleton, self).__setattr__(name, value)
if name in ('init', 'update', 'demo'):
tools.config[name][self.name] = 1
for child in self.children:
setattr(child, name, value)
if name == 'depth':
for child in self.children:
setattr(child, name, value + 1)

View File

@ -42,6 +42,7 @@ from openerp import SUPERUSER_ID
from openerp import SUPERUSER_ID
from openerp.tools.translate import _
from openerp.tools import assertion_report
from openerp.modules.module import initialize_sys_path, \
load_openerp_module, init_module_models
@ -157,7 +158,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
models = pool.load(cr, package)
loaded_modules.append(package.name)
if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
if package.state in ('to install', 'to upgrade'):
init_module_models(cr, package.name, models)
pool._init_modules.add(package.name)
status['progress'] = float(index) / len(graph)
@ -171,18 +172,19 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
idref = {}
mode = 'update'
if hasattr(package, 'init') or package.state == 'to install':
if package.state == 'to install':
mode = 'init'
else:
mode = 'update'
if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
if package.state in ('to install', 'to upgrade'):
if package.state=='to upgrade':
# upgrading the module information
modobj.write(cr, SUPERUSER_ID, [module_id], modobj.get_values_from_terp(package.data))
load_init_xml(module_name, idref, mode)
load_update_xml(module_name, idref, mode)
load_data(module_name, idref, mode)
if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'):
if package.dbdemo and package.state != 'installed':
status['progress'] = (index + 0.75) / len(graph)
load_demo_xml(module_name, idref, mode)
load_demo(module_name, idref, mode)
@ -212,9 +214,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
modobj.update_translations(cr, SUPERUSER_ID, [module_id], None)
package.state = 'installed'
for kind in ('init', 'demo', 'update'):
if hasattr(package, kind):
delattr(package, kind)
cr.commit()
@ -269,10 +268,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
if not openerp.modules.db.is_initialized(cr):
_logger.info("init db")
openerp.modules.db.initialize(cr)
tools.config["init"]["all"] = 1
tools.config['update']['all'] = 1
if not tools.config['without_demo']:
tools.config["demo"]['all'] = 1
update_module = True
# This is a brand new pool, just created in pooler.get_db_and_pool()
pool = pooler.get_pool(cr.dbname)
@ -282,43 +278,51 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
# STEP 1: LOAD BASE (must be done before module dependencies can be computed for later steps)
graph = openerp.modules.graph.Graph()
graph.add_module(cr, 'base', force)
graph.add_module(cr, 'base', force_demo)
if not graph:
_logger.critical('module base cannot be loaded! (hint: verify addons-path)')
raise osv.osv.except_osv(_('Could not load base module'), _('module base cannot be loaded! (hint: verify addons-path)'))
# processed_modules: for cleanup step after install
# loaded_modules: to avoid double loading
report = pool._assertion_report
loaded_modules, processed_modules = load_module_graph(cr, graph, status, perform_checks=(not update_module), report=report)
# After load_module_graph(), 'base' has been installed or updated and its state is 'installed'.
report = assertion_report.assertion_report()
loaded_modules, processed_modules = load_module_graph(cr, graph, status, report=report)
if tools.config['load_language']:
for lang in tools.config['load_language'].split(','):
tools.load_language(cr, lang)
# STEP 2: Mark other modules to be loaded/updated
# This is a one-shot use of tools.config[init|update] from the command line
# arguments. It is directly cleared to not interfer with later create/update
# issued via RPC.
if update_module:
modobj = pool.get('ir.module.module')
if ('base' in tools.config['init']) or ('base' in tools.config['update']):
if ('base' in tools.config['init']) or ('base' in tools.config['update']) \
or ('all' in tools.config['init']) or ('all' in tools.config['update']):
_logger.info('updating modules list')
modobj.update_list(cr, SUPERUSER_ID)
if 'all' in tools.config['init']:
ids = modobj.search(cr, 1, [])
tools.config['init'] = dict.fromkeys([m['name'] for m in modobj.read(cr, 1, ids, ['name'])], 1)
_check_module_names(cr, itertools.chain(tools.config['init'].keys(), tools.config['update'].keys()))
mods = [k for k in tools.config['init'] if tools.config['init'][k]]
if mods:
ids = modobj.search(cr, SUPERUSER_ID, ['&', ('state', '=', 'uninstalled'), ('name', 'in', mods)])
if ids:
modobj.button_install(cr, SUPERUSER_ID, ids)
mods = [k for k in tools.config['init'] if tools.config['init'][k] and k not in ('base', 'all')]
ids = modobj.search(cr, SUPERUSER_ID, ['&', ('state', '=', 'uninstalled'), ('name', 'in', mods)])
if ids:
modobj.button_install(cr, SUPERUSER_ID, ids) # goes from 'uninstalled' to 'to install'
mods = [k for k in tools.config['update'] if tools.config['update'][k]]
if mods:
ids = modobj.search(cr, SUPERUSER_ID, ['&', ('state', '=', 'installed'), ('name', 'in', mods)])
if ids:
modobj.button_upgrade(cr, SUPERUSER_ID, ids)
cr.execute("update ir_module_module set state=%s where name=%s", ('installed', 'base'))
mods = [k for k in tools.config['update'] if tools.config['update'][k] and k not in ('base', 'all')]
ids = modobj.search(cr, SUPERUSER_ID, ['&', ('state', '=', 'installed'), ('name', 'in', mods)])
if ids:
modobj.button_upgrade(cr, SUPERUSER_ID, ids) # goes from 'installed' to 'to upgrade'
# Remove that funky global one-shot thingy.
for kind in ('init', 'demo', 'update'):
tools.config[kind] = {}
# STEP 3: Load marked modules (skipping base which was done in STEP 1)
# IMPORTANT: this is done in two parts, first loading all installed or
@ -370,9 +374,6 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
# Cleanup orphan records
pool.get('ir.model.data')._process_end(cr, SUPERUSER_ID, processed_modules)
for kind in ('init', 'demo', 'update'):
tools.config[kind] = {}
cr.commit()
# STEP 5: Cleanup menus

View File

@ -196,10 +196,15 @@ class db(netsvc.ExportService):
# Try to terminate all other connections that might prevent
# dropping the database
try:
cr.execute("""SELECT pg_terminate_backend(procpid)
# PostgreSQL 9.2 renamed pg_stat_activity.procpid to pid:
# http://www.postgresql.org/docs/9.2/static/release-9-2.html#AEN110389
pid_col = 'pid' if cr._cnx.server_version >= 90200 else 'procpid'
cr.execute("""SELECT pg_terminate_backend(%(pid_col)s)
FROM pg_stat_activity
WHERE datname = %s AND
procpid != pg_backend_pid()""",
WHERE datname = %%s AND
%(pid_col)s != pg_backend_pid()""" % {'pid_col': pid_col},
(db_name,))
except Exception:
pass

View File

@ -1140,6 +1140,10 @@ class test_datetime(ImporterCase):
""" If there is no tz either in the context or on the user, falls back
to UTC
"""
self.registry('res.users').write(
self.cr, openerp.SUPERUSER_ID, [openerp.SUPERUSER_ID],
{'tz': False})
result = self.import_(['value'], [['2012-02-03 11:11:11']])
self.assertFalse(result['messages'])
self.assertEqual(

View File

@ -46,6 +46,8 @@ def _eval_expr(cr, ident, workitem, action):
assert action, 'You used a NULL action in a workflow, use dummy node instead.'
for line in action.split('\n'):
line = line.strip()
if not line:
continue
uid=ident[0]
model=ident[1]
ids=[ident[2]]