From a051b28b34f682f98cbf774271436d01b77e3098 Mon Sep 17 00:00:00 2001 From: ssi Date: Thu, 4 Nov 2010 15:25:57 +0530 Subject: [PATCH 01/11] [IMP] modified partner search view bzr revid: ssi@tinyerp.com-20101104095557-q0r0y9a99w1t7dly --- bin/addons/base/res/partner/partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml index 30bf8b49b98..da638182a0e 100644 --- a/bin/addons/base/res/partner/partner_view.xml +++ b/bin/addons/base/res/partner/partner_view.xml @@ -337,7 +337,7 @@ - + From d41debe92a44b3e1e92e7456b4b2b2a4a01c0aea Mon Sep 17 00:00:00 2001 From: ssi Date: Thu, 4 Nov 2010 15:29:30 +0530 Subject: [PATCH 02/11] [FIX]Audit: solved problem of audit creates ambigous menu entry lp bug: https://launchpad.net/bugs/670050 fixed bzr revid: ssi@tinyerp.com-20101104095930-gyolsnmd6hgm0rtk --- bin/addons/base/res/res_log_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/res/res_log_view.xml b/bin/addons/base/res/res_log_view.xml index 4fc137eb26b..b67045f7daf 100644 --- a/bin/addons/base/res/res_log_view.xml +++ b/bin/addons/base/res/res_log_view.xml @@ -50,7 +50,7 @@ - Logs + Client Logs res.log form {'search_default_my': 1} From 462ca113382775124b48889f488d5f0e22767ba4 Mon Sep 17 00:00:00 2001 From: ssi Date: Thu, 4 Nov 2010 15:34:14 +0530 Subject: [PATCH 03/11] [FIX]partner:Improved wizard spam lp bug: https://launchpad.net/bugs/668320 fixed bzr revid: ssi@tinyerp.com-20101104100414-683dfu5i3avtq12z --- .../base/res/partner/wizard/partner_wizard_spam.py | 6 +++++- bin/tools/misc.py | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bin/addons/base/res/partner/wizard/partner_wizard_spam.py b/bin/addons/base/res/partner/wizard/partner_wizard_spam.py index f349825d588..e194cb02316 100644 --- a/bin/addons/base/res/partner/wizard/partner_wizard_spam.py +++ b/bin/addons/base/res/partner/wizard/partner_wizard_spam.py @@ -22,6 +22,7 @@ import netsvc import tools from osv import fields, osv +import re class partner_wizard_spam(osv.osv_memory): """ Mass Mailing """ @@ -51,6 +52,9 @@ class partner_wizard_spam(osv.osv_memory): event_pool = self.pool.get('res.partner.event') active_ids = context and context.get('active_ids', []) partners = partner_pool.browse(cr, uid, active_ids, context) + type_ = 'plain' + if re.search('(<(pre)|[pubi].*>)', data.text): + type_ = 'html' for partner in partners: for adr in partner.address: if adr.email: @@ -58,7 +62,7 @@ class partner_wizard_spam(osv.osv_memory): to = '%s <%s>' % (name, adr.email) #TODO: add some tests to check for invalid email addresses #CHECKME: maybe we should use res.partner/email_send - tools.email_send(data.email_from, [to], data.subject, data.text,subtype='html') + tools.email_send(data.email_from, [to], data.subject, data.text,subtype=type_) nbr += 1 event_pool.create(cr, uid, {'name': 'Email(s) sent through mass mailing', diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 8ce466338e9..4fd5f12fad9 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -38,6 +38,10 @@ import re from itertools import islice import threading from which import which +try: + from html2text import html2text +except ImportError: + html2text = None import smtplib from email.MIMEText import MIMEText @@ -532,7 +536,11 @@ def email_send(email_from, email_to, subject, body, email_cc=None, email_bcc=Non # Add dynamic X Header for key, value in x_headers.iteritems(): msg['%s' % key] = str(value) - + + if html2text and subtype == 'html': + text = html2text(body.decode('utf-8')).encode('utf-8') + msg.attach(MIMEText(text, _charset='utf-8', _subtype='plain')) + if attach: msg.attach(email_text) for (fname,fcontent) in attach: From a453ea1fc8951ac5d5317821f5ebcfb3e841be2b Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 22 Dec 2010 04:45:41 +0000 Subject: [PATCH 04/11] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20101222044541-ith1dgyhz41dn8ey --- bin/addons/base/i18n/en_GB.po | 32 +++- bin/addons/base/i18n/ru.po | 139 ++++++++++------ bin/addons/base/i18n/sv.po | 40 ++++- bin/addons/base/i18n/zh_CN.po | 288 +++++++++++++++++++++++++++++++--- 4 files changed, 428 insertions(+), 71 deletions(-) diff --git a/bin/addons/base/i18n/en_GB.po b/bin/addons/base/i18n/en_GB.po index c7747a97f77..d0a81004c16 100644 --- a/bin/addons/base/i18n/en_GB.po +++ b/bin/addons/base/i18n/en_GB.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-12-16 15:02+0000\n" -"PO-Revision-Date: 2010-12-21 04:12+0000\n" -"Last-Translator: Yannick Warnier \n" +"PO-Revision-Date: 2010-12-21 15:20+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-12-21 13:27+0000\n" +"X-Launchpad-Export-Date: 2010-12-22 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base @@ -8897,6 +8897,9 @@ msgstr "Russian / русский язык" #~ msgid "%y - Year without century as a decimal number [00,99]." #~ msgstr "%y - Year without century as a decimal number [00,99]." +#~ msgid "The rule is satisfied if at least one test is True" +#~ msgstr "The rule is satisfied if at least one test is True" + #~ msgid "Get Max" #~ msgstr "Get Max" @@ -8981,6 +8984,9 @@ msgstr "Russian / русский язык" #~ msgid "ir.model.config" #~ msgstr "ir.model.config" +#~ msgid "Tests" +#~ msgstr "Tests" + #~ msgid "Repository" #~ msgstr "Repository" @@ -9125,6 +9131,9 @@ msgstr "Russian / русский язык" #~ msgid "Simple domain setup" #~ msgstr "Simple domain setup" +#~ msgid "Make the rule global, otherwise it needs to be put on a group" +#~ msgstr "Make the rule global, otherwise it needs to be put on a group" + #~ msgid "in" #~ msgstr "in" @@ -9338,6 +9347,9 @@ msgstr "Russian / русский язык" #~ msgid "State of Mind" #~ msgstr "State of Mind" +#~ msgid "The rule is satisfied if all test are True (AND)" +#~ msgstr "The rule is satisfied if all test are True (AND)" + #~ msgid "STOCK_CONNECT" #~ msgstr "STOCK_CONNECT" @@ -9409,6 +9421,14 @@ msgstr "Russian / русский язык" #~ msgid "Test" #~ msgstr "Test" +#, python-format +#~ 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\" contains too many dots. XML ids should not contain dots ! These are " +#~ "used to refer to other modules data, as in module.reference_id" + #~ msgid "STOCK_DIALOG_WARNING" #~ msgstr "STOCK_DIALOG_WARNING" @@ -9506,6 +9526,9 @@ msgstr "Russian / русский язык" #~ msgid "Modules to download" #~ msgstr "Modules to download" +#~ msgid "ir.rule.group" +#~ msgstr "ir.rule.group" + #~ msgid "Installed modules" #~ msgstr "Installed modules" @@ -9539,6 +9562,9 @@ msgstr "Russian / русский язык" #~ msgid "a4" #~ msgstr "a4" +#~ msgid "Multiple rules on same objects are joined using operator OR" +#~ msgstr "Multiple rules on same objects are joined using operator OR" + #~ msgid "STOCK_MEDIA_NEXT" #~ msgstr "STOCK_MEDIA_NEXT" diff --git a/bin/addons/base/i18n/ru.po b/bin/addons/base/i18n/ru.po index 6dd99a50cd2..90b215e324e 100644 --- a/bin/addons/base/i18n/ru.po +++ b/bin/addons/base/i18n/ru.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: 2010-12-16 15:02+0000\n" -"PO-Revision-Date: 2010-12-09 07:29+0000\n" +"PO-Revision-Date: 2010-12-21 18:46+0000\n" "Last-Translator: Chertykov Denis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-12-17 04:51+0000\n" +"X-Launchpad-Export-Date: 2010-12-22 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base @@ -181,7 +181,7 @@ msgstr "Искать партнера" #: code:addons/base/res/res_user.py:0 #, python-format msgid "\"smtp_server\" needs to be set to send mails to users" -msgstr "" +msgstr "Настройте \"smtp_server\" для отправки эл. почты пользователям" #. module: base #: code:addons/base/module/wizard/base_export_language.py:0 @@ -457,7 +457,7 @@ msgstr "Выберите Действие, Отчёт или Мастер для #. module: base #: view:res.config.users:0 msgid "New User" -msgstr "" +msgstr "Новый пользователь" #. module: base #: view:base.language.export:0 @@ -580,7 +580,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_opportunity msgid "Opportunities" -msgstr "" +msgstr "Сделки" #. module: base #: model:ir.model,name:base.model_base_language_export @@ -734,7 +734,7 @@ msgstr "Подчиненные категории" #. module: base #: model:ir.model,name:base.model_ir_config_parameter msgid "ir.config_parameter" -msgstr "" +msgstr "ir.config_parameter" #. module: base #: selection:base.language.export,format:0 @@ -802,7 +802,7 @@ msgstr "Символ" #: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form #: model:ir.ui.menu,name:base.menu_publisher_warranty_contract msgid "Contracts" -msgstr "" +msgstr "Договоры" #. module: base #: selection:base.language.install,lang:0 @@ -974,7 +974,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%Y - Year with century." -msgstr "" +msgstr "%Y - год полностью" #. module: base #: report:ir.module.reference.graph:0 @@ -1114,6 +1114,18 @@ msgid "" "%(user_signature)s\n" "%(company_name)s" msgstr "" +"Дата : %(date)s\n" +"\n" +"Уважаемый(ая) %(partner_name)s,\n" +"\n" +"Пожалуйста, просмотрите напоминание о неоплаченных счетах в приложении к " +"письму.\n" +"Всего на сумму: %(followup_amount).2f %(company_currency)s\n" +"\n" +"Спасибо,\n" +"--\n" +"%(user_signature)s\n" +"%(company_name)s" #. module: base #: field:res.currency,accuracy:0 @@ -1743,7 +1755,7 @@ msgstr "Литва" #: model:ir.model,name:base.model_partner_clear_ids #: view:partner.clear.ids:0 msgid "Clear IDs" -msgstr "" +msgstr "Очистить ID" #. module: base #: help:ir.cron,model:0 @@ -1757,7 +1769,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%y - Year without century [00,99]." -msgstr "" +msgstr "%y - год кратко [00,99]." #. module: base #: model:res.country,name:base.si @@ -1940,7 +1952,7 @@ msgstr "Настройка повторяющегося действия" #. module: base #: selection:publisher_warranty.contract,state:0 msgid "Canceled" -msgstr "" +msgstr "Отменен" #. module: base #: model:res.country,name:base.at @@ -2085,7 +2097,7 @@ msgstr "" #. module: base #: field:ir.rule,perm_write:0 msgid "Apply For Write" -msgstr "" +msgstr "Применить для записи" #. module: base #: field:ir.sequence,prefix:0 @@ -2308,7 +2320,7 @@ msgstr "Страны" #. module: base #: selection:ir.translation,type:0 msgid "RML (deprecated - use Report)" -msgstr "" +msgstr "RML (устаревший - используйте Отчет)" #. module: base #: view:ir.rule:0 @@ -2359,7 +2371,7 @@ msgstr "%x - Подходящий формат даты." #. module: base #: view:res.lang:0 msgid "%d - Day of the month [01,31]." -msgstr "" +msgstr "%d - день месяца [01,31]." #. module: base #: model:res.country,name:base.tj @@ -2567,7 +2579,7 @@ msgstr "Базовое поле" #. module: base #: view:publisher_warranty.contract:0 msgid "Validate" -msgstr "" +msgstr "Утвердить" #. module: base #: field:ir.actions.todo,restart:0 @@ -2753,7 +2765,7 @@ msgstr "" #. module: base #: sql_constraint:ir.config_parameter:0 msgid "Key must be unique." -msgstr "" +msgstr "Ключ должен быть уникальным." #. module: base #: view:ir.actions.act_window:0 @@ -2807,6 +2819,9 @@ msgid "" "\n" "Click 'Continue' and enjoy your OpenERP experience..." msgstr "" +"Ваша база полностью настроена.\n" +"\n" +"Нажмите 'Продолжить' и начните использовать OpenERP..." #. module: base #: selection:base.language.install,lang:0 @@ -2982,7 +2997,7 @@ msgstr "Бенин" #: code:addons/base/publisher_warranty/publisher_warranty.py:0 #, python-format msgid "That contract is already registered in the system." -msgstr "" +msgstr "Договор уже зарегистрирован в системе." #. module: base #: help:ir.sequence,suffix:0 @@ -3075,12 +3090,12 @@ msgstr "Бразилия" #. module: base #: view:res.lang:0 msgid "%M - Minute [00,59]." -msgstr "" +msgstr "%M - минуты [00,59]." #. module: base #: selection:ir.module.module,license:0 msgid "Affero GPL-3" -msgstr "" +msgstr "Affero GPL-3" #. module: base #: field:ir.sequence,number_next:0 @@ -3311,7 +3326,7 @@ msgstr "Казахстан" #. module: base #: view:res.lang:0 msgid "%w - Weekday number [0(Sunday),6]." -msgstr "" +msgstr "%w - номер дня недели [0(воскресенье),6]." #. module: base #: field:ir.actions.report.xml,name:0 @@ -3416,7 +3431,7 @@ msgstr "Английский (Канада)" #. module: base #: model:ir.model,name:base.model_publisher_warranty_contract msgid "publisher_warranty.contract" -msgstr "" +msgstr "publisher_warranty.contract" #. module: base #: model:res.country,name:base.et @@ -3665,7 +3680,7 @@ msgstr "Адреса партнеров" #. module: base #: view:res.lang:0 msgid "%S - Seconds [00,61]." -msgstr "" +msgstr "%S - секунды [00,61]." #. module: base #: model:res.country,name:base.cv @@ -4027,12 +4042,12 @@ msgstr "Отменен" #. module: base #: view:res.config.users:0 msgid "Create User" -msgstr "" +msgstr "Создать пользователя" #. module: base #: view:partner.clear.ids:0 msgid "Want to Clear Ids ? " -msgstr "" +msgstr "Хотите стереть Id`ы ? " #. module: base #: field:publisher_warranty.contract,name:0 @@ -4092,7 +4107,7 @@ msgstr "" #. module: base #: view:partner.clear.ids:0 msgid "Clear Ids" -msgstr "" +msgstr "Очистить Id`ы" #. module: base #: model:res.country,name:base.io @@ -4114,7 +4129,7 @@ msgstr "Соответствие полей" #. module: base #: view:publisher_warranty.contract:0 msgid "Refresh Validation Dates" -msgstr "" +msgstr "Обновить даты проверок" #. module: base #: view:ir.model:0 @@ -4246,7 +4261,7 @@ msgstr "Чешская республика" #. module: base #: view:res.widget.wizard:0 msgid "Widget Wizard" -msgstr "" +msgstr "Помощник для виджетов" #. module: base #: selection:ir.property,type:0 @@ -5137,7 +5152,7 @@ msgstr "Ожидание" #: code:addons/__init__.py:0 #, python-format msgid "Could not load base module" -msgstr "" +msgstr "Не удалось загрузить базовый модуль" #. module: base #: view:res.lang:0 @@ -5147,7 +5162,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: field:res.log,create_date:0 msgid "Creation Date" -msgstr "" +msgstr "Дата создания" #. module: base #: view:ir.translation:0 @@ -5327,7 +5342,7 @@ msgstr "Компании" #. module: base #: view:res.lang:0 msgid "%H - Hour (24-hour clock) [00,23]." -msgstr "" +msgstr "%H - часы [00,23]." #. module: base #: model:ir.model,name:base.model_res_widget @@ -5433,7 +5448,7 @@ msgstr "Действия окна" #. module: base #: view:res.lang:0 msgid "%I - Hour (12-hour clock) [01,12]." -msgstr "" +msgstr "%I - часы [01,12]." #. module: base #: selection:publisher_warranty.contract.wizard,state:0 @@ -5476,7 +5491,7 @@ msgstr "" #: code:addons/base/res/res_config.py:0 #, python-format msgid "Click 'Continue' to configure the next addon..." -msgstr "" +msgstr "Нажмите 'Продолжить' для настройки следующего модуля..." #. module: base #: field:ir.actions.server,record_id:0 @@ -5503,7 +5518,7 @@ msgstr "Египет" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply For Read" -msgstr "" +msgstr "Применить для чтения" #. module: base #: help:ir.actions.server,model_id:0 @@ -5937,7 +5952,7 @@ msgstr "Доступ на запись" #. module: base #: view:res.lang:0 msgid "%m - Month number [01,12]." -msgstr "" +msgstr "%m - номер месяца [01,12]." #. module: base #: field:res.bank,city:0 @@ -5961,7 +5976,7 @@ msgstr "Италия" #: view:ir.actions.todo:0 #: selection:ir.actions.todo,state:0 msgid "To Do" -msgstr "" +msgstr "Сделать" #. module: base #: selection:base.language.install,lang:0 @@ -6502,7 +6517,7 @@ msgstr "Г-жа" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_ltd msgid "Ltd." -msgstr "" +msgstr "ООО" #. module: base #: model:res.country,name:base.ch @@ -6554,7 +6569,7 @@ msgstr "Сомали" #. module: base #: selection:publisher_warranty.contract,state:0 msgid "Terminated" -msgstr "" +msgstr "Прекращен" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 @@ -7528,7 +7543,7 @@ msgstr "Администрирование" #. module: base #: view:base.module.update:0 msgid "Click on Update below to start the process..." -msgstr "" +msgstr "Нажмите 'Обновить' для запуска процесса..." #. module: base #: model:res.country,name:base.ir @@ -7732,7 +7747,7 @@ msgstr "Диаграмма" #. module: base #: help:multi_company.default,name:0 msgid "Name it to easily find a record" -msgstr "" +msgstr "Задайте название для облегчения поиска записи" #. module: base #: model:ir.actions.act_window,name:base.grant_menu_access @@ -8102,7 +8117,7 @@ msgstr "" #. module: base #: view:res.log:0 msgid "System Logs" -msgstr "" +msgstr "Системные журналы" #. module: base #: selection:workflow.activity,join_mode:0 @@ -8258,7 +8273,7 @@ msgstr "Словацкая Республика" #. module: base #: model:ir.ui.menu,name:base.publisher_warranty msgid "Publisher Warranty" -msgstr "" +msgstr "Гарантия" #. module: base #: model:res.country,name:base.aw @@ -8310,7 +8325,7 @@ msgstr "Эл. почта & подпись" #. module: base #: view:publisher_warranty.contract:0 msgid "Publisher Warranty Contract" -msgstr "" +msgstr "Договор гарантии" #. module: base #: selection:base.language.install,lang:0 @@ -8599,7 +8614,7 @@ msgstr "Название вида" #. module: base #: model:ir.model,name:base.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Группы доступа" #. module: base #: selection:base.language.install,lang:0 @@ -8621,7 +8636,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%j - Day of the year [001,366]." -msgstr "" +msgstr "%j - день года [001,366]." #. module: base #: field:ir.actions.server,mobile:0 @@ -8704,7 +8719,7 @@ msgstr "Управление виджетами домашней страниц #: field:workflow,osv:0 #: field:workflow.instance,res_type:0 msgid "Resource Object" -msgstr "" +msgstr "Объект ресурса" #. module: base #: help:ir.sequence,number_increment:0 @@ -8778,7 +8793,7 @@ msgstr "Код БИК / SWIFT" #. module: base #: model:res.partner.category,name:base.res_partner_category_1 msgid "Prospect" -msgstr "" +msgstr "Перспективный" #. module: base #: selection:base.language.install,lang:0 @@ -8827,6 +8842,9 @@ msgstr "Русский / русский язык" #~ msgid "STOCK_DELETE" #~ msgstr "STOCK_DELETE" +#~ msgid "The rule is satisfied if at least one test is True" +#~ msgstr "Удовлетворяет правилу, если результат хотя бы одной из проверок True" + #~ msgid "Get Max" #~ msgstr "Выбрать Max" @@ -8887,6 +8905,9 @@ msgstr "Русский / русский язык" #~ msgid "Planned Cost" #~ msgstr "Планируемые затраты" +#~ msgid "Tests" +#~ msgstr "Тесты" + #~ msgid "Repository" #~ msgstr "Хранилище" @@ -9106,12 +9127,18 @@ msgstr "Русский / русский язык" #~ "Редко используемые опции и поля будут автоматически скрыты. Позже вы сможете " #~ "это изменить через меню Администрирование." +#~ msgid "The rule is satisfied if all test are True (AND)" +#~ msgstr "Удовлетворяет правилу, если все условия 'True' (Логическое И)" + #~ msgid "STOCK_CONNECT" #~ msgstr "STOCK_CONNECT" #~ msgid "Scan for new modules" #~ msgstr "Поиск новых модулей" +#~ msgid "Module Repository" +#~ msgstr "Хранилище модулей" + #~ msgid "Sale Opportunity" #~ msgstr "возможная продажа" @@ -9208,6 +9235,11 @@ msgstr "Русский / русский язык" #~ msgid "a4" #~ msgstr "A4" +#~ msgid "Multiple rules on same objects are joined using operator OR" +#~ msgstr "" +#~ "Монжественные правила для того же объекта объединены с использованием " +#~ "оператора ИЛИ" + #~ msgid "STOCK_MEDIA_NEXT" #~ msgstr "STOCK_MEDIA_NEXT" @@ -9759,6 +9791,9 @@ msgstr "Русский / русский язык" #~ msgid "Could you check your contract information ?" #~ msgstr "Вы не могли бы проверить информацию о вашем договоре?" +#~ msgid "Make the rule global, otherwise it needs to be put on a group" +#~ msgstr "Задайте правило глобально или для определенной группы" + #~ msgid "" #~ "This wizard will detect new terms in the application so that you can update " #~ "them manually." @@ -9891,6 +9926,15 @@ msgstr "Русский / русский язык" #~ msgid "%H - Hour (24-hour clock) as a decimal number [00,23]." #~ msgstr "%H - Час (в формате 24 часа) в виде десятичного числа [00,23]." +#, python-format +#~ 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" + #, python-format #~ msgid "Tree can only be used in tabular reports" #~ msgstr "Вид дерева может быть использован только в табличных отчетах" @@ -9925,6 +9969,9 @@ msgstr "Русский / русский язык" #~ msgid "Calculate Count" #~ msgstr "Рассчитать количество" +#~ msgid "ir.rule.group" +#~ msgstr "ir.rule.group" + #~ msgid "Manually Created" #~ msgstr "Создан вручную" diff --git a/bin/addons/base/i18n/sv.po b/bin/addons/base/i18n/sv.po index 3f7c54f436e..1d686dab8c9 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: 2010-12-16 15:02+0000\n" -"PO-Revision-Date: 2010-12-21 07:58+0000\n" -"Last-Translator: Anders Eriksson, Aspirix AB \n" +"PO-Revision-Date: 2010-12-21 15:17+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-12-21 13:27+0000\n" +"X-Launchpad-Export-Date: 2010-12-22 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base @@ -8824,6 +8824,10 @@ msgstr "Russian / русский язык" #~ msgid "Outgoing transitions" #~ msgstr "Avgående övergångar" +#, python-format +#~ msgid "The unlink method is not implemented on this object !" +#~ msgstr "Detta objekt saknar metoden för att bryta länk" + #~ msgid "" #~ "Choose between the \"Simplified Interface\" or the extended one.\n" #~ "If you are testing or using OpenERP for the first time, we suggest you to " @@ -8841,6 +8845,14 @@ msgstr "Russian / русский язык" #~ "förstå. Du kommer att kunna byta till den utökade senare.\n" #~ " " +#, python-format +#~ msgid "" +#~ "The sum of the data (2nd field) is null.\n" +#~ "We can't draw a pie chart !" +#~ msgstr "" +#~ "Summan av datat (2:dra fältet) är noll.\n" +#~ "Vi kan inte rita ett cirkeldiagram!" + #~ msgid "ir.actions.report.custom" #~ msgstr "ir.actions.report.custom" @@ -8872,6 +8884,9 @@ msgstr "Russian / русский язык" #~ msgid "STOCK_GOTO_FIRST" #~ msgstr "STOCK_GOTO_FIRST" +#~ msgid "The rule is satisfied if at least one test is True" +#~ msgstr "Regeln är uppfyllt om minst ett test är sant" + #~ msgid "Get Max" #~ msgstr "Hämta största" @@ -9055,9 +9070,15 @@ msgstr "Russian / русский язык" #~ msgid "Service" #~ msgstr "Service" +#~ msgid "ir.rule.group" +#~ msgstr "ir.rule.group" + #~ msgid "STOCK_INDENT" #~ msgstr "STOCK_INDENT" +#~ msgid "Macedonia" +#~ msgstr "Macedonia" + #~ msgid "STOCK_MEDIA_NEXT" #~ msgstr "STOCK_MEDIA_NEXT" @@ -9098,9 +9119,16 @@ msgstr "Russian / русский язык" #~ "Det valda språket har installerats. Du måste ändra inställningar för " #~ "användaren och öppna en ny meny för att visa ändringar." +#, python-format +#~ msgid "UserError" +#~ msgstr "Användarfel" + #~ msgid "STOCK_MEDIA_RECORD" #~ msgstr "STOCK_MEDIA_RECORD" +#~ msgid "sv_SV" +#~ msgstr "sv_SV" + #~ msgid "STOCK_UNINDENT" #~ msgstr "STOCK_UNINDENT" @@ -9150,6 +9178,9 @@ msgstr "Russian / русский язык" #~ msgid "<=" #~ msgstr "<=" +#~ msgid "uk_UK" +#~ msgstr "uk_UK" + #~ msgid "Portugese / português" #~ msgstr "Portugese / português" @@ -9232,6 +9263,9 @@ msgstr "Russian / русский язык" #~ msgid "STOCK_STOP" #~ msgstr "STOCK_STOP" +#~ msgid "cs_CS" +#~ msgstr "cs_CS" + #~ msgid "STOCK_CONVERT" #~ msgstr "STOCK_CONVERT" diff --git a/bin/addons/base/i18n/zh_CN.po b/bin/addons/base/i18n/zh_CN.po index ad34334e7d1..1263941aa17 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: 2010-12-16 15:02+0000\n" -"PO-Revision-Date: 2010-12-20 09:53+0000\n" +"PO-Revision-Date: 2010-12-22 01:21+0000\n" "Last-Translator: Wei \"oldrev\" Li \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-12-21 13:27+0000\n" +"X-Launchpad-Export-Date: 2010-12-22 04:45+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base @@ -448,7 +448,7 @@ msgstr "选择要执行的动作窗口、报表或向导。" #. module: base #: view:res.config.users:0 msgid "New User" -msgstr "" +msgstr "新建用户" #. module: base #: view:base.language.export:0 @@ -723,7 +723,7 @@ msgstr "子分类" #. module: base #: model:ir.model,name:base.model_ir_config_parameter msgid "ir.config_parameter" -msgstr "" +msgstr "ir.config_parameter" #. module: base #: selection:base.language.export,format:0 @@ -2026,7 +2026,7 @@ msgstr "联系人称谓" msgid "" "Please double-check that the file encoding is set to UTF-8 (sometimes called " "Unicode) when the translator exports it." -msgstr "" +msgstr "请再次检查文件编码设为了 UTF-8 (有时候被称为 Unicode)." #. module: base #: selection:base.language.install,lang:0 @@ -2081,7 +2081,7 @@ msgstr "字段映射" #. module: base #: selection:base.language.install,lang:0 msgid "Portugese / Português" -msgstr "" +msgstr "葡萄牙语 / Português" #. module: base #: view:base.module.import:0 @@ -3496,7 +3496,7 @@ msgstr "初始日期" #. module: base #: selection:base.language.install,lang:0 msgid "Gujarati / ગુજરાતી" -msgstr "" +msgstr "古吉拉特语 / ગુજરાતી" #. module: base #: code:addons/base/module/module.py:0 @@ -3815,7 +3815,7 @@ msgstr "子工作流" #. module: base #: model:ir.model,name:base.model_res_config msgid "res.config" -msgstr "" +msgstr "res.config" #. module: base #: field:workflow.transition,signal:0 @@ -3866,7 +3866,7 @@ msgstr "英国" #: view:res.config.users:0 #: view:res.config.view:0 msgid "res_config_contents" -msgstr "" +msgstr "res_config_contents" #. module: base #: help:res.partner.category,active:0 @@ -3930,7 +3930,7 @@ msgstr "ir.attachment" #. module: base #: view:base.language.import:0 msgid "- module,type,name,res_id,src,value" -msgstr "" +msgstr "- module,type,name,res_id,src,value" #. module: base #: selection:base.language.install,lang:0 @@ -3988,7 +3988,7 @@ msgstr "要清除Ids吗? " #: field:publisher_warranty.contract,name:0 #: field:publisher_warranty.contract.wizard,name:0 msgid "Serial Key" -msgstr "" +msgstr "产品密钥" #. module: base #: field:res.partner,customer:0 @@ -4108,7 +4108,7 @@ msgstr "签名" #. module: base #: model:ir.model,name:base.model_res_widget_user msgid "res.widget.user" -msgstr "" +msgstr "res.widget.user" #. module: base #: field:res.partner.category,complete_name:0 @@ -4208,7 +4208,7 @@ msgstr "整数" msgid "" "The path to the main report file (depending on Report Type) or NULL if the " "content is in another data field" -msgstr "" +msgstr "主报表文件的路径(取决于报表类型)或者内容在其它数据字段的话也可为 NULL" #. module: base #: help:res.config.users,company_id:0 @@ -4306,7 +4306,7 @@ msgstr "此窗口" #. module: base #: view:publisher_warranty.contract:0 msgid "Publisher Warranty Contracts" -msgstr "" +msgstr "发布者担保合约" #. module: base #: help:res.log,name:0 @@ -4625,7 +4625,7 @@ msgstr "把事件关联到动作" #. module: base #: model:ir.model,name:base.model_base_update_translations msgid "base.update.translations" -msgstr "" +msgstr "base.update.translations" #. module: base #: field:ir.module.category,parent_id:0 @@ -4817,7 +4817,7 @@ msgstr "多米尼加" #: sql_constraint:publisher_warranty.contract:0 msgid "" "Your publisher warranty contract is already subscribed in the system !" -msgstr "" +msgstr "您的发布者保障合约已经在系统中订阅。" #. module: base #: help:ir.cron,nextcall:0 @@ -5154,7 +5154,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Flemish (BE) / Vlaams (BE)" -msgstr "" +msgstr "佛兰德语 (BE) / Vlaams (BE)" #. module: base #: field:ir.cron,interval_number:0 @@ -5219,7 +5219,7 @@ msgstr "自定义快捷方式" #. module: base #: selection:base.language.install,lang:0 msgid "Vietnamese / Tiếng Việt" -msgstr "" +msgstr "越南语 / Tiếng Việt" #. module: base #: model:res.country,name:base.dz @@ -5234,7 +5234,7 @@ msgstr "比利时" #. module: base #: model:ir.model,name:base.model_osv_memory_autovacuum msgid "osv_memory.autovacuum" -msgstr "" +msgstr "osv_memory.autovacuum" #. module: base #: field:base.language.export,lang:0 @@ -8739,6 +8739,9 @@ msgstr "俄语 / русский язык" #~ msgid "Planned Cost" #~ msgstr "计划成本" +#~ msgid "Tests" +#~ msgstr "测试" + #~ msgid "Repository" #~ msgstr "模块库" @@ -8808,6 +8811,9 @@ msgstr "俄语 / русский язык" #~ msgid "Scan for new modules" #~ msgstr "查找新模块" +#~ msgid "Module Repository" +#~ msgstr "模块库" + #~ msgid "res.groups" #~ msgstr "组" @@ -9075,6 +9081,9 @@ msgstr "俄语 / русский язык" #~ msgid "Validated" #~ msgstr "已验证" +#~ msgid "The rule is satisfied if at least one test is True" +#~ msgstr "只要一个条件判断为真,该规则即满足" + #~ msgid "Get Max" #~ msgstr "获取最大值" @@ -9449,6 +9458,9 @@ msgstr "俄语 / русский язык" #~ msgid "Error occurred while validating the field(s) %s: %s" #~ msgstr "验证字段 %s 时发生错误:%s" +#~ msgid "The rule is satisfied if all test are True (AND)" +#~ msgstr "如果所有测试都为真的话该规则将满足条件(“与”运算)" + #~ msgid "STOCK_CONNECT" #~ msgstr "STOCK_CONNECT" @@ -9573,6 +9585,9 @@ msgstr "俄语 / русский язык" #~ msgid "Couldn't find tag '%s' in parent view !" #~ msgstr "未在上级视图中找到标签 '%s'!" +#~ msgid "ir.rule.group" +#~ msgstr "ir.rule.group" + #, python-format #~ msgid "The name_get method is not implemented on this object !" #~ msgstr "该对象尚未实现“name_get”方法!" @@ -9596,6 +9611,9 @@ msgstr "俄语 / русский язык" #~ msgid "Macedonia" #~ msgstr "马其顿" +#~ msgid "Multiple rules on same objects are joined using operator OR" +#~ msgstr "同一对象上的多条规则使用“或”(OR)操作符连接。" + #~ msgid "STOCK_MEDIA_NEXT" #~ msgstr "STOCK_MEDIA_NEXT" @@ -10082,6 +10100,32 @@ msgstr "俄语 / русский язык" #~ msgid "Uninstalled modules" #~ msgstr "已卸载的模块" +#, python-format +#~ msgid "" +#~ "Cannot delete Purchase Order(s) which are in %s State!' % s['state']))\n" +#~ " return super(purchase_order, self).unlink(cr, uid, unlink_ids, " +#~ "context=context)\n" +#~ "\n" +#~ " def button_dummy(self, cr, uid, ids, context={}):\n" +#~ " return True\n" +#~ "\n" +#~ " def onchange_dest_address_id(self, cr, uid, ids, adr_id):\n" +#~ " if not adr_id:\n" +#~ " return {}\n" +#~ " part_id = self.pool.get('res.partner.address" +#~ msgstr "" +#~ "无法删除在%s状态的采购订单!' % s['state']))\n" +#~ " return super(purchase_order, self).unlink(cr, uid, unlink_ids, \n" +#~ "context=context)\n" +#~ "\n" +#~ " def button_dummy(self, cr, uid, ids, context={}):\n" +#~ " return True\\n\n" +#~ "\n" +#~ " def onchange_dest_address_id(self, cr, uid, ids, adr_id):\n" +#~ " if not adr_id:\n" +#~ " return {}\n" +#~ " part_id = self.pool.get('res.partner.address" + #, python-format #~ msgid "" #~ "Could not resolve product category, ' \\n " @@ -10387,6 +10431,9 @@ msgstr "俄语 / русский язык" #~ msgid "Cannot delete a point of sale which is already confirmed !" #~ msgstr "无法删除已确认的销售终端" +#~ msgid "Make the rule global, otherwise it needs to be put on a group" +#~ msgstr "让规则的作用范围为全局,否则需要将其指定给用户组" + #, python-format #~ msgid "The region should be in " #~ msgstr "该地区应该在 " @@ -10907,6 +10954,14 @@ msgstr "俄语 / русский язык" #~ msgid "The \"use_control\" module is not uninstallable" #~ msgstr "无法安装“use_control”模块" +#, python-format +#~ 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 标识符不应该包括点!\r\n" +#~ "其作用是引用到其他模块数据,如module.reference_id" + #, python-format #~ msgid "No cost unit defined for this employee !" #~ msgstr "为该员工未定义成本单位!" @@ -11303,17 +11358,212 @@ msgstr "俄语 / русский язык" #~ msgid "Directory name must be unique!" #~ msgstr "目录名必须唯一!" +#, python-format +#~ msgid "Demo instance" +#~ msgstr "示范实例" + +#, python-format +#~ msgid "Warning! Object has no demo data" +#~ msgstr "警报!对象没有示范数据" + +#, python-format +#~ msgid "You could not publish a module that is not installed!" +#~ msgstr "您不能发布一个未安装的模块!" + +#, python-format +#~ msgid "Please specify the Partner Email address !" +#~ msgstr "请指定业务伙伴的电邮地址!" + +#, python-format +#~ msgid "You must define an analytic journal of type '%s' !" +#~ msgstr "您必须定义已本有‘%s‘类型的分析日记账!" + +#, python-format +#~ msgid "You must first cancel all packing attached to this sale order." +#~ msgstr "您必须先取消该销售订单所有附加的分拣单。" + +#, python-format +#~ msgid "Entries are not of the same account or already reconciled ! " +#~ msgstr "不同科目或者已对帐的分录! " + +#, python-format +#~ msgid "Integrity Error !" +#~ msgstr "完整性错误!" + +#, python-format +#~ msgid "Invalid action !" +#~ msgstr "无效动作!" + +#, python-format +#~ msgid "Change audittrail depends -- Setting rule as DRAFT" +#~ msgstr "修改检查跟踪依靠--设定规则为草稿" + +#, python-format +#~ msgid "" +#~ "No IBAN defined \n" +#~ "' \\n\t\t\t\t\t\t'for the bank account: %s\n" +#~ "' + \\n\t\t\t\t\t\t'on line: %s" +#~ msgstr "" +#~ "未定义IBAN帐号\n" +#~ "' \\n\t\t\t\t\t\t'相关银行账户: %s\n" +#~ "' + \\n\t\t\t\t\t\t'行号: %s" + +#, python-format +#~ msgid "" +#~ "There is no default default credit account defined \n" +#~ "' \\n 'on journal \"%s\"" +#~ msgstr "" +#~ "未定义日记账“%s“的\n" +#~ "默认贷方科目" + #~ msgid "Partner Functions" #~ msgstr "业务伙伴职能" +#, python-format +#~ msgid "Fri" +#~ msgstr "周五" + +#, python-format +#~ msgid "" +#~ "You have to select a product UOM in the same category than the purchase UOM " +#~ "of the product" +#~ msgstr "您必须选定和采购产品计量单位同样类型的产品计量单位。" + +#, python-format +#~ msgid "Number record different from the computed!" +#~ msgstr "记录号码和计算的号码不同!" + #~ msgid "" #~ "This function will check for new modules in the 'addons' path and on module " #~ "repositories:" #~ msgstr "该功能将在“addons”路径和模块库中检查新模块。" +#, python-format +#~ msgid "This feature is only available for location type Amazon" +#~ msgstr "此功能只有类型为“Amazon“的货位可用" + +#~ msgid "Customers Partners" +#~ msgstr "客户业务伙伴" + +#, python-format +#~ msgid "Provide the quantities of the returned products." +#~ msgstr "输入退货的数量" + +#, python-format +#~ msgid "No timebox child of this one !" +#~ msgstr "此无时间盒子子代!" + +#, python-format +#~ msgid "Thu" +#~ msgstr "周四" + +#, python-format +#~ msgid "Operation Not Permitted !" +#~ msgstr "未许可操作!" + +#, python-format +#~ msgid "Cycles Cost" +#~ msgstr "按循环计算的成本" + +#, python-format +#~ msgid "Please set an analytic journal on this financial journal !" +#~ msgstr "请设定此财务日记账的分析日记账!" + +#, python-format +#~ msgid "The employee must have a contact address" +#~ msgstr "员工必须有联系地址" + #~ msgid "Sequence Types" #~ msgstr "序列类型" +#, python-format +#~ msgid "Invoice is already reconciled" +#~ msgstr "发票已对帐" + +#, python-format +#~ msgid "Entry \"%s\" is not valid !" +#~ msgstr "分录“%s“无效!" + +#, python-format +#~ msgid "Analytic Account incomplete" +#~ msgstr "分析科目不完整" + +#, python-format +#~ msgid "" +#~ "Specified Journal does not have any account move entries in draft state for " +#~ "this period" +#~ msgstr "指定的日记账没有此时间段草稿状态的分录" + +#, python-format +#~ msgid "Customer has no addresses defined!" +#~ msgstr "客户无已定义地址!" + +#, python-format +#~ msgid "Alert for ' + partner.name +' !" +#~ msgstr "给'+partner.name+'的警示!" + +#, python-format +#~ msgid "The statement balance is incorrect !\n" +#~ msgstr "银行结单余额不对!\n" + +#, python-format +#~ msgid "" +#~ "You have to define the bank account\n" +#~ "in the journal definition for reconciliation." +#~ msgstr "" +#~ "为了对帐,您必须在日记账设定中\n" +#~ "定义一个银行账户" + +#, python-format +#~ msgid "Free Reference" +#~ msgstr "无限制引用" + +#, python-format +#~ msgid "" +#~ "Tax base different !\n" +#~ "Click on compute to update tax base" +#~ msgstr "" +#~ "税目基数相异!\n" +#~ "为更新税目基数,单击“计算”" + +#, python-format +#~ msgid "You can not use an inactive account!" +#~ msgstr "您不能使用静止科目!" + +#, python-format +#~ msgid "" +#~ "You can specify year, month and date in the name of the model using the " +#~ "following labels:\n" +#~ "\n" +#~ "%(year)s : To Specify Year \n" +#~ "%(month)s : To Specify Month \n" +#~ "%(date)s : Current Date\n" +#~ "\n" +#~ "e.g. My model on %(date)s" +#~ msgstr "" +#~ "为在模式名称中指定年,月或日期,您可以使用以下的标签: \n" +#~ "%(year)s :为指定年\n" +#~ "%(month)s :为指定月\n" +#~ "%(date)s :为指定现行日期\n" +#~ "\n" +#~ "比如: 我的%(date)s模式" + +#, python-format +#~ msgid "You cannot Pause the Operation other then Start/Resume state !" +#~ msgstr "在启动/恢复状态时您不能暂停运行!" + +#, python-format +#~ msgid "No employee defined for your user !" +#~ msgstr "无员工为此用户定义" + +#, python-format +#~ msgid "Please select maximum 8 records to fit the page-width." +#~ msgstr "请选择至多8条记录以适合页面宽度" + +#, python-format +#~ msgid "Couldn't create move between different companies" +#~ msgstr "无法在公司之间建立记帐" + #~ msgid "Unsubscribed" #~ msgstr "取消订购" From 162e988544648771fa1165391e558da862c6af17 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 21 Dec 2010 20:23:44 +0100 Subject: [PATCH 05/11] [IMP] orm.search: support multiple _order clauses in destination objects when sorting on m2o fields lp bug: https://launchpad.net/bugs/692694 fixed bzr revid: odo@openerp.com-20101221192344-87d7ajnfsn5unm9p --- bin/osv/orm.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index b3400b80958..4255505f24b 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -4015,14 +4015,18 @@ class orm(orm_template): # _order is complex, can't use it here, so we default to _rec_name m2o_order = dest_model._rec_name else: - # extract the first field name, to be able to qualify it and add desc/asc - m2o_order = m2o_order.split(",",1)[0].strip().split(" ",1)[0] + # extract the field names, to be able to qualify them and add desc/asc + m2o_order_list = [] + for order_part in m2o_order.split(",",1): + m2o_order_list.append(order_part.strip().split(" ",1)[0].strip()) + m2o_order = m2o_order_list # Join the dest m2o table if it's not joined yet. We use [LEFT] OUTER join here # as we don't want to exclude results that have NULL values for the m2o src_table, src_field = qualified_field.replace('"','').split('.', 1) query.join((src_table, dest_model._table, src_field, 'id'), outer=True) - return '"%s"."%s"' % (dest_model._table, m2o_order) + qualify = lambda field: '"%s"."%s"' % (dest_model._table, field) + return map(qualify, m2o_order) if isinstance(m2o_order, list) else qualify(m2o_order) def _generate_order_by(self, order_spec, query): @@ -4048,7 +4052,7 @@ class orm(orm_template): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joignable" fields + continue # ignore non-readable or "non-joinable" fields elif order_field in self._inherit_fields: parent_obj = self.pool.get(self._inherit_fields[order_field][0]) order_column = parent_obj._columns[order_field] @@ -4057,9 +4061,13 @@ class orm(orm_template): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joignable" fields + continue # ignore non-readable or "non-joinable" fields if inner_clause: - order_by_elements.append("%s %s" % (inner_clause, order_direction)) + if isinstance(inner_clause, list): + for clause in inner_clause: + order_by_elements.append("%s %s" % (clause, order_direction)) + else: + order_by_elements.append("%s %s" % (inner_clause, order_direction)) if order_by_elements: order_by_clause = ",".join(order_by_elements) From a9d653ead14578cc58fc5ecdb03435a8210c19ec Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 21 Dec 2010 20:49:15 +0100 Subject: [PATCH 06/11] [I18N] base: cleanup export after fixing some remaining translation export issues bzr revid: odo@openerp.com-20101221194915-w9am2wzjvi9z73zs --- bin/addons/base/i18n/base.pot | 110 ++++++++++++++++------------------ 1 file changed, 52 insertions(+), 58 deletions(-) diff --git a/bin/addons/base/i18n/base.pot b/bin/addons/base/i18n/base.pot index c3383537db3..075bdc83010 100644 --- a/bin/addons/base/i18n/base.pot +++ b/bin/addons/base/i18n/base.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.0.0-rc1\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2010-12-16 15:02:56+0000\n" -"PO-Revision-Date: 2010-12-16 15:02:56+0000\n" +"POT-Creation-Date: 2010-12-21 19:43:45+0000\n" +"PO-Revision-Date: 2010-12-21 19:43:45+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -369,16 +369,6 @@ msgstr "" msgid "Schedule Upgrade" msgstr "" -#. module: base -#: sql_constraint:res.partner.bank:0 -msgid "The BVR adherent number must be unique !" -msgstr "" - -#. module: base -#: model:res.partner.title,name:base.res_partner_title_sir -msgid "Mister" -msgstr "" - #. module: base #: help:res.country,code:0 msgid "The ISO country code in two chars.\n" @@ -395,11 +385,6 @@ msgstr "" msgid "Sales & Purchases" msgstr "" -#. module: base -#: model:res.partner.title,name:base.res_partner_title_pvt_ltd -msgid "Corporation" -msgstr "" - #. module: base #: view:ir.translation:0 msgid "Untranslated" @@ -672,11 +657,6 @@ msgstr "" msgid "India" msgstr "" -#. module: base -#: model:ir.model,name:base.model_maintenance_contract_module -msgid "maintenance contract modules" -msgstr "" - #. module: base #: model:ir.actions.act_window,name:base.res_request_link-act #: model:ir.ui.menu,name:base.menu_res_request_link_act @@ -1759,11 +1739,6 @@ msgstr "" msgid "Invalid arguments" msgstr "" -#. module: base -#: model:res.partner.title,shortcut:base.res_partner_title_miss -msgid "Mss." -msgstr "" - #. module: base #: model:res.country,name:base.se msgid "Sweden" @@ -1975,6 +1950,11 @@ msgstr "" msgid "Portugese / Português" msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_sir +msgid "Sir" +msgstr "" + #. module: base #: view:base.module.import:0 msgid "Select module package to import (.zip file):" @@ -2227,6 +2207,11 @@ msgstr "" msgid "GPL-2 or later version" msgstr "" +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_sir +msgid "M." +msgstr "" + #. module: base #: code:addons/base/module/module.py:0 #, python-format @@ -2890,6 +2875,11 @@ msgstr "" msgid "Hungary" msgstr "" +#. module: base +#: model:ir.model,name:base.model_res_groups +msgid "res.groups" +msgstr "" + #. module: base #: model:res.country,name:base.br msgid "Brazil" @@ -3025,6 +3015,12 @@ msgstr "" msgid "Creator" msgstr "" +#. module: base +#: model:res.company,overdue_msg:base.main_company +msgid "Please note that the following payments are now due. If your payment has been sent, kindly forward your payment details. If payment will be delayed further, please contact us to discuss. \n" +"Would your payment have been carried out after this mail was sent, please consider the present one as void." +msgstr "" + #. module: base #: model:res.country,name:base.mx msgid "Mexico" @@ -3740,11 +3736,6 @@ msgstr "" msgid "Check this box if the partner is an Employee." msgstr "" -#. module: base -#: model:res.partner.title,name:base.res_partner_title_ltd -msgid "Limited Company" -msgstr "" - #. module: base #: field:ir.actions.report.xml,report_rml_content:0 #: field:ir.actions.report.xml,report_rml_content_data:0 @@ -3802,6 +3793,11 @@ msgstr "" msgid "Project" msgstr "" +#. module: base +#: model:ir.model,name:base.model_maintenance_contract +msgid "maintenance.contract" +msgstr "" + #. module: base #: view:base.module.import:0 msgid "Module file successfully imported!" @@ -3842,7 +3838,6 @@ msgid "Saint Lucia" msgstr "" #. module: base -#: model:ir.model,name:base.model_maintenance_contract #: view:publisher_warranty.contract:0 msgid "Maintenance Contract" msgstr "" @@ -4364,6 +4359,14 @@ msgstr "" msgid "Raphaël Valyi's tweets" msgstr "" +#. module: base +#: code:addons/base/res/res_config.py:0 +#, python-format +msgid "\n" +"\n" +"This addon is already installed on your system" +msgstr "" + #. module: base #: help:ir.cron,interval_number:0 msgid "Repeat every x." @@ -5532,6 +5535,11 @@ msgstr "" msgid "Panama" msgstr "" +#. module: base +#: model:res.partner.title,name:base.res_partner_title_ltd +msgid "Ltd" +msgstr "" + #. module: base #: help:workflow.transition,group_id:0 msgid "The group that a user must have to be authorized to validate this transition." @@ -5620,11 +5628,6 @@ msgstr "" msgid "Attachments" msgstr "" -#. module: base -#: model:ir.model,name:base.model_maintenance_contract_wizard -msgid "maintenance.contract.wizard" -msgstr "" - #. module: base #: model:ir.ui.menu,name:base.menu_base_partner #: model:ir.ui.menu,name:base.menu_sale_config_sales @@ -6075,6 +6078,11 @@ msgstr "" msgid "ir.actions.report.xml" msgstr "" +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_miss +msgid "Mss" +msgstr "" + #. module: base #: model:ir.model,name:base.model_ir_ui_view msgid "ir.ui.view" @@ -6192,11 +6200,6 @@ msgstr "" msgid "Ms." msgstr "" -#. module: base -#: model:res.partner.title,shortcut:base.res_partner_title_ltd -msgid "Ltd." -msgstr "" - #. module: base #: model:res.country,name:base.ch msgid "Switzerland" @@ -7069,11 +7072,6 @@ msgstr "" msgid "Name of the method to be called on the object when this scheduler is executed." msgstr "" -#. module: base -#: model:res.company,overdue_msg:base.main_company -msgid "Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting department" -msgstr "" - #. module: base #: view:ir.actions.report.xml:0 msgid "Miscellaneous" @@ -7163,6 +7161,11 @@ msgstr "" msgid "5. %y, %Y ==> 08, 2008" msgstr "" +#. module: base +#: model:res.partner.title,shortcut:base.res_partner_title_ltd +msgid "ltd" +msgstr "" + #. module: base #: field:ir.model.fields,model_id:0 #: field:ir.values,res_id:0 @@ -7532,11 +7535,6 @@ msgstr "" msgid "Default multi company" msgstr "" -#. module: base -#: model:res.partner.title,shortcut:base.res_partner_title_sir -msgid "Sr." -msgstr "" - #. module: base #: view:res.request:0 msgid "Send" @@ -8216,11 +8214,6 @@ msgstr "" msgid "View Name" msgstr "" -#. module: base -#: model:ir.model,name:base.model_res_groups -msgid "Access Groups" -msgstr "" - #. module: base #: selection:base.language.install,lang:0 msgid "Italian / Italiano" @@ -8352,6 +8345,7 @@ msgid "Delivery" msgstr "" #. module: base +#: model:res.partner.title,name:base.res_partner_title_pvt_ltd #: model:res.partner.title,shortcut:base.res_partner_title_pvt_ltd msgid "Corp." msgstr "" From 70c57a70a927a8ca5bcf19bcab6ecb03291dd3b1 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 20 Dec 2010 11:19:58 +0100 Subject: [PATCH 07/11] [FIX] Fixed problem with pings and openerp.com web server. bzr revid: nicolas.vanhoren@openerp.com-20101220101958-v8zxw8q1rewzsk5p --- bin/addons/base/publisher_warranty/publisher_warranty.py | 6 ++++-- bin/tools/config.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/addons/base/publisher_warranty/publisher_warranty.py b/bin/addons/base/publisher_warranty/publisher_warranty.py index 438ef7b4128..4fc5a37735f 100644 --- a/bin/addons/base/publisher_warranty/publisher_warranty.py +++ b/bin/addons/base/publisher_warranty/publisher_warranty.py @@ -317,8 +317,10 @@ def get_sys_logs(cr, uid): } add_arg = {"timeout":30} if sys.version_info >= (2,6) else {} - uo = urllib2.urlopen(config.get("publisher_warranty_url"), - urllib.urlencode({'arg0': msg, "action": "update",}), **add_arg) + arguments = {'arg0': msg, "action": "update",} + arguments_raw = urllib.urlencode(arguments) + url = config.get("publisher_warranty_url") + uo = urllib2.urlopen(url, arguments_raw, **add_arg) try: submit_result = uo.read() finally: diff --git a/bin/tools/config.py b/bin/tools/config.py index 0fe2664c2a9..0c47c2a61bc 100644 --- a/bin/tools/config.py +++ b/bin/tools/config.py @@ -91,7 +91,7 @@ class configmanager(object): 'static_http_url_prefix': None, 'secure_cert_file': 'server.cert', 'secure_pkey_file': 'server.pkey', - 'publisher_warranty_url': 'http://services.openerp.com/publisher-warranty', + 'publisher_warranty_url': 'http://services.openerp.com/publisher-warranty/', } self.blacklist_for_save = set(["publisher_warranty_url"]) From a073aea2a473253b699366dc2578ed35d301448f Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 22 Dec 2010 14:50:05 +0100 Subject: [PATCH 08/11] [FIX] doc/INSTALL: mention yaml dependency, added to doc.openerp.com too bzr revid: odo@openerp.com-20101222135005-t23nu4s2gv83hy0q --- doc/INSTALL | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/INSTALL b/doc/INSTALL index 73c33b5485d..254b7e7b5a0 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -14,6 +14,7 @@ You need the following software installed: * Reportlab pdf generation library for python * lxml python module * pytz python module + * PyYaml python module (install with: easy_install PyYaml) Some dependencies are only required for specific purposes: From 25d6d96be8cf2e66c8629bcc5e86a21afc01a0a7 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 22 Dec 2010 17:10:45 +0100 Subject: [PATCH 09/11] [FIX] res.currency: moved account-related res.currency code to account module lp bug: https://launchpad.net/bugs/557325 fixed bzr revid: odo@openerp.com-20101222161045-65kzccw65ya55jm9 --- bin/addons/base/res/res_currency.py | 32 ++++++++++++----------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/bin/addons/base/res/res_currency.py b/bin/addons/base/res/res_currency.py index 30beb8a2219..6d07dbd47e7 100644 --- a/bin/addons/base/res/res_currency.py +++ b/bin/addons/base/res/res_currency.py @@ -88,16 +88,9 @@ class res_currency(osv.osv): def is_zero(self, cr, uid, currency, amount): return abs(self.round(cr, uid, currency, amount)) < currency.rounding - def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True, context=None, account=None, account_invert=False): + def _get_conversion_rate(self, cr, uid, from_currency, to_currency, context=None): if context is None: context = {} - if not from_currency_id: - from_currency_id = to_currency_id - if not to_currency_id: - to_currency_id = from_currency_id - xc = self.browse(cr, uid, [from_currency_id,to_currency_id], context=context) - from_currency = (xc[0].id == from_currency_id and xc[0]) or xc[1] - to_currency = (xc[0].id == to_currency_id and xc[0]) or xc[1] if from_currency['rate'] == 0 or to_currency['rate'] == 0: date = context.get('date', time.strftime('%Y-%m-%d')) if from_currency['rate'] == 0: @@ -107,22 +100,23 @@ class res_currency(osv.osv): raise osv.except_osv(_('Error'), _('No rate found \n' \ 'for the currency: %s \n' \ 'at the date: %s') % (currency_symbol, date)) - rate = to_currency.rate/from_currency.rate - if account and (account.currency_mode=='average') and account.currency_id: - q = self.pool.get('account.move.line')._query_get(cr, uid, context=context) - cr.execute('select sum(debit-credit),sum(amount_currency) from account_move_line l ' \ - 'where l.currency_id=%s and l.account_id=%s and '+q, (account.currency_id.id,account.id,)) - tot1,tot2 = cr.fetchone() - if tot2 and not account_invert: - rate = float(tot1)/float(tot2) - elif tot1 and account_invert: - rate = float(tot2)/float(tot1) - if to_currency_id==from_currency_id: + return to_currency.rate/from_currency.rate + + def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True, context=None): + if not from_currency_id: + from_currency_id = to_currency_id + if not to_currency_id: + to_currency_id = from_currency_id + xc = self.browse(cr, uid, [from_currency_id,to_currency_id], context=context) + from_currency = (xc[0].id == from_currency_id and xc[0]) or xc[1] + to_currency = (xc[0].id == to_currency_id and xc[0]) or xc[1] + if to_currency_id == from_currency_id: if round: return self.round(cr, uid, to_currency, from_amount) else: return from_amount else: + rate = self._get_conversion_rate(cr, uid, from_currency, to_currency, context=context) if round: return self.round(cr, uid, to_currency, from_amount * rate) else: From 1ba93c18e1274b7ace2a31ba00568bd927aaedb3 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 22 Dec 2010 17:45:15 +0100 Subject: [PATCH 10/11] [FIX] convert: avoid treating XML comments as real nodes when loading views lp bug: https://launchpad.net/bugs/693344 fixed bzr revid: odo@openerp.com-20101222164515-k60bq20jzngnnghv --- bin/tools/convert.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/tools/convert.py b/bin/tools/convert.py index 0faebd6aa9e..e46d37f688a 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -45,7 +45,7 @@ import netsvc import osv import pooler from config import config -from osv.orm import except_orm +from osv.orm import except_orm, SKIPPED_ELEMENT_TYPES from tools.translate import _ from yaml_import import convert_yaml_import @@ -93,8 +93,8 @@ def _fix_multiple_roots(node): As a convention we'll surround multiple root with a container "data" element, to be ignored later when parsing. """ - - if len(node) > 1: + real_nodes = [x for x in node if not isinstance(x, SKIPPED_ELEMENT_TYPES)] + if len(real_nodes) > 1: data_node = etree.Element("data") for child in node: data_node.append(child) From ef47084aa4694ee2671b624c3280d77a6c9164a7 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 22 Dec 2010 18:52:58 +0100 Subject: [PATCH 11/11] [FIX] ir.property: record rules should only allow reading current company properties, not child ones as well lp bug: https://launchpad.net/bugs/691541 fixed bzr revid: odo@openerp.com-20101222175258-8aesquwk6v9d4lv4 --- bin/addons/base/ir/ir.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index a05cfcedfdb..6c4c1025880 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1682,7 +1682,7 @@ Property multi-company - ['|',('company_id','child_of',user.company_id.id),('company_id','=',False)] + ['|',('company_id','=',user.company_id.id),('company_id','=',False)]