[MERGE] Merged with main server
bzr revid: tde@openerp.com-20120323143626-c05edvr4zwtz6pvm
This commit is contained in:
commit
70225fb42e
25
.bzrignore
25
.bzrignore
|
@ -1,23 +1,18 @@
|
|||
*.pyc
|
||||
.*.swp
|
||||
.bzrignore
|
||||
.idea
|
||||
.project
|
||||
.pydevproject
|
||||
.ropeproject
|
||||
.settings
|
||||
.DS_Store
|
||||
openerp/addons/*
|
||||
openerp/filestore*
|
||||
.Python
|
||||
include
|
||||
lib
|
||||
bin/activate
|
||||
bin/activate_this.py
|
||||
bin/easy_install
|
||||
bin/easy_install-2.6
|
||||
bin/pip
|
||||
bin/python
|
||||
bin/python2.6
|
||||
*.pyc
|
||||
*.pyo
|
||||
bin/*
|
||||
build/
|
||||
bin/yolk
|
||||
bin/pil*.py
|
||||
.project
|
||||
.pydevproject
|
||||
.settings
|
||||
include/
|
||||
lib/
|
||||
share/
|
|
@ -165,11 +165,16 @@ def dumpstacks(sig, frame):
|
|||
""" Signal handler: dump a stack trace for each existing thread."""
|
||||
# code from http://stackoverflow.com/questions/132058/getting-stack-trace-from-a-running-python-application#answer-2569696
|
||||
# modified for python 2.5 compatibility
|
||||
thread_map = dict(threading._active, **threading._limbo)
|
||||
id2name = dict([(threadId, thread.getName()) for threadId, thread in thread_map.items()])
|
||||
threads_info = dict([(th.ident, {'name': th.name,
|
||||
'uid': getattr(th,'uid','n/a')})
|
||||
for th in threading.enumerate()])
|
||||
code = []
|
||||
for threadId, stack in sys._current_frames().items():
|
||||
code.append("\n# Thread: %s(%d)" % (id2name[threadId], threadId))
|
||||
thread_info = threads_info.get(threadId)
|
||||
code.append("\n# Thread: %s (id:%s) (uid:%s)" % \
|
||||
(thread_info and thread_info['name'] or 'n/a',
|
||||
threadId,
|
||||
thread_info and thread_info['uid'] or 'n/a'))
|
||||
for filename, lineno, name, line in traceback.extract_stack(stack):
|
||||
code.append('File: "%s", line %d, in %s' % (filename, lineno, name))
|
||||
if line:
|
||||
|
|
|
@ -199,7 +199,7 @@
|
|||
<field name="code">cf</field>
|
||||
</record>
|
||||
<record id="cd" model="res.country">
|
||||
<field name="name">Congo, The Democratic Republic of the</field>
|
||||
<field name="name">Congo, Democratic Republic of the</field>
|
||||
<field name="code">cd</field>
|
||||
</record>
|
||||
<record id="cg" model="res.country">
|
||||
|
@ -1373,7 +1373,7 @@
|
|||
|
||||
<record id="INR" model="res.currency">
|
||||
<field name="name">INR</field>
|
||||
<field name="symbol">Rs</field>
|
||||
<field name="symbol">₹</field>
|
||||
<field name="rounding">0.01</field>
|
||||
<field name="accuracy">4</field>
|
||||
<field name="company_id" ref="main_company"/>
|
||||
|
|
|
@ -27,8 +27,10 @@
|
|||
parent="base.menu_custom" name="Reporting" sequence="30"
|
||||
/>
|
||||
|
||||
<menuitem id="base.menu_reporting" name="Reporting" parent="base.menu_administration" sequence="11"
|
||||
groups="base.group_extended"/>
|
||||
<menuitem id="base.menu_reporting" name="Reporting" sequence="45" groups="base.group_extended"/>
|
||||
<menuitem id="base.menu_dasboard" name="Dashboards" sequence="0" parent="base.menu_reporting" groups="base.group_extended"/>
|
||||
<menuitem id="menu_audit" name="Audit" parent="base.menu_reporting" sequence="50"/>
|
||||
<menuitem id="base.menu_reporting_config" name="Configuration" parent="base.menu_reporting" sequence="100"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2012-01-08 15:06+0000\n"
|
||||
"Last-Translator: kifcaliph <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-03-19 10:06+0000\n"
|
||||
"Last-Translator: Abdulwhhab A. Al-Shehri <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-03-10 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-20 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 14969)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -367,7 +367,7 @@ msgstr "اسم المعالج"
|
|||
#. module: base
|
||||
#: model:res.groups,name:base.group_partner_manager
|
||||
msgid "Partner Manager"
|
||||
msgstr ""
|
||||
msgstr "إدارة الشركاء"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_customer_relationship_management
|
||||
|
@ -388,7 +388,7 @@ msgstr "تجميع غير ممكن"
|
|||
#. module: base
|
||||
#: field:ir.module.category,child_ids:0
|
||||
msgid "Child Applications"
|
||||
msgstr ""
|
||||
msgstr "التطبيقات الفرعية"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,credit_limit:0
|
||||
|
@ -408,7 +408,7 @@ msgstr "تاريخ التحديث"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_action_rule
|
||||
msgid "Automated Action Rules"
|
||||
msgstr ""
|
||||
msgstr "قواعد الاحداث التلقائية"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
|
@ -473,11 +473,13 @@ msgid ""
|
|||
"The user this filter is available to. When left empty the filter is usable "
|
||||
"by the system only."
|
||||
msgstr ""
|
||||
"مرشحات المستخدم غير متوفرة. عندما يترك فارغا فان المرشح يستخدم بواسطة النظام "
|
||||
"فقط."
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,website:0
|
||||
msgid "Website of Partner."
|
||||
msgstr ""
|
||||
msgstr "موقع إلكتروني للشريك."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,views:0
|
||||
|
@ -506,7 +508,7 @@ msgstr "تنسيق التاريخ"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_report_designer
|
||||
msgid "OpenOffice Report Designer"
|
||||
msgstr ""
|
||||
msgstr "مصمم تقارير اوبن اوفيس"
|
||||
|
||||
#. module: base
|
||||
#: field:res.bank,email:0
|
||||
|
@ -566,7 +568,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_layout
|
||||
msgid "Sales Orders Print Layout"
|
||||
msgstr ""
|
||||
msgstr "تنسيق طباعة اوامر البيع"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -576,7 +578,7 @@ msgstr "الأسبانية"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
|
||||
msgid "Invoice on Timesheets"
|
||||
msgstr ""
|
||||
msgstr "فاتورة على جداول زمنية"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
|
@ -700,7 +702,7 @@ msgstr "تمّت عملية التصدير"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin_outlook
|
||||
msgid "Outlook Plug-In"
|
||||
msgstr ""
|
||||
msgstr "إضافات الاوت لوك"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -727,7 +729,7 @@ msgstr "الأردن"
|
|||
#. module: base
|
||||
#: help:ir.cron,nextcall:0
|
||||
msgid "Next planned execution date for this job."
|
||||
msgstr ""
|
||||
msgstr "تاريخ الحدث المقرر لاحقا لهذه الوظيفة."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:139
|
||||
|
@ -743,7 +745,7 @@ msgstr "إريتريا"
|
|||
#. module: base
|
||||
#: sql_constraint:res.company:0
|
||||
msgid "The company name must be unique !"
|
||||
msgstr ""
|
||||
msgstr "اسم الشركة يجب أن يكون فريداً !"
|
||||
|
||||
#. module: base
|
||||
#: view:res.config:0
|
||||
|
@ -778,7 +780,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:ir.mail_server:0
|
||||
msgid "Security and Authentication"
|
||||
msgstr ""
|
||||
msgstr "الحماية و التحقق من الصلاحيات"
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
|
@ -879,7 +881,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Email Preferences"
|
||||
msgstr ""
|
||||
msgstr "تفضيلات البريد الالكتروني"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_audittrail
|
||||
|
@ -971,7 +973,7 @@ msgstr "نييوي"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_membership
|
||||
msgid "Membership Management"
|
||||
msgstr ""
|
||||
msgstr "إدارة الإشتراكات"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.module.module,license:0
|
||||
|
@ -998,7 +1000,7 @@ msgstr "أنواع مراجع الطلبات"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_google_base_account
|
||||
msgid "Google Users"
|
||||
msgstr ""
|
||||
msgstr "مستخدمي جوجل"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.server.object.lines,value:0
|
||||
|
@ -1035,6 +1037,7 @@ msgstr "ملف TGZ"
|
|||
msgid ""
|
||||
"Users added to this group are automatically added in the following groups."
|
||||
msgstr ""
|
||||
"الاشخاص المضافون الى هذه المجموعة أضيفوا تلقائيا الى المجموعات التالية."
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -1088,7 +1091,7 @@ msgstr "لا يمكن استخدام كلمات مرور فارغة لأسباب
|
|||
#: code:addons/base/ir/ir_mail_server.py:192
|
||||
#, python-format
|
||||
msgid "Connection test failed!"
|
||||
msgstr ""
|
||||
msgstr "فشلت محاولة الاتصال!"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.server,state:0
|
||||
|
@ -1209,7 +1212,7 @@ msgstr "الأسبانية / Español (GT)"
|
|||
#. module: base
|
||||
#: field:ir.mail_server,smtp_port:0
|
||||
msgid "SMTP Port"
|
||||
msgstr ""
|
||||
msgstr "المنفذ SMTP"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_import_sugarcrm
|
||||
|
@ -1231,7 +1234,7 @@ msgstr ""
|
|||
#: code:addons/base/module/wizard/base_language_install.py:55
|
||||
#, python-format
|
||||
msgid "Language Pack"
|
||||
msgstr ""
|
||||
msgstr "حزمة لغة"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_tests
|
||||
|
@ -1289,11 +1292,14 @@ msgid ""
|
|||
"reference it\n"
|
||||
"- creation/update: a mandatory field is not correctly set"
|
||||
msgstr ""
|
||||
"لا يمكن إكمال العملية، ربما بسبب أحد الاسباب التالية:\n"
|
||||
"-الحذف: ربما تكون تحاول حذف سجل بينما هناك سجلات اخرى تشير اليه.\n"
|
||||
"الانشاء/التحديث: حقل أساسي لم يتم ادخاله بشكل صحيح."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.category,parent_id:0
|
||||
msgid "Parent Application"
|
||||
msgstr ""
|
||||
msgstr "التطبيق الرئيسي"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:222
|
||||
|
@ -1310,12 +1316,12 @@ msgstr "لتصدير لغة جديدة، لا تختر أي لغة."
|
|||
#: model:ir.module.module,shortdesc:base.module_document
|
||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||
msgid "Document Management System"
|
||||
msgstr ""
|
||||
msgstr "نظام ادارة الوثائق"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_claim
|
||||
msgid "Claims Management"
|
||||
msgstr ""
|
||||
msgstr "إدارة المطالبات"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_purchase_root
|
||||
|
@ -1340,6 +1346,9 @@ msgid ""
|
|||
"use the accounting application of OpenERP, journals and accounts will be "
|
||||
"created automatically based on these data."
|
||||
msgstr ""
|
||||
"قم بتكوين الحسابات البنكية لشركتك و اختر ما تريده ان يظهر في اسفل التقارير. "
|
||||
"بإمكانك إعادة ترتيب الحسابات من قائمة العرض. إذا كنت تستخدم ملحق الحسابات, "
|
||||
"سيتم انشاء اليوميات و الحسابات تلقائيا اعتمادا على هذه البيانات."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
|
@ -1359,6 +1368,14 @@ msgid ""
|
|||
" * Commitment Date\n"
|
||||
" * Effective Date\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"أضف تواريخ اضافية الى طلب البيع.\n"
|
||||
"===============================\n"
|
||||
"\n"
|
||||
"يمكنك اضافة التواريخ التالية الى طلب البيع:\n"
|
||||
"* التاريخ المطلوب\n"
|
||||
"* التاريخ الملتزم به\n"
|
||||
"* تاريخ السريان\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_sequence
|
||||
|
@ -1804,7 +1821,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_evaluation
|
||||
msgid "Employee Appraisals"
|
||||
msgstr ""
|
||||
msgstr "تقييمات الموظف"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.server,state:0
|
||||
|
@ -1853,7 +1870,7 @@ msgstr "نموذج ملحق"
|
|||
#. module: base
|
||||
#: field:res.partner.bank,footer:0
|
||||
msgid "Display on Reports"
|
||||
msgstr ""
|
||||
msgstr "عرض على التقارير"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cn
|
||||
|
@ -2050,7 +2067,7 @@ msgstr "وضع العرض"
|
|||
msgid ""
|
||||
"Display this bank account on the footer of printed documents like invoices "
|
||||
"and sales orders."
|
||||
msgstr ""
|
||||
msgstr "عرض هذا الحساب البنكي على أسفل المطبوعات مثل الفواتير وطلبات البيع."
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.import:0
|
||||
|
@ -2159,7 +2176,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_subscription
|
||||
msgid "Recurring Documents"
|
||||
msgstr ""
|
||||
msgstr "وثائق متكررة"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bs
|
||||
|
@ -2244,7 +2261,7 @@ msgstr "المجموعات"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CL) / Español (CL)"
|
||||
msgstr ""
|
||||
msgstr "الأسبانية / Español (CL)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bz
|
||||
|
@ -2517,7 +2534,7 @@ msgstr "استيراد / تصدير"
|
|||
#. module: base
|
||||
#: model:ir.actions.todo.category,name:base.category_tools_customization_config
|
||||
msgid "Tools / Customization"
|
||||
msgstr ""
|
||||
msgstr "أدوات / تخصيصات"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,res_id:0
|
||||
|
@ -2533,7 +2550,7 @@ msgstr "عنوان البريد الإلكتروني"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "French (BE) / Français (BE)"
|
||||
msgstr ""
|
||||
msgstr "الفرنسية / Français (BE)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -2768,7 +2785,7 @@ msgstr "جزيرة نورفولك"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KR) / 한국어 (KR)"
|
||||
msgstr ""
|
||||
msgstr "الكورية / 한국어 (KR)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model:0
|
||||
|
@ -3218,7 +3235,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Finnish / Suomi"
|
||||
msgstr ""
|
||||
msgstr "الفنلندية / Suomi"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.rule,perm_write:0
|
||||
|
@ -3233,7 +3250,7 @@ msgstr "اللقب"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "German / Deutsch"
|
||||
msgstr ""
|
||||
msgstr "الألمانية / Deutsch"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -3581,7 +3598,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_point_of_sale
|
||||
msgid "Point Of Sale"
|
||||
msgstr ""
|
||||
msgstr "نقطة بيع"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:302
|
||||
|
@ -3611,6 +3628,8 @@ msgid ""
|
|||
"Value Added Tax number. Check the box if the partner is subjected to the "
|
||||
"VAT. Used by the VAT legal statement."
|
||||
msgstr ""
|
||||
"رقم ضريبة القيمة المضافة. ضع علامة في هذا المربع اذا كان الشريك خاضع لضريبة "
|
||||
"القيمة المضافة. تستخدم بواسطة كشف ضريبة القيمة المضافة القانونية."
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -3708,7 +3727,7 @@ msgstr "ضريبة القيمة المضافة"
|
|||
#. module: base
|
||||
#: field:res.users,new_password:0
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
msgstr "ضبط كلمة المرور"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -3723,7 +3742,7 @@ msgstr "خطأ! لا يمكنك إنشاء فئات متداخلة."
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "%x - Appropriate date representation."
|
||||
msgstr ""
|
||||
msgstr "%x - صيغة التاريخ المناسب"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_mobile
|
||||
|
@ -3836,7 +3855,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_fetchmail
|
||||
msgid "Email Gateway"
|
||||
msgstr ""
|
||||
msgstr "بوابة البريد الالكتروني"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:439
|
||||
|
@ -3957,7 +3976,7 @@ msgstr "البرتغال"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_share
|
||||
msgid "Share any Document"
|
||||
msgstr ""
|
||||
msgstr "مشاركة اي مستند"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,certificate:0
|
||||
|
@ -4235,6 +4254,8 @@ msgid ""
|
|||
"When no specific mail server is requested for a mail, the highest priority "
|
||||
"one is used. Default priority is 10 (smaller number = higher priority)"
|
||||
msgstr ""
|
||||
"حين إستداعاء البريد من الخادم، يتم اختيار الملف الملقم حسب الاولوية.\r\n"
|
||||
"القيمة الافتراضية هي 10 (الارقام الاصغر= اولوية أعلى)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm_partner_assign
|
||||
|
@ -4291,7 +4312,7 @@ msgstr "\"كود\" لابد أن يكون فريداً"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_expense
|
||||
msgid "Expenses Management"
|
||||
msgstr ""
|
||||
msgstr "إدارة المصروفات و النفقات"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -4438,7 +4459,7 @@ msgstr "غينيا الاستوائية"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_warning
|
||||
msgid "Warning Messages and Alerts"
|
||||
msgstr ""
|
||||
msgstr "رسائل التحذير و الاشعارات"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.import:0
|
||||
|
@ -4613,7 +4634,7 @@ msgstr "ليسوتو"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_vat
|
||||
msgid "VAT Number Validation"
|
||||
msgstr ""
|
||||
msgstr "التحقق من رقم ضريبة القيمة المضافة"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_partner_assign
|
||||
|
@ -4759,7 +4780,7 @@ msgstr "قيمة لاحقة من السجل للمسلسل"
|
|||
#. module: base
|
||||
#: help:ir.mail_server,smtp_user:0
|
||||
msgid "Optional username for SMTP authentication"
|
||||
msgstr ""
|
||||
msgstr "اختياري: اسم المستخدم للتحقق من قبل ملقم البريد"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_actions_actions
|
||||
|
@ -4844,7 +4865,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: help:res.partner.bank,company_id:0
|
||||
msgid "Only if this bank account belong to your company"
|
||||
msgstr ""
|
||||
msgstr "فقط إذا كان هذا الحساب مملوكا لشركتك"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.za
|
||||
|
@ -5171,7 +5192,7 @@ msgstr "حقل"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_long_term
|
||||
msgid "Long Term Projects"
|
||||
msgstr ""
|
||||
msgstr "مشروعات المدى البعيد"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ve
|
||||
|
@ -12982,7 +13003,7 @@ msgstr "الصحراء الغربية"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_account_voucher
|
||||
msgid "Invoicing & Payments"
|
||||
msgstr ""
|
||||
msgstr "الفواتير و المدفوعات"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_res_company_form
|
||||
|
@ -13186,7 +13207,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner.bank,bank_name:0
|
||||
msgid "Bank Name"
|
||||
msgstr ""
|
||||
msgstr "اسم البنك"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ki
|
||||
|
@ -13232,6 +13253,8 @@ msgid ""
|
|||
"are available. To add a new language, you can use the 'Load an Official "
|
||||
"Translation' wizard available from the 'Administration' menu."
|
||||
msgstr ""
|
||||
"اللغة الافتراضية المستخدمة في الواجهات، عندما تكون هناك ترجمات متوفرة. "
|
||||
"لإضافة لغة جديدة، يمكنك استخدام 'تحميل ترجمة رسمية' من قائمة \"إدارة\"."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_es
|
||||
|
@ -13265,7 +13288,7 @@ msgstr "ملف CSV"
|
|||
#: code:addons/base/res/res_company.py:154
|
||||
#, python-format
|
||||
msgid "Phone: "
|
||||
msgstr ""
|
||||
msgstr "هاتف "
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,account_no:0
|
||||
|
@ -13304,7 +13327,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.company,vat:0
|
||||
msgid "Tax ID"
|
||||
msgstr ""
|
||||
msgstr "رقم الضرائب"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,field_description:0
|
||||
|
@ -13426,7 +13449,7 @@ msgstr "الأنشطة"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_product
|
||||
msgid "Products & Pricelists"
|
||||
msgstr ""
|
||||
msgstr "المنتجات و قوائم الاسعار"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,auto_refresh:0
|
||||
|
@ -13477,7 +13500,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.model.data,name:0
|
||||
msgid "External Identifier"
|
||||
msgstr ""
|
||||
msgstr "مُعرف خارجي"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.grant_menu_access
|
||||
|
@ -13542,7 +13565,7 @@ msgstr "تصدير"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_nl
|
||||
msgid "Netherlands - Accounting"
|
||||
msgstr ""
|
||||
msgstr "هولندا - محاسبة"
|
||||
|
||||
#. module: base
|
||||
#: field:res.bank,bic:0
|
||||
|
@ -13651,7 +13674,7 @@ msgstr "الدليل التقني"
|
|||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Address Information"
|
||||
msgstr ""
|
||||
msgstr "معلومات العنوان"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tz
|
||||
|
@ -13676,7 +13699,7 @@ msgstr "جزيرة الكريسماس"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_livechat
|
||||
msgid "Live Chat Support"
|
||||
msgstr ""
|
||||
msgstr "التحدث مع الدعم الفني"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -13876,7 +13899,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: help:ir.actions.act_window,usage:0
|
||||
msgid "Used to filter menu and home actions from the user form."
|
||||
msgstr ""
|
||||
msgstr "تستخدم لتصفية القائمة و الإجراءات الرئيسية من النموذج المستخدم."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sa
|
||||
|
@ -13886,7 +13909,7 @@ msgstr "المملكة العربية السعودية"
|
|||
#. module: base
|
||||
#: help:res.company,rml_header1:0
|
||||
msgid "Appears by default on the top right corner of your printed documents."
|
||||
msgstr ""
|
||||
msgstr "يظهر إفتراضيا في أعلى الزاوية اليمنى من الوثائق المطبوعة."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim
|
||||
|
@ -13989,7 +14012,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_auth_openid
|
||||
msgid "Allow users to login through OpenID."
|
||||
msgstr ""
|
||||
msgstr "السماح للمستخدمين بالدخول باستخدام أوبن أي دي(OpenID)."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_payment
|
||||
|
@ -14036,7 +14059,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_report_designer
|
||||
msgid "Report Designer"
|
||||
msgstr ""
|
||||
msgstr "مصمم التقارير"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_address_book
|
||||
|
@ -14075,7 +14098,7 @@ msgstr "الفرص والفرص المحتملة"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Romanian / română"
|
||||
msgstr ""
|
||||
msgstr "الرومانية / română"
|
||||
|
||||
#. module: base
|
||||
#: view:res.log:0
|
||||
|
@ -14129,7 +14152,7 @@ msgstr "تنفيذ للإنشاء"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.vi
|
||||
msgid "Virgin Islands (USA)"
|
||||
msgstr ""
|
||||
msgstr "جزيرة فيرجين - (الولايات المتحدة اﻻمريكية)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tw
|
||||
|
@ -14169,12 +14192,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.ui.view,field_parent:0
|
||||
msgid "Child Field"
|
||||
msgstr ""
|
||||
msgstr "حقل فرعي."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Detailed algorithm:"
|
||||
msgstr ""
|
||||
msgstr "تفاصيل الخوارزمية."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,usage:0
|
||||
|
@ -14195,7 +14218,7 @@ msgstr "workflow.workitem"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_profile_tools
|
||||
msgid "Miscellaneous Tools"
|
||||
msgstr ""
|
||||
msgstr "أدوات متنوعة."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_tools
|
||||
|
@ -14242,7 +14265,7 @@ msgstr "عرض:"
|
|||
#. module: base
|
||||
#: field:ir.model.fields,view_load:0
|
||||
msgid "View Auto-Load"
|
||||
msgstr ""
|
||||
msgstr "عرض التحميل التلقائي"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:264
|
||||
|
@ -14268,7 +14291,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.ui.menu,web_icon:0
|
||||
msgid "Web Icon File"
|
||||
msgstr ""
|
||||
msgstr "ملف ايقونة الويب"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
|
@ -14289,7 +14312,7 @@ msgstr "Persian / فارسي"
|
|||
#. module: base
|
||||
#: view:ir.actions.act_window:0
|
||||
msgid "View Ordering"
|
||||
msgstr ""
|
||||
msgstr "عرض الطلبات"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_module_upgrade.py:95
|
||||
|
@ -14375,7 +14398,7 @@ msgstr "جزيرة أروبا"
|
|||
#: code:addons/base/module/wizard/base_module_import.py:60
|
||||
#, python-format
|
||||
msgid "File is not a zip file!"
|
||||
msgstr ""
|
||||
msgstr "الملف ليس ملف مضغوط(zip)!!"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ar
|
||||
|
@ -14504,7 +14527,7 @@ msgstr "عقد ضمان الناشر"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Bulgarian / български език"
|
||||
msgstr ""
|
||||
msgstr "البلغارية / български език"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_aftersale
|
||||
|
@ -14514,7 +14537,7 @@ msgstr "خدمات بعد البيع"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr
|
||||
msgid "France - Accounting"
|
||||
msgstr ""
|
||||
msgstr "فرنسا - محاسبة"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
|
@ -14651,7 +14674,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Czech / Čeština"
|
||||
msgstr ""
|
||||
msgstr "التشيكية / Čeština"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_generic_modules
|
||||
|
@ -14778,7 +14801,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin_thunderbird
|
||||
msgid "Thunderbird Plug-In"
|
||||
msgstr ""
|
||||
msgstr "اضافات - ثندربيرد"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_country
|
||||
|
@ -14796,7 +14819,7 @@ msgstr "الدولة"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_messages
|
||||
msgid "In-Project Messaging System"
|
||||
msgstr ""
|
||||
msgstr "نظام المراسلة في المشاريع"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pn
|
||||
|
@ -14827,7 +14850,7 @@ msgstr ""
|
|||
#: view:res.partner:0
|
||||
#: view:res.partner.address:0
|
||||
msgid "Change Color"
|
||||
msgstr ""
|
||||
msgstr "تغيير اللون"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_15
|
||||
|
@ -14861,7 +14884,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.module.module,auto_install:0
|
||||
msgid "Automatic Installation"
|
||||
msgstr ""
|
||||
msgstr "تحميل تلقائي"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.jp
|
||||
|
@ -14930,7 +14953,7 @@ msgstr "ir.actions.server"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ca
|
||||
msgid "Canada - Accounting"
|
||||
msgstr ""
|
||||
msgstr "كندا - محاسبة"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-server\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2012-02-28 16:02+0000\n"
|
||||
"PO-Revision-Date: 2012-03-23 02:33+0000\n"
|
||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||
"Language-Team: Japanese <ja@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-03-10 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-23 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 14996)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -112,7 +112,7 @@ msgstr "ハンガリー語 / マジャール語"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PY) / Español (PY)"
|
||||
msgstr "スペイン語(パラグアイ)"
|
||||
msgstr "スペイン語(パラグアイ)/ Español (PY)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_project_management
|
||||
|
@ -178,7 +178,7 @@ msgstr "参照"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
|
||||
msgid "Belgium - Structured Communication"
|
||||
msgstr "ベルギー-構造化されたコミュニケーション"
|
||||
msgstr "ベルギー-構造化された通信"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,target:0
|
||||
|
@ -591,7 +591,7 @@ msgstr "受注のプリントレイアウト"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (VE) / Español (VE)"
|
||||
msgstr "スペイン語(ベネズエラ)"
|
||||
msgstr "スペイン語(ベネズエラ)/ Español (VE)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
|
||||
|
@ -970,7 +970,7 @@ msgstr "モジュール更新"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (UY) / Español (UY)"
|
||||
msgstr "スペイン語(ウルグアイ)"
|
||||
msgstr "スペイン語(ウルグアイ)/ Español (UY)"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,mobile:0
|
||||
|
@ -1208,7 +1208,7 @@ msgstr "スロバキア語"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (AR) / Español (AR)"
|
||||
msgstr "スペイン語(アルゼンチン)"
|
||||
msgstr "スペイン語(アルゼンチン)/ Español (AR)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ug
|
||||
|
@ -1248,7 +1248,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (GT) / Español (GT)"
|
||||
msgstr "スペイン語(グアテマラ)"
|
||||
msgstr "スペイン語(グアテマラ)/ Español (GT)"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.mail_server,smtp_port:0
|
||||
|
@ -2247,7 +2247,7 @@ msgstr "スペイン語"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KP) / 한국어 (KP)"
|
||||
msgstr "北朝鮮"
|
||||
msgstr "韓国語(北朝鮮) / 한국어 (KP)"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
|
@ -2451,7 +2451,7 @@ msgstr "グループ"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CL) / Español (CL)"
|
||||
msgstr "スペイン語(チリ)"
|
||||
msgstr "スペイン語(チリ) / Español (CL)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bz
|
||||
|
@ -2608,7 +2608,7 @@ msgstr "請求書"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Portugese (BR) / Português (BR)"
|
||||
msgstr "ポルトガル語(ブラジル)"
|
||||
msgstr "ポルトガル語(ブラジル)/ Português (BR)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bb
|
||||
|
@ -2761,7 +2761,7 @@ msgstr "Eメールアドレス"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "French (BE) / Français (BE)"
|
||||
msgstr "フランス語(ベルギー)"
|
||||
msgstr "フランス語(ベルギー)/ Français (BE)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -3018,7 +3018,7 @@ msgstr "ノーフォーク島"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KR) / 한국어 (KR)"
|
||||
msgstr "韓国"
|
||||
msgstr "韓国語(韓国)/ 한국어 (KR)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model:0
|
||||
|
@ -3483,7 +3483,7 @@ msgstr "翻訳者がエクスポートする際に、ファイルのエンコー
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (DO) / Español (DO)"
|
||||
msgstr "スペイン語(ドミニカ共和国)"
|
||||
msgstr "スペイン語(ドミニカ共和国)/ Español (DO)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.na
|
||||
|
@ -4826,7 +4826,7 @@ msgstr "ギリシャ-会計"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (HN) / Español (HN)"
|
||||
msgstr "スペイン語(ホンジュラス)"
|
||||
msgstr "スペイン語(ホンジュラス)/ Español (HN)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.sequence.type:0
|
||||
|
@ -5056,7 +5056,7 @@ msgstr "選択されたモジュールは更新あるいはインストールさ
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PR) / Español (PR)"
|
||||
msgstr "スペイン語(プエルトリコ)"
|
||||
msgstr "スペイン語(プエルトリコ)/ Español (PR)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gt
|
||||
|
@ -5473,7 +5473,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PA) / Español (PA)"
|
||||
msgstr "スペイン語(パナマ)"
|
||||
msgstr "スペイン語(パナマ)/ Español (PA)"
|
||||
|
||||
#. module: base
|
||||
#: view:res.currency:0
|
||||
|
@ -6431,7 +6431,7 @@ msgstr "モジュール品質の分析"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (BO) / Español (BO)"
|
||||
msgstr "スペイン語(ボリビア)"
|
||||
msgstr "スペイン語(ボリビア)/ Español (BO)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.ir_access_act
|
||||
|
@ -7053,7 +7053,7 @@ msgstr "非表示"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Serbian (Latin) / srpski"
|
||||
msgstr "セルビア語"
|
||||
msgstr "セルビア語(ラテン)/ srpski"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.il
|
||||
|
@ -7924,7 +7924,7 @@ msgstr "閉じる"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (MX) / Español (MX)"
|
||||
msgstr "スペイン語(メキシコ)"
|
||||
msgstr "スペイン語(メキシコ)/ Español (MX)"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/publisher_warranty/publisher_warranty.py:145
|
||||
|
@ -8170,7 +8170,7 @@ msgstr "項目が定義されているモジュールのリスト"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Chinese (CN) / 简体中文"
|
||||
msgstr "中国語(简体中文)"
|
||||
msgstr "中国語 / 简体中文"
|
||||
|
||||
#. module: base
|
||||
#: field:res.bank,street:0
|
||||
|
@ -8310,11 +8310,14 @@ msgid ""
|
|||
"interface, which has less features but is easier to use. You can switch to "
|
||||
"the other interface from the User/Preferences menu at any time."
|
||||
msgstr ""
|
||||
"OpenERPは簡易 / "
|
||||
"拡張の2種類のユーザインタフェースを提供します。最初にOpenERPを使う場合は、機能は少ないながらも、使い易い簡易なユーザインタフェースを選択することを"
|
||||
"強くお勧めします。なお、いつでも設定メニューから拡張インタフェースに変更できます。"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cc
|
||||
msgid "Cocos (Keeling) Islands"
|
||||
msgstr ""
|
||||
msgstr "ココス諸島"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,state:0
|
||||
|
@ -8326,22 +8329,22 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "11. %U or %W ==> 48 (49th week)"
|
||||
msgstr ""
|
||||
msgstr "11. %U or %W ==> 48(49番目の週)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_partner_bank_type_field
|
||||
msgid "Bank type fields"
|
||||
msgstr ""
|
||||
msgstr "銀行タイプ項目"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Dutch / Nederlands"
|
||||
msgstr ""
|
||||
msgstr "オランダ"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.company,paper_format:0
|
||||
msgid "US Letter"
|
||||
msgstr ""
|
||||
msgstr "US レター"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_stock_location
|
||||
|
@ -8433,6 +8436,63 @@ msgid ""
|
|||
"from Gate A\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールはプッシュ / プル倉庫フローを効果的に実行する倉庫アプリケーションを補います。\n"
|
||||
"============================================================================="
|
||||
"===============================\n"
|
||||
"\n"
|
||||
"典型的な利用例:\n"
|
||||
" * 製品製造チェーンの管理\n"
|
||||
" * 製品ごとのデフォルトロケーションの管理\n"
|
||||
" * 以下のようなビジネス要求による倉庫の中の経路の定義:\n"
|
||||
" - 品質管理\n"
|
||||
" - 販売サービスの後\n"
|
||||
" - サプライヤ返品\n"
|
||||
"\n"
|
||||
" * レンタル製品の自動返品を生成することでレンタル管理を助けます。\n"
|
||||
"\n"
|
||||
"ひとたびこのモジュールがインストールされたら、製品フォームに追加タブが現れます。\n"
|
||||
"そこで、プッシュとプルのフローの仕様を加えることができます。\n"
|
||||
"CPU1製品のプッシュとプルのデモデータ:\n"
|
||||
"\n"
|
||||
"プッシュフロー\n"
|
||||
"----------\n"
|
||||
"プッシュフローは、一定の製品が常に必要に応じて他の場所に対応して動くように到着する時、\n"
|
||||
"オプションとして一定の遅延がある時に役立ちます。\n"
|
||||
"オリジナルの倉庫アプリケーションは既にそれ自身にプッシュフローの仕様をサポートしています。\n"
|
||||
"しかし、これは製品ごとに改良されません。\n"
|
||||
"\n"
|
||||
"プッシュプローの仕様は、どの場所がどの場所と何のパラメータでつながれているかを示します。\n"
|
||||
"製品の所定の量が供給元の場所で動きがあるや否や結び付けられた動作がフロー定義\n"
|
||||
"(目的地の場所、遅延、移動の種類、ジャーナル他)でセットされたパラメータにしたがって\n"
|
||||
"自動的に予測されます。\n"
|
||||
"この新しい動きはパラメータにしたがって自動的に実行されるか、手動確認を要求します。\n"
|
||||
"\n"
|
||||
"プルフロー\n"
|
||||
"----------\n"
|
||||
"プルフローはプッシュフローとは少し異なっています。これは製品の動きの処理には関係せず、\n"
|
||||
"むしろ調達した注文の処理に関係します。直接の商品ではなくニーズに依ります。\n"
|
||||
"プルフローの古典的な例は、供給に責任を持つ親会社を持つアウトレット会社です。\n"
|
||||
"\n"
|
||||
" [ 顧客 ] <- A - [ アウトレット ] <- B - [ 親会社 ] <~ C ~ [ 供給者 ]\n"
|
||||
"\n"
|
||||
"新しい調達注文(A:例として注文の確認が来ます)がアウトレットに到着すると、それは親会社から要求されたもう一つの調達注文に変換されます(B:プルフローのタ"
|
||||
"イプは'move')。親会社により調達注文Bが処理される時、そしてその製品が在庫切れの時、それは供給者からの受注(C:プルフローのタイプは購入)に変換され"
|
||||
"ます。結果として調達注文、ニーズは顧客と供給者の間の全てにプッシュされます。\n"
|
||||
"\n"
|
||||
"技術的には、プルフローは調達注文と別に処理することを許します。製品に対しての考慮に依存するのみならず、その製品のニーズを持つ場所(即ち調達注文の目的地)に"
|
||||
"依存します。\n"
|
||||
"\n"
|
||||
"使用例\n"
|
||||
"--------\n"
|
||||
"\n"
|
||||
"以下のデモデータを使います:\n"
|
||||
" CPU1:ショップ1からいくらかのCPU1を売り、スケジューラを走らせます。\n"
|
||||
" - 倉庫:配達注文,ショップ1: 受付\n"
|
||||
" CPU3:\n"
|
||||
" - 商品を受け取る時、それは品質管理場所に行き、棚2に保管されます。\n"
|
||||
" - 顧客に配達する時:ピックリスト -> 梱包 -> GateAから配達注文\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_marketing
|
||||
|
@ -8444,21 +8504,27 @@ msgid ""
|
|||
"Contains the installer for marketing-related modules.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"マーケティングメニュー\n"
|
||||
"===================\n"
|
||||
"\n"
|
||||
"マーケティング関連のモジュールのインストーラを含んでいます。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_knowledge_management
|
||||
msgid "Knowledge Management"
|
||||
msgstr ""
|
||||
msgstr "知識管理"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.bank_account_update
|
||||
msgid "Company Bank Accounts"
|
||||
msgstr ""
|
||||
msgstr "顧客銀行口座"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.mail_server,smtp_pass:0
|
||||
msgid "Optional password for SMTP authentication"
|
||||
msgstr ""
|
||||
msgstr "SMTP認証のための任意のパスワード"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project_mrp
|
||||
|
@ -8491,6 +8557,25 @@ msgid ""
|
|||
"task is completed.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"自動的に調達ラインからプロジェクトタスクの生成します。\n"
|
||||
"==========================================================\n"
|
||||
"\n"
|
||||
"対応する製品が以下の特徴を満たす場合、このモジュールはそれぞれの調達注文ライン\n"
|
||||
"(例えば販売注文ライン)のための新しいタスクを作成します。\n"
|
||||
"\n"
|
||||
" ・ タイプ = サービス\n"
|
||||
" ・ 調達手法(注文実現) = MTO(受注生産)\n"
|
||||
" ・ 供給 / 調達手法 = 産物\n"
|
||||
"\n"
|
||||
"もし先頭のプロジェクトが製品フォーム(調達タブ)で定義されているなら、新しいタスクは\n"
|
||||
"その特定のプロジェクトの中に作られます。\n"
|
||||
"それ以外の場合は、新しいタスクはどんなプロジェクトにも属さず、後で手作業でプロジェクトに\n"
|
||||
"追加されるかも知れません。\n"
|
||||
"\n"
|
||||
"プロジェクトのタスクが完了するか、中止される時、調達ラインに対応するワークフローはそれに応じて更新されます。\n"
|
||||
"例えば、もしこの調達が受注ラインに対応するなら、仕事が完了する時に受注ラインは配達されたと考えられます。\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_config.py:348
|
||||
|
@ -8500,6 +8585,9 @@ msgid ""
|
|||
"\n"
|
||||
"This addon is already installed on your system"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"このアドオンは既にシステムにインストール済みです。"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -8508,11 +8596,14 @@ msgid ""
|
|||
" Module for the Check writing and check printing \n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" チェックの作成と印刷のためのモジュール \n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.bank.type,name:base.bank_normal
|
||||
msgid "Normal Bank Account"
|
||||
msgstr ""
|
||||
msgstr "通常の銀行口座"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.wizard:0
|
||||
|
@ -8542,6 +8633,21 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールは受信したEメールを元に自動的にプロジェクトタスクを生成します。\n"
|
||||
"===========================================================================\n"
|
||||
"\n"
|
||||
"所定のメールボックスに到着した新しいEメールを元にタスクの生成を許します。\n"
|
||||
"同様にCRMアプリケーションがリード / オポチュニティを持つもの。\n"
|
||||
"メールボックス統合の設定のために2つの共通の選択肢があります:\n"
|
||||
"\n"
|
||||
" ・ fetchmailモジュールをインストールし、新しいメールボックスを設定し、それから\n"
|
||||
" 受信EメールのためにProject Tasksをターゲットとして選んで下さい。\n"
|
||||
" ・ mail gatewayスクリプトが提供したmailモジュールに基づいて、メールサーバを手作業で設定して、\n"
|
||||
" そしてproject.taskモデルにそれを接続して下さい。\n"
|
||||
"\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_membership
|
||||
|
@ -8561,6 +8667,18 @@ msgid ""
|
|||
"invoice and send propositions for membership renewal.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールはメンバーシップの管理のために、全ての管理操作を許可します。\n"
|
||||
"=========================================================================\n"
|
||||
"\n"
|
||||
"以下の異なった種類の会員をサポートします:\n"
|
||||
"・ 無料会員\n"
|
||||
"・ 関連会員(例:全ての子会社のメンバーシップのためのグループ加入)\n"
|
||||
"・ 有料会員\n"
|
||||
"・ 特別な会員価格など\n"
|
||||
"\n"
|
||||
"メンバーシップ更新のための請求書を作り、条件書を送付するために、これは販売と会計と統合されます。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_attendance
|
||||
|
@ -8573,46 +8691,52 @@ msgid ""
|
|||
"actions(Sign in/Sign out) performed by them.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールは従業員の出勤管理を目指しています。\n"
|
||||
"==================================================\n"
|
||||
"\n"
|
||||
"従業員自身が行ったサインイン / サインアウトの行動をベースにして、従業員の出勤の根拠を保持します。\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,maintainer:0
|
||||
msgid "Maintainer"
|
||||
msgstr ""
|
||||
msgstr "保守担当者"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.sequence,suffix:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
msgstr "サフィックス"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mo
|
||||
msgid "Macau"
|
||||
msgstr ""
|
||||
msgstr "マカオ"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.report.xml,name:base.res_partner_address_report
|
||||
msgid "Labels"
|
||||
msgstr ""
|
||||
msgstr "ラベル"
|
||||
|
||||
#. module: base
|
||||
#: field:partner.massmail.wizard,email_from:0
|
||||
msgid "Sender's email"
|
||||
msgstr ""
|
||||
msgstr "送信者のEメール"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,field_name:0
|
||||
msgid "Object Field"
|
||||
msgstr ""
|
||||
msgstr "オブジェクト項目"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PE) / Español (PE)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(ペルー)/ Español (PE)"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "French (CH) / Français (CH)"
|
||||
msgstr ""
|
||||
msgstr "フランス語(スイス)/ Français (CH)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,subject:0
|
||||
|
@ -8621,6 +8745,8 @@ msgid ""
|
|||
"the same values as those available in the condition field, e.g. `Hello [[ "
|
||||
"object.partner_id.name ]]`"
|
||||
msgstr ""
|
||||
"電子メールの件名には条件項目で使用可能な同じ値を元にした二重括弧で囲まれた表現、例えば、‘こんにちは[[ object.partner_id.name "
|
||||
"]]’を含むことができます。"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_sequence
|
||||
|
@ -8639,11 +8765,24 @@ msgid ""
|
|||
" * Number Padding\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールは会計項目のために内部の連続番号を維持管理します。\n"
|
||||
"======================================================================\n"
|
||||
"\n"
|
||||
"あなたは会計の順序が維持されるように設定することができます。\n"
|
||||
"\n"
|
||||
"以下の順序の属性をカスタマイズできます:\n"
|
||||
" ・ プレフィックス(接頭辞)\n"
|
||||
" ・ サフィックス(接尾辞)\n"
|
||||
" ・ 次の番号\n"
|
||||
" ・ 増分番号\n"
|
||||
" ・ 番号埋め文字\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.to
|
||||
msgid "Tonga"
|
||||
msgstr ""
|
||||
msgstr "トンガ"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,serialization_field_id:0
|
||||
|
@ -8652,35 +8791,37 @@ msgid ""
|
|||
"serialization field, instead of having its own database column. This cannot "
|
||||
"be changed after creation."
|
||||
msgstr ""
|
||||
"もしセットする場合、この項目は自身のデータベースのカラムの代わりに、シリアライズされた項目の疎な構造の中に保存されます。これを作成した後で、変更することは"
|
||||
"できません。"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner.bank:0
|
||||
msgid "Bank accounts belonging to one of your companies"
|
||||
msgstr ""
|
||||
msgstr "銀行口座はあなたの会社の一つに属します。"
|
||||
|
||||
#. module: base
|
||||
#: help:res.users,action_id:0
|
||||
msgid ""
|
||||
"If specified, this action will be opened at logon for this user, in addition "
|
||||
"to the standard menu."
|
||||
msgstr ""
|
||||
msgstr "もし指定された場合,このアクションは標準メニューに追加され、このユーザに対してログイン時に開かれます。"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.module.module,complexity:0
|
||||
msgid "Easy"
|
||||
msgstr ""
|
||||
msgstr "易しい"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.values:0
|
||||
msgid "Client Actions"
|
||||
msgstr ""
|
||||
msgstr "顧客アクション"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,trigger_obj_id:0
|
||||
msgid ""
|
||||
"The field on the current object that links to the target object record (must "
|
||||
"be a many2one, or an integer field with the record ID)"
|
||||
msgstr ""
|
||||
msgstr "現在のオブジェクトのその項目は、目的のオブジェクトレコード(レコードIDを持ち多対1の関係か、または整数項目である)にリンクします。"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:423
|
||||
|
@ -8689,18 +8830,20 @@ msgid ""
|
|||
"You try to upgrade a module that depends on the module: %s.\n"
|
||||
"But this module is not available in your system."
|
||||
msgstr ""
|
||||
"あなたは次のモジュールに依存するモジュールをアップグレードしようとしています: %s.\n"
|
||||
"しかし、そのモジュールはあなたのシステムでは使用できません。"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,act_to:0
|
||||
msgid "Destination Activity"
|
||||
msgstr ""
|
||||
msgstr "目的地のアクティビティ"
|
||||
|
||||
#. module: base
|
||||
#: help:res.currency,position:0
|
||||
msgid ""
|
||||
"Determines where the currency symbol should be placed after or before the "
|
||||
"amount."
|
||||
msgstr ""
|
||||
msgstr "通貨記号が金額の前後、どちらに置かれるべきなのかを決定します。"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_base_update_translations
|
||||
|
@ -8710,7 +8853,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner.category,parent_id:0
|
||||
msgid "Parent Category"
|
||||
msgstr ""
|
||||
msgstr "親分類"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -8721,12 +8864,12 @@ msgstr ""
|
|||
#: selection:res.partner.address,type:0
|
||||
#: selection:res.partner.title,domain:0
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
msgstr "コンタクト"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_at
|
||||
msgid "Austria - Accounting"
|
||||
msgstr ""
|
||||
msgstr "オーストラリア-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_ui_menu
|
||||
|
@ -8737,39 +8880,39 @@ msgstr ""
|
|||
#: model:ir.module.category,name:base.module_category_project_management
|
||||
#: model:ir.module.module,shortdesc:base.module_project
|
||||
msgid "Project Management"
|
||||
msgstr ""
|
||||
msgstr "プロジェクト管理"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.us
|
||||
msgid "United States"
|
||||
msgstr ""
|
||||
msgstr "アメリカ合衆国"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_fundraising
|
||||
msgid "Fundraising"
|
||||
msgstr ""
|
||||
msgstr "募金"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Cancel Uninstall"
|
||||
msgstr ""
|
||||
msgstr "アンインストールのキャンセル"
|
||||
|
||||
#. module: base
|
||||
#: view:res.bank:0
|
||||
#: view:res.partner:0
|
||||
#: view:res.partner.address:0
|
||||
msgid "Communication"
|
||||
msgstr ""
|
||||
msgstr "通信"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_analytic
|
||||
msgid "Analytic Accounting"
|
||||
msgstr ""
|
||||
msgstr "分析会計"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
msgid "RML Report"
|
||||
msgstr ""
|
||||
msgstr "RMLレポート"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_server_object_lines
|
||||
|
@ -8779,23 +8922,23 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be
|
||||
msgid "Belgium - Accounting"
|
||||
msgstr ""
|
||||
msgstr "ベルギー-会計"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:622
|
||||
#, python-format
|
||||
msgid "Module %s: Invalid Quality Certificate"
|
||||
msgstr ""
|
||||
msgstr "モジュール %s: 無効な品質証明書"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.kw
|
||||
msgid "Kuwait"
|
||||
msgstr ""
|
||||
msgstr "クウェート"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.workitem,inst_id:0
|
||||
msgid "Instance"
|
||||
msgstr ""
|
||||
msgstr "インスタンス"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.report.xml,attachment:0
|
||||
|
@ -8804,23 +8947,25 @@ msgid ""
|
|||
"Keep empty to not save the printed reports. You can use a python expression "
|
||||
"with the object and time variables."
|
||||
msgstr ""
|
||||
"これは印刷結果を保存するために使われる添付ファイルのファイル名です。印刷レポートを保存しない場合は、空の状態にして下さい。オブジェクトと時間変数にはpyt"
|
||||
"hon表現を使うことができます。"
|
||||
|
||||
#. module: base
|
||||
#: sql_constraint:ir.model.data:0
|
||||
msgid ""
|
||||
"You cannot have multiple records with the same external ID in the same "
|
||||
"module!"
|
||||
msgstr ""
|
||||
msgstr "同じモジュールの中に、同じ外部IDで複数のレコードを持つことはできません。"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
msgid "Many2One"
|
||||
msgstr ""
|
||||
msgstr "多対1"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ng
|
||||
msgid "Nigeria"
|
||||
msgstr ""
|
||||
msgstr "ナイジェリア"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm_caldav
|
||||
|
@ -8831,41 +8976,46 @@ msgid ""
|
|||
"\n"
|
||||
" * Share meeting with other calendar clients like sunbird\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"ミーティングにおけるCaldavの機能\n"
|
||||
"===========================\n"
|
||||
"\n"
|
||||
" ・ Sunbirdなど他のカレンダークライアントとミーティング情報を共有できます。\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_iban
|
||||
msgid "IBAN Bank Accounts"
|
||||
msgstr ""
|
||||
msgstr "IBAN銀行口座"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,user_ids:0
|
||||
msgid "Accepted Users"
|
||||
msgstr ""
|
||||
msgstr "受け入れられたユーザ"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,web_icon_data:0
|
||||
msgid "Web Icon Image"
|
||||
msgstr ""
|
||||
msgstr "Webアイコンイメージ"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,wkf_model_id:0
|
||||
msgid "Target Object"
|
||||
msgstr ""
|
||||
msgstr "目的のオブジェクト"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.model.fields,select_level:0
|
||||
msgid "Always Searchable"
|
||||
msgstr ""
|
||||
msgstr "常時検索可能"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.hk
|
||||
msgid "Hong Kong"
|
||||
msgstr ""
|
||||
msgstr "香港"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,ref_id:0
|
||||
msgid "ID Ref."
|
||||
msgstr ""
|
||||
msgstr "ID参照"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_partner_address_form
|
||||
|
@ -9337,7 +9487,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (EC) / Español (EC)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(エクアドル)/ Español (EC)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.ui.view,xml_id:0
|
||||
|
@ -9964,7 +10114,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Flemish (BE) / Vlaams (BE)"
|
||||
msgstr ""
|
||||
msgstr "フラマン語(ベルギー)/ Vlaams (BE)"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.cron,interval_number:0
|
||||
|
@ -10817,7 +10967,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CO) / Español (CO)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(コロンビア)/ Español (CO)"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.configuration:0
|
||||
|
@ -10935,7 +11085,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_cn
|
||||
msgid "中国会计科目表 - Accounting"
|
||||
msgstr ""
|
||||
msgstr "中国-会計"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.access:0
|
||||
|
@ -10964,7 +11114,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Chinese (TW) / 正體字"
|
||||
msgstr ""
|
||||
msgstr "中国語(台湾)/ 正體字"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_request
|
||||
|
@ -11433,7 +11583,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CR) / Español (CR)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(コスタリカ)/ Español (CR)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
|
@ -11653,7 +11803,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_br
|
||||
msgid "Brazilian - Accounting"
|
||||
msgstr ""
|
||||
msgstr "ブラジル-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pk
|
||||
|
@ -12328,7 +12478,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (NI) / Español (NI)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(ニカラグア)/ Español (NI)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_product_visible_discount
|
||||
|
@ -12666,7 +12816,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_uk
|
||||
msgid "UK - Accounting"
|
||||
msgstr ""
|
||||
msgstr "イギリス-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project_scrum
|
||||
|
@ -12737,7 +12887,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in
|
||||
msgid "India - Accounting"
|
||||
msgstr ""
|
||||
msgstr "インド-会計"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,expression:0
|
||||
|
@ -12752,7 +12902,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_gt
|
||||
msgid "Guatemala - Accounting"
|
||||
msgstr ""
|
||||
msgstr "グアテマラ-会計"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,args:0
|
||||
|
@ -13713,7 +13863,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_th
|
||||
msgid "Thailand - Accounting"
|
||||
msgstr ""
|
||||
msgstr "タイ-会計"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -14334,7 +14484,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_es
|
||||
msgid "Spanish - Accounting (PGCE 2008)"
|
||||
msgstr ""
|
||||
msgstr "スペイン-会計(PGCE 2008)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_stock_no_autopicking
|
||||
|
@ -14429,7 +14579,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_nl
|
||||
msgid "Netherlands - Accounting"
|
||||
msgstr ""
|
||||
msgstr "オランダ-会計"
|
||||
|
||||
#. module: base
|
||||
#: field:res.bank,bic:0
|
||||
|
@ -14743,7 +14893,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Serbian (Cyrillic) / српски"
|
||||
msgstr ""
|
||||
msgstr "セルビア語(キリル文字)/ српски"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2527
|
||||
|
@ -15137,7 +15287,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_de
|
||||
msgid "Deutschland - Accounting"
|
||||
msgstr ""
|
||||
msgstr "ドイツ-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auction
|
||||
|
@ -15391,7 +15541,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr
|
||||
msgid "France - Accounting"
|
||||
msgstr ""
|
||||
msgstr "フランス-会計"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
|
@ -15720,7 +15870,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (SV) / Español (SV)"
|
||||
msgstr ""
|
||||
msgstr "スペイン語(エルサルバドル)/ Español (SV)"
|
||||
|
||||
#. module: base
|
||||
#: help:res.lang,grouping:0
|
||||
|
@ -15803,7 +15953,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ca
|
||||
msgid "Canada - Accounting"
|
||||
msgstr ""
|
||||
msgstr "カナダ-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
|
||||
|
@ -15842,7 +15992,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ve
|
||||
msgid "Venezuela - Accounting"
|
||||
msgstr ""
|
||||
msgstr "ベネズエラ-会計"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cl
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -54,11 +54,11 @@ class ir_attachment(osv.osv):
|
|||
ima.check(cr, uid, model, mode)
|
||||
self.pool.get(model).check_access_rule(cr, uid, mids, mode, context=context)
|
||||
|
||||
def search(self, cr, uid, args, offset=0, limit=None, order=None,
|
||||
context=None, count=False):
|
||||
ids = super(ir_attachment, self).search(cr, uid, args, offset=offset,
|
||||
limit=limit, order=order,
|
||||
context=context, count=False)
|
||||
def _search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False, access_rights_uid=None):
|
||||
ids = super(ir_attachment, self)._search(cr, uid, args, offset=offset,
|
||||
limit=limit, order=order,
|
||||
context=context, count=count,
|
||||
access_rights_uid=access_rights_uid)
|
||||
if not ids:
|
||||
if count:
|
||||
return 0
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2011 OpenERP S.A (<http://www.openerp.com>)
|
||||
# Copyright (C) 2011-2012 OpenERP S.A (<http://www.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
|
||||
|
@ -22,6 +22,7 @@
|
|||
from email.MIMEText import MIMEText
|
||||
from email.MIMEBase import MIMEBase
|
||||
from email.MIMEMultipart import MIMEMultipart
|
||||
from email.Charset import Charset
|
||||
from email.Header import Header
|
||||
from email.Utils import formatdate, make_msgid, COMMASPACE
|
||||
from email import Encoders
|
||||
|
@ -97,6 +98,26 @@ def encode_header(header_text):
|
|||
return header_text_ascii if header_text_ascii\
|
||||
else Header(header_text_utf8, 'utf-8')
|
||||
|
||||
def encode_header_param(param_text):
|
||||
"""Returns an appropriate RFC2047 encoded representation of the given
|
||||
header parameter value, suitable for direct assignation as the
|
||||
param value (e.g. via Message.set_param() or Message.add_header())
|
||||
RFC2822 assumes that headers contain only 7-bit characters,
|
||||
so we ensure it is the case, using RFC2047 encoding when needed.
|
||||
|
||||
:param param_text: unicode or utf-8 encoded string with header value
|
||||
:rtype: string
|
||||
:return: if ``param_text`` represents a plain ASCII string,
|
||||
return the same 7-bit string, otherwise returns an
|
||||
ASCII string containing the RFC2047 encoded text.
|
||||
"""
|
||||
# For details see the encode_header() method that uses the same logic
|
||||
if not param_text: return ""
|
||||
param_text_utf8 = tools.ustr(param_text).encode('utf-8')
|
||||
param_text_ascii = try_coerce_ascii(param_text_utf8)
|
||||
return param_text_ascii if param_text_ascii\
|
||||
else Charset('utf8').header_encode(param_text_utf8)
|
||||
|
||||
name_with_email_pattern = re.compile(r'("[^<@>]+")\s*<([^ ,<@]+@[^> ,]+)>')
|
||||
address_pattern = re.compile(r'([^ ,<@]+@[^> ,]+)')
|
||||
|
||||
|
@ -232,6 +253,11 @@ class ir_mail_server(osv.osv):
|
|||
|
||||
if user:
|
||||
# Attempt authentication - will raise if AUTH service not supported
|
||||
# The user/password must be converted to bytestrings in order to be usable for
|
||||
# certain hashing schemes, like HMAC.
|
||||
# See also bug #597143 and python issue #5285
|
||||
user = tools.ustr(user).encode('utf-8')
|
||||
password = tools.ustr(password).encode('utf-8')
|
||||
connection.login(user, password)
|
||||
return connection
|
||||
|
||||
|
@ -304,7 +330,7 @@ class ir_mail_server(osv.osv):
|
|||
msg['Cc'] = encode_rfc2822_address_header(COMMASPACE.join(email_cc))
|
||||
if email_bcc:
|
||||
msg['Bcc'] = encode_rfc2822_address_header(COMMASPACE.join(email_bcc))
|
||||
msg['Date'] = formatdate(localtime=True)
|
||||
msg['Date'] = formatdate()
|
||||
# Custom headers may override normal headers or provide additional ones
|
||||
for key, value in headers.iteritems():
|
||||
msg[ustr(key).encode('utf-8')] = encode_header(value)
|
||||
|
@ -329,14 +355,16 @@ class ir_mail_server(osv.osv):
|
|||
|
||||
if attachments:
|
||||
for (fname, fcontent) in attachments:
|
||||
filename_utf8 = ustr(fname).encode('utf-8')
|
||||
filename_rfc2047 = encode_header_param(fname)
|
||||
part = MIMEBase('application', "octet-stream")
|
||||
|
||||
# The default RFC2231 encoding of Message.add_header() works in Thunderbird but not GMail
|
||||
# so we fix it by using RFC2047 encoding for the filename instead.
|
||||
part.set_param('name', filename_rfc2047)
|
||||
part.add_header('Content-Disposition', 'attachment', filename=filename_rfc2047)
|
||||
|
||||
part.set_payload(fcontent)
|
||||
Encoders.encode_base64(part)
|
||||
# Force RFC2231 encoding for attachment filename
|
||||
# See email.message.Message.add_header doc
|
||||
part.add_header('Content-Disposition', 'attachment',
|
||||
filename=('utf-8',None,filename_utf8))
|
||||
msg.attach(part)
|
||||
return msg
|
||||
|
||||
|
@ -364,7 +392,6 @@ class ir_mail_server(osv.osv):
|
|||
:param smtp_user: optional SMTP user, if mail_server_id is not passed
|
||||
:param smtp_password: optional SMTP password to use, if mail_server_id is not passed
|
||||
:param smtp_debug: optional SMTP debug flag, if mail_server_id is not passed
|
||||
:param debug: whether to turn on the SMTP level debugging, output to DEBUG log level
|
||||
:return: the Message-ID of the message that was just sent, if successfully sent, otherwise raises
|
||||
MailDeliveryException and logs root cause.
|
||||
"""
|
||||
|
|
|
@ -35,12 +35,14 @@ import pooler
|
|||
_logger = logging.getLogger(__name__)
|
||||
|
||||
def _get_fields_type(self, cr, uid, context=None):
|
||||
# Avoid too many nested `if`s below, as RedHat's Python 2.6
|
||||
# break on it. See bug 939653.
|
||||
return sorted([(k,k) for k,v in fields.__dict__.iteritems()
|
||||
if type(v) == types.TypeType
|
||||
if issubclass(v, fields._column)
|
||||
if v != fields._column
|
||||
if not v._deprecated
|
||||
if not issubclass(v, fields.function)])
|
||||
if type(v) == types.TypeType and \
|
||||
issubclass(v, fields._column) and \
|
||||
v != fields._column and \
|
||||
not v._deprecated and \
|
||||
not issubclass(v, fields.function)])
|
||||
|
||||
def _in_modules(self, cr, uid, ids, field_name, arg, context=None):
|
||||
#pseudo-method used by fields.function in ir.model/ir.model.fields
|
||||
|
|
|
@ -75,7 +75,7 @@ class ir_rule(osv.osv):
|
|||
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=128, select=1),
|
||||
'model_id': fields.many2one('ir.model', 'Object',select=1, required=True),
|
||||
'model_id': fields.many2one('ir.model', 'Object',select=1, required=True, ondelete="cascade"),
|
||||
'global': fields.function(_get_value, string='Global', type='boolean', store=True, help="If no group is specified the rule is global and applied to everyone"),
|
||||
'groups': fields.many2many('res.groups', 'rule_group_rel', 'rule_group_id', 'group_id', 'Groups'),
|
||||
'domain_force': fields.text('Domain'),
|
||||
|
|
|
@ -404,7 +404,7 @@ class ir_values(osv.osv):
|
|||
results[action['name']] = (action['id'], action['name'], action_def)
|
||||
except except_orm, e:
|
||||
continue
|
||||
return results.values()
|
||||
return sorted(results.values())
|
||||
|
||||
def _map_legacy_model_list(self, model_list, map_fn, merge_results=False):
|
||||
"""Apply map_fn to the various models passed, according to
|
||||
|
|
|
@ -452,6 +452,7 @@ class module(osv.osv):
|
|||
'sequence': terp.get('sequence', 100),
|
||||
'application': terp.get('application', False),
|
||||
'auto_install': terp.get('auto_install', False),
|
||||
'icon': terp.get('icon', False),
|
||||
}
|
||||
|
||||
# update the list of available packages
|
||||
|
|
|
@ -42,6 +42,9 @@ class base_module_upgrade(osv.osv_memory):
|
|||
@return: New arch of view.
|
||||
"""
|
||||
res = super(base_module_upgrade, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
|
||||
if view_type != 'form':
|
||||
return res
|
||||
|
||||
record_id = context and context.get('active_id', False) or False
|
||||
active_model = context.get('active_model')
|
||||
if (not record_id) or (not active_model):
|
||||
|
|
|
@ -21,6 +21,23 @@
|
|||
|
||||
from osv import fields, osv
|
||||
|
||||
def location_name_search(self, cr, user, name='', args=None, operator='ilike',
|
||||
context=None, limit=100):
|
||||
if not args:
|
||||
args = []
|
||||
|
||||
ids = []
|
||||
if len(name) == 2:
|
||||
ids = self.search(cr, user, [('code', 'ilike', name)] + args,
|
||||
limit=limit, context=context)
|
||||
|
||||
search_domain = [('name', operator, name)]
|
||||
if ids: search_domain.append(('id', 'not in', ids))
|
||||
ids.extend(self.search(cr, user, search_domain + args,
|
||||
limit=limit, context=context))
|
||||
|
||||
locations = self.name_get(cr, user, ids, context)
|
||||
return sorted(locations, key=lambda (id, name): ids.index(id))
|
||||
|
||||
class Country(osv.osv):
|
||||
_name = 'res.country'
|
||||
|
@ -48,23 +65,10 @@ addresses belonging to this country.\n\nYou can use the python-style string pate
|
|||
_defaults = {
|
||||
'address_format': "%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s",
|
||||
}
|
||||
|
||||
def name_search(self, cr, user, name='', args=None, operator='ilike',
|
||||
context=None, limit=100):
|
||||
if not args:
|
||||
args=[]
|
||||
if not context:
|
||||
context={}
|
||||
ids = False
|
||||
if len(name) == 2:
|
||||
ids = self.search(cr, user, [('code', 'ilike', name)] + args,
|
||||
limit=limit, context=context)
|
||||
if not ids:
|
||||
ids = self.search(cr, user, [('name', operator, name)] + args,
|
||||
limit=limit, context=context)
|
||||
return self.name_get(cr, user, ids, context)
|
||||
_order='name'
|
||||
|
||||
name_search = location_name_search
|
||||
|
||||
def create(self, cursor, user, vals, context=None):
|
||||
if 'code' in vals:
|
||||
vals['code'] = vals['code'].upper()
|
||||
|
@ -77,8 +81,6 @@ addresses belonging to this country.\n\nYou can use the python-style string pate
|
|||
return super(Country, self).write(cursor, user, ids, vals,
|
||||
context=context)
|
||||
|
||||
Country()
|
||||
|
||||
|
||||
class CountryState(osv.osv):
|
||||
_description="Country state"
|
||||
|
@ -90,23 +92,9 @@ class CountryState(osv.osv):
|
|||
'code': fields.char('State Code', size=3,
|
||||
help='The state code in three chars.\n', required=True),
|
||||
}
|
||||
def name_search(self, cr, user, name='', args=None, operator='ilike',
|
||||
context=None, limit=100):
|
||||
if not args:
|
||||
args = []
|
||||
if not context:
|
||||
context = {}
|
||||
ids = self.search(cr, user, [('code', 'ilike', name)] + args, limit=limit,
|
||||
context=context)
|
||||
if not ids:
|
||||
ids = self.search(cr, user, [('name', operator, name)] + args,
|
||||
limit=limit, context=context)
|
||||
return self.name_get(cr, user, ids, context)
|
||||
|
||||
_order = 'code'
|
||||
CountryState()
|
||||
|
||||
|
||||
name_search = location_name_search
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -346,21 +346,35 @@ class res_partner_address(osv.osv):
|
|||
|
||||
def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=100):
|
||||
if not args:
|
||||
args=[]
|
||||
if not context:
|
||||
context={}
|
||||
if context.get('contact_display', 'contact')=='partner ' or context.get('contact_display', 'contact')=='partner_address ' :
|
||||
ids = self.search(cr, user, [('partner_id',operator,name)], limit=limit, context=context)
|
||||
args = []
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
if not name:
|
||||
ids = self.search(cr, user, args, limit=limit, context=context)
|
||||
elif context.get('contact_display', 'contact') == 'partner':
|
||||
ids = self.search(cr, user, [('partner_id', operator, name)] + args, limit=limit, context=context)
|
||||
else:
|
||||
if not name:
|
||||
ids = self.search(cr, user, args, limit=limit, context=context)
|
||||
# first lookup zip code, as it is a common and efficient way to search on these data
|
||||
ids = self.search(cr, user, [('zip', '=', name)] + args, limit=limit, context=context)
|
||||
# then search on other fields:
|
||||
if context.get('contact_display', 'contact') == 'partner_address':
|
||||
fields = ['partner_id', 'name', 'country_id', 'city', 'street']
|
||||
else:
|
||||
ids = self.search(cr, user, [('zip','=',name)] + args, limit=limit, context=context)
|
||||
if not ids:
|
||||
ids = self.search(cr, user, [('city',operator,name)] + args, limit=limit, context=context)
|
||||
if name:
|
||||
ids += self.search(cr, user, [('name',operator,name)] + args, limit=limit, context=context)
|
||||
ids += self.search(cr, user, [('partner_id',operator,name)] + args, limit=limit, context=context)
|
||||
fields = ['name', 'country_id', 'city', 'street']
|
||||
# Here we have to search the records that satisfy the domain:
|
||||
# OR([[(f, operator, name)] for f in fields])) + args
|
||||
# Searching on such a domain can be dramatically inefficient, due to the expansion made
|
||||
# for field translations, and the handling of the disjunction by the DB engine itself.
|
||||
# So instead, we search field by field until the search limit is reached.
|
||||
while len(ids) < limit and fields:
|
||||
f = fields.pop(0)
|
||||
new_ids = self.search(cr, user, [(f, operator, name)] + args, limit=limit, context=context)
|
||||
# extend ids with the ones in new_ids that are not in ids yet (and keep order)
|
||||
old_ids = set(ids)
|
||||
ids.extend([id for id in new_ids if id not in old_ids])
|
||||
|
||||
ids = ids[:limit]
|
||||
return self.name_get(cr, user, ids, context=context)
|
||||
|
||||
def get_city(self, cr, uid, id):
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
web_icon_hover="data/sales-hover.png"
|
||||
groups="base.group_sale_salesman"/>
|
||||
|
||||
<menuitem id="menu_address_book" name="Address Book" parent="menu_base_partner" sequence="2"/>
|
||||
<menuitem id="base.menu_sales" name="Sales"
|
||||
parent="base.menu_base_partner" sequence="1"
|
||||
/>
|
||||
|
||||
<!-- <menuitem id="menu_address_book" name="Address Book" parent="menu_base_partner" sequence="2"/> -->
|
||||
|
||||
<menuitem id="menu_base_config" name="Configuration" parent="menu_base_partner" sequence="30"
|
||||
groups="group_system"/>
|
||||
|
@ -175,7 +179,7 @@
|
|||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_partner_address_form" model="ir.actions.act_window">
|
||||
<field name="name">Addresses</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
@ -198,9 +202,6 @@
|
|||
<field name="view_id" ref="view_partner_address_form1"/>
|
||||
<field name="act_window_id" ref="action_partner_address_form"/>
|
||||
</record>
|
||||
<menuitem action="action_partner_address_form" id="menu_partner_address_form"
|
||||
groups="base.group_extended" name="Contacts"
|
||||
parent="base.menu_address_book" sequence="30"/>
|
||||
|
||||
<!--
|
||||
=========================================
|
||||
|
@ -524,8 +525,8 @@
|
|||
<menuitem
|
||||
action="action_partner_form"
|
||||
id="menu_partner_form"
|
||||
parent="base.menu_address_book"
|
||||
sequence="2"/>
|
||||
parent="base.menu_sales"
|
||||
sequence="8"/>
|
||||
|
||||
<record id="action_partner_customer_form" model="ir.actions.act_window">
|
||||
<field name="name">Customers</field>
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
<field name="name">user rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_users"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])]</field>
|
||||
<field name="domain_force">[('company_ids','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -34,6 +34,9 @@ from service import security
|
|||
from tools.translate import _
|
||||
import openerp
|
||||
import openerp.exceptions
|
||||
from lxml import etree
|
||||
from lxml.builder import E
|
||||
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -743,29 +746,27 @@ class groups_view(osv.osv):
|
|||
# and introduces the reified group fields
|
||||
view = self.get_user_groups_view(cr, uid, context)
|
||||
if view:
|
||||
xml = u"""<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- GENERATED AUTOMATICALLY BY GROUPS -->
|
||||
<field name="groups_id" position="replace">
|
||||
%s
|
||||
%s
|
||||
</field>
|
||||
"""
|
||||
|
||||
xml1, xml2 = [], []
|
||||
xml1.append('<separator string="%s" colspan="4"/>' % _('Applications'))
|
||||
xml1.append(E.separator(string=_('Application'), colspan="4"))
|
||||
for app, kind, gs in self.get_groups_by_application(cr, uid, context):
|
||||
if kind == 'selection':
|
||||
# application name with a selection field
|
||||
field_name = name_selection_groups(map(int, gs))
|
||||
xml1.append('<field name="%s"/>' % field_name)
|
||||
xml1.append('<newline/>')
|
||||
xml1.append(E.field(name=field_name))
|
||||
xml1.append(E.newline())
|
||||
else:
|
||||
# application separator with boolean fields
|
||||
app_name = app and app.name or _('Other')
|
||||
xml2.append('<separator string="%s" colspan="4"/>' % app_name)
|
||||
xml2.append(E.separator(string=app_name, colspan="4"))
|
||||
for g in gs:
|
||||
field_name = name_boolean_group(g.id)
|
||||
xml2.append('<field name="%s"/>' % field_name)
|
||||
view.write({'arch': xml % ('\n'.join(xml1), '\n'.join(xml2))})
|
||||
xml2.append(E.field(name=field_name))
|
||||
|
||||
xml = E.field(*(xml1 + xml2), name="groups_id", position="replace")
|
||||
xml.addprevious(etree.Comment("GENERATED AUTOMATICALLY BY GROUPS"))
|
||||
xml_content = etree.tostring(xml, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
||||
view.write({'arch': xml_content})
|
||||
return True
|
||||
|
||||
def get_user_groups_view(self, cr, uid, context=None):
|
||||
|
|
|
@ -121,17 +121,22 @@ def get_encodings(hint_encoding='utf-8'):
|
|||
if prefenc:
|
||||
yield prefenc
|
||||
|
||||
def ustr(value, hint_encoding='utf-8'):
|
||||
"""This method is similar to the builtin `str` method, except
|
||||
it will return unicode() string.
|
||||
def ustr(value, hint_encoding='utf-8', errors='strict'):
|
||||
"""This method is similar to the builtin `unicode`, except
|
||||
that it may try multiple encodings to find one that works
|
||||
for decoding `value`, and defaults to 'utf-8' first.
|
||||
|
||||
@param value: the value to convert
|
||||
@param hint_encoding: an optional encoding that was detected
|
||||
upstream and should be tried first to
|
||||
decode ``value``.
|
||||
|
||||
@rtype: unicode
|
||||
@return: unicode string
|
||||
:param: value: the value to convert
|
||||
:param: hint_encoding: an optional encoding that was detecte
|
||||
upstream and should be tried first to decode ``value``.
|
||||
:param str error: optional `errors` flag to pass to the unicode
|
||||
built-in to indicate how illegal character values should be
|
||||
treated when converting a string: 'strict', 'ignore' or 'replace'.
|
||||
Passing anything other than 'strict' means that the first
|
||||
encoding tried will be used, even if it's not the correct
|
||||
one to use, so be careful! Ignore if value is not a string/unicode.
|
||||
:rtype: unicode
|
||||
:raise: UnicodeError if value cannot be coerced to unicode
|
||||
"""
|
||||
if isinstance(value, Exception):
|
||||
return exception_to_unicode(value)
|
||||
|
@ -147,7 +152,7 @@ def ustr(value, hint_encoding='utf-8'):
|
|||
|
||||
for ln in get_encodings(hint_encoding):
|
||||
try:
|
||||
return unicode(value, ln)
|
||||
return unicode(value, ln, errors=errors)
|
||||
except Exception:
|
||||
pass
|
||||
raise UnicodeError('unable to convert %r' % (value,))
|
||||
|
|
|
@ -151,7 +151,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
|||
_logger.debug('loading %d packages...', len(graph))
|
||||
|
||||
# get db timestamp
|
||||
cr.execute("select now()::timestamp")
|
||||
cr.execute("select (now() at time zone 'UTC')::timestamp")
|
||||
dt_before_load = cr.fetchone()[0]
|
||||
|
||||
# register, instantiate and initialize models for each modules
|
||||
|
|
|
@ -357,6 +357,8 @@ def dispatch_rpc(service_name, method, params):
|
|||
if rpc_request and rpc_response_flag:
|
||||
log(rpc_request,logging.DEBUG,'%s.%s'%(service_name,method), replace_request_password(params))
|
||||
|
||||
threading.current_thread().uid = None
|
||||
threading.current_thread().dbname = None
|
||||
result = ExportService.getService(service_name).dispatch(method, params)
|
||||
|
||||
if rpc_request_flag or rpc_response_flag:
|
||||
|
|
|
@ -364,7 +364,15 @@ class time(_column):
|
|||
class binary(_column):
|
||||
_type = 'binary'
|
||||
_symbol_c = '%s'
|
||||
_symbol_f = lambda symb: symb and Binary(symb) or None
|
||||
|
||||
# Binary values may be byte strings (python 2.6 byte array), but
|
||||
# the legacy OpenERP convention is to transfer and store binaries
|
||||
# as base64-encoded strings. The base64 string may be provided as a
|
||||
# unicode in some circumstances, hence the str() cast in symbol_f.
|
||||
# This str coercion will only work for pure ASCII unicode strings,
|
||||
# on purpose - non base64 data must be passed as a 8bit byte strings.
|
||||
_symbol_f = lambda symb: symb and Binary(str(symb)) or None
|
||||
|
||||
_symbol_set = (_symbol_c, _symbol_f)
|
||||
_symbol_get = lambda self, x: x and str(x)
|
||||
|
||||
|
|
|
@ -750,7 +750,7 @@ class BaseModel(object):
|
|||
name_id = 'model_'+self._name.replace('.', '_')
|
||||
cr.execute('select * from ir_model_data where name=%s and module=%s', (name_id, context['module']))
|
||||
if not cr.rowcount:
|
||||
cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, now(), now(), %s, %s, %s)", \
|
||||
cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, (now() at time zone 'UTC'), (now() at time zone 'UTC'), %s, %s, %s)", \
|
||||
(name_id, context['module'], 'ir.model', model_id)
|
||||
)
|
||||
|
||||
|
@ -816,7 +816,7 @@ class BaseModel(object):
|
|||
cr.execute("select name from ir_model_data where name=%s", (name1,))
|
||||
if cr.fetchone():
|
||||
name1 = name1 + "_" + str(id)
|
||||
cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, now(), now(), %s, %s, %s)", \
|
||||
cr.execute("INSERT INTO ir_model_data (name,date_init,date_update,module,model,res_id) VALUES (%s, (now() at time zone 'UTC'), (now() at time zone 'UTC'), %s, %s, %s)", \
|
||||
(name1, context['module'], 'ir.model.fields', id)
|
||||
)
|
||||
else:
|
||||
|
@ -872,11 +872,11 @@ class BaseModel(object):
|
|||
|
||||
for parent_name in ((type(parent_names)==list) and parent_names or [parent_names]):
|
||||
parent_model = pool.get(parent_name)
|
||||
if not getattr(cls, '_original_module', None) and name == parent_model._name:
|
||||
cls._original_module = parent_model._original_module
|
||||
if not parent_model:
|
||||
raise TypeError('The model "%s" specifies an unexisting parent class "%s"\n'
|
||||
'You may need to add a dependency on the parent class\' module.' % (name, parent_name))
|
||||
if not getattr(cls, '_original_module', None) and name == parent_model._name:
|
||||
cls._original_module = parent_model._original_module
|
||||
parent_class = parent_model.__class__
|
||||
nattr = {}
|
||||
for s in attributes:
|
||||
|
@ -2690,7 +2690,7 @@ class BaseModel(object):
|
|||
elif val in dict(self._columns[field].selection(self, cr, uid, context=context)):
|
||||
return
|
||||
raise except_orm(_('ValidateError'),
|
||||
_('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field))
|
||||
_('The value "%s" for the field "%s.%s" is not in the selection') % (value, self._table, field))
|
||||
|
||||
def _check_removed_columns(self, cr, log=False):
|
||||
# iterate on the database columns to drop the NOT NULL constraints
|
||||
|
@ -2733,6 +2733,50 @@ class BaseModel(object):
|
|||
_schema.debug("Table '%s': added foreign key '%s' with definition=REFERENCES \"%s\" ON DELETE %s",
|
||||
source_table, source_field, dest_model._table, ondelete)
|
||||
|
||||
def _drop_constraint(self, cr, source_table, constraint_name):
|
||||
cr.execute("ALTER TABLE %s DROP CONSTRAINT %s" % (source_table,constraint_name))
|
||||
|
||||
def _m2o_fix_foreign_key(self, cr, source_table, source_field, dest_model, ondelete):
|
||||
# Find FK constraint(s) currently established for the m2o field,
|
||||
# and see whether they are stale or not
|
||||
cr.execute("""SELECT confdeltype as ondelete_rule, conname as constraint_name,
|
||||
cl2.relname as foreign_table
|
||||
FROM pg_constraint as con, pg_class as cl1, pg_class as cl2,
|
||||
pg_attribute as att1, pg_attribute as att2
|
||||
WHERE con.conrelid = cl1.oid
|
||||
AND cl1.relname = %s
|
||||
AND con.confrelid = cl2.oid
|
||||
AND array_lower(con.conkey, 1) = 1
|
||||
AND con.conkey[1] = att1.attnum
|
||||
AND att1.attrelid = cl1.oid
|
||||
AND att1.attname = %s
|
||||
AND array_lower(con.confkey, 1) = 1
|
||||
AND con.confkey[1] = att2.attnum
|
||||
AND att2.attrelid = cl2.oid
|
||||
AND att2.attname = %s
|
||||
AND con.contype = 'f'""", (source_table, source_field, 'id'))
|
||||
constraints = cr.dictfetchall()
|
||||
if constraints:
|
||||
if len(constraints) == 1:
|
||||
# Is it the right constraint?
|
||||
cons, = constraints
|
||||
if cons['ondelete_rule'] != POSTGRES_CONFDELTYPES.get((ondelete or 'set null').upper(), 'a')\
|
||||
or cons['foreign_table'] != dest_model._table:
|
||||
_schema.debug("Table '%s': dropping obsolete FK constraint: '%s'",
|
||||
source_table, cons['constraint_name'])
|
||||
self._drop_constraint(cr, source_table, cons['constraint_name'])
|
||||
self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
|
||||
# else it's all good, nothing to do!
|
||||
else:
|
||||
# Multiple FKs found for the same field, drop them all, and re-create
|
||||
for cons in constraints:
|
||||
_schema.debug("Table '%s': dropping duplicate FK constraints: '%s'",
|
||||
source_table, cons['constraint_name'])
|
||||
self._drop_constraint(cr, source_table, cons['constraint_name'])
|
||||
self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
|
||||
|
||||
|
||||
|
||||
def _auto_init(self, cr, context=None):
|
||||
"""
|
||||
|
||||
|
@ -2932,31 +2976,8 @@ class BaseModel(object):
|
|||
|
||||
if isinstance(f, fields.many2one):
|
||||
dest_model = self.pool.get(f._obj)
|
||||
ref = dest_model._table
|
||||
if ref != 'ir_actions':
|
||||
cr.execute('SELECT confdeltype, conname FROM pg_constraint as con, pg_class as cl1, pg_class as cl2, '
|
||||
'pg_attribute as att1, pg_attribute as att2 '
|
||||
'WHERE con.conrelid = cl1.oid '
|
||||
'AND cl1.relname = %s '
|
||||
'AND con.confrelid = cl2.oid '
|
||||
'AND cl2.relname = %s '
|
||||
'AND array_lower(con.conkey, 1) = 1 '
|
||||
'AND con.conkey[1] = att1.attnum '
|
||||
'AND att1.attrelid = cl1.oid '
|
||||
'AND att1.attname = %s '
|
||||
'AND array_lower(con.confkey, 1) = 1 '
|
||||
'AND con.confkey[1] = att2.attnum '
|
||||
'AND att2.attrelid = cl2.oid '
|
||||
'AND att2.attname = %s '
|
||||
"AND con.contype = 'f'", (self._table, ref, k, 'id'))
|
||||
res2 = cr.dictfetchall()
|
||||
if res2:
|
||||
if res2[0]['confdeltype'] != POSTGRES_CONFDELTYPES.get((f.ondelete or 'set null').upper(), 'a'):
|
||||
cr.execute('ALTER TABLE "' + self._table + '" DROP CONSTRAINT "' + res2[0]['conname'] + '"')
|
||||
self._m2o_add_foreign_key_checked(k, dest_model, f.ondelete)
|
||||
cr.commit()
|
||||
_schema.debug("Table '%s': column '%s': XXX",
|
||||
self._table, k)
|
||||
if dest_model._table != 'ir_actions':
|
||||
self._m2o_fix_foreign_key(cr, self._table, k, dest_model, f.ondelete)
|
||||
|
||||
# The field doesn't exist in database. Create it if necessary.
|
||||
else:
|
||||
|
@ -3152,6 +3173,9 @@ class BaseModel(object):
|
|||
_sql_constraints.
|
||||
|
||||
"""
|
||||
def unify_cons_text(txt):
|
||||
return txt.lower().replace(', ',',').replace(' (','(')
|
||||
|
||||
for (key, con, _) in self._sql_constraints:
|
||||
conname = '%s_%s' % (self._table, key)
|
||||
|
||||
|
@ -3181,7 +3205,7 @@ class BaseModel(object):
|
|||
# constraint does not exists:
|
||||
sql_actions['add']['execute'] = True
|
||||
sql_actions['add']['msg_err'] = sql_actions['add']['msg_err'] % (sql_actions['add']['query'], )
|
||||
elif con.lower() not in [item['condef'].lower() for item in existing_constraints]:
|
||||
elif unify_cons_text(con) not in [unify_cons_text(item['condef']) for item in existing_constraints]:
|
||||
# constraint exists but its definition has changed:
|
||||
sql_actions['drop']['execute'] = True
|
||||
sql_actions['drop']['msg_ok'] = sql_actions['drop']['msg_ok'] % (existing_constraints[0]['condef'].lower(), )
|
||||
|
@ -3416,8 +3440,8 @@ class BaseModel(object):
|
|||
return "date_trunc('second', %s) as %s" % (f_qual, f)
|
||||
if f == self.CONCURRENCY_CHECK_FIELD:
|
||||
if self._log_access:
|
||||
return "COALESCE(%s.write_date, %s.create_date, now())::timestamp AS %s" % (self._table, self._table, f,)
|
||||
return "now()::timestamp AS %s" % (f,)
|
||||
return "COALESCE(%s.write_date, %s.create_date, (now() at time zone 'UTC'))::timestamp AS %s" % (self._table, self._table, f,)
|
||||
return "(now() at time zone 'UTC')::timestamp AS %s" % (f,)
|
||||
if isinstance(self._columns[f], fields.binary) and context.get('bin_size', False):
|
||||
return 'length(%s) as "%s"' % (f_qual, f)
|
||||
return f_qual
|
||||
|
@ -3598,7 +3622,7 @@ class BaseModel(object):
|
|||
return
|
||||
if not (context.get(self.CONCURRENCY_CHECK_FIELD) and self._log_access):
|
||||
return
|
||||
check_clause = "(id = %s AND %s < COALESCE(write_date, create_date, now())::timestamp)"
|
||||
check_clause = "(id = %s AND %s < COALESCE(write_date, create_date, (now() at time zone 'UTC'))::timestamp)"
|
||||
for sub_ids in cr.split_for_in_conditions(ids):
|
||||
ids_to_check = []
|
||||
for id in sub_ids:
|
||||
|
@ -3882,7 +3906,7 @@ class BaseModel(object):
|
|||
|
||||
if self._log_access:
|
||||
upd0.append('write_uid=%s')
|
||||
upd0.append('write_date=now()')
|
||||
upd0.append("write_date=(now() at time zone 'UTC')")
|
||||
upd1.append(user)
|
||||
|
||||
if len(upd0):
|
||||
|
@ -4149,7 +4173,7 @@ class BaseModel(object):
|
|||
self._check_selection_field_value(cr, user, field, vals[field], context=context)
|
||||
if self._log_access:
|
||||
upd0 += ',create_uid,create_date'
|
||||
upd1 += ',%s,now()'
|
||||
upd1 += ",%s,(now() at time zone 'UTC')"
|
||||
upd2.append(user)
|
||||
cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2))
|
||||
self.check_access_rule(cr, user, [id_new], 'create', context=context)
|
||||
|
@ -4382,13 +4406,11 @@ class BaseModel(object):
|
|||
domain = domain[:]
|
||||
# if the object has a field named 'active', filter out all inactive
|
||||
# records unless they were explicitely asked for
|
||||
if 'active' in self._columns and (active_test and context.get('active_test', True)):
|
||||
if 'active' in self._all_columns and (active_test and context.get('active_test', True)):
|
||||
if domain:
|
||||
active_in_args = False
|
||||
for a in domain:
|
||||
if a[0] == 'active':
|
||||
active_in_args = True
|
||||
if not active_in_args:
|
||||
# the item[0] trick below works for domain items and '&'/'|'/'!'
|
||||
# operators too
|
||||
if not any(item[0] == 'active' for item in domain):
|
||||
domain.insert(0, ('active', '=', 1))
|
||||
else:
|
||||
domain = [('active', '=', 1)]
|
||||
|
@ -4852,15 +4874,15 @@ class BaseModel(object):
|
|||
def _transient_clean_rows_older_than(self, cr, seconds):
|
||||
assert self._transient, "Model %s is not transient, it cannot be vacuumed!" % self._name
|
||||
cr.execute("SELECT id FROM " + self._table + " WHERE"
|
||||
" COALESCE(write_date, create_date, now())::timestamp <"
|
||||
" (now() - interval %s)", ("%s seconds" % seconds,))
|
||||
" COALESCE(write_date, create_date, (now() at time zone 'UTC'))::timestamp <"
|
||||
" ((now() at time zone 'UTC') - interval %s)", ("%s seconds" % seconds,))
|
||||
ids = [x[0] for x in cr.fetchall()]
|
||||
self.unlink(cr, SUPERUSER_ID, ids)
|
||||
|
||||
def _transient_clean_old_rows(self, cr, count):
|
||||
assert self._transient, "Model %s is not transient, it cannot be vacuumed!" % self._name
|
||||
cr.execute(
|
||||
"SELECT id, COALESCE(write_date, create_date, now())::timestamp"
|
||||
"SELECT id, COALESCE(write_date, create_date, (now() at time zone 'UTC'))::timestamp"
|
||||
" AS t FROM " + self._table +
|
||||
" ORDER BY t LIMIT %s", (count,))
|
||||
ids = [x[0] for x in cr.fetchall()]
|
||||
|
|
|
@ -30,7 +30,7 @@ RELEASE_LEVELS_DISPLAY = {ALPHA: ALPHA,
|
|||
# properly comparable using normal operarors, for example:
|
||||
# (6,1,0,'beta',0) < (6,1,0,'candidate',1) < (6,1,0,'candidate',2)
|
||||
# (6,1,0,'candidate',2) < (6,1,0,'final',0) < (6,1,2,'final',0)
|
||||
version_info = (6,1,0,FINAL,0)
|
||||
version_info = (6,2,0,ALPHA,0)
|
||||
version = '.'.join(map(str,version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '')
|
||||
major_version = '.'.join(map(str,version_info[:2]))
|
||||
|
||||
|
|
|
@ -173,6 +173,8 @@ class db(netsvc.ExportService):
|
|||
raise Exception, e
|
||||
|
||||
def exp_drop(self, db_name):
|
||||
if not self.exp_db_exist(db_name):
|
||||
return False
|
||||
openerp.modules.registry.RegistryManager.delete(db_name)
|
||||
sql_db.close_db(db_name)
|
||||
|
||||
|
@ -180,6 +182,17 @@ class db(netsvc.ExportService):
|
|||
cr = db.cursor()
|
||||
cr.autocommit(True) # avoid transaction block
|
||||
try:
|
||||
# Try to terminate all other connections that might prevent
|
||||
# dropping the database
|
||||
try:
|
||||
cr.execute("""SELECT pg_terminate_backend(procpid)
|
||||
FROM pg_stat_activity
|
||||
WHERE datname = %s AND
|
||||
procpid != pg_backend_pid()""",
|
||||
(db_name,))
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
cr.execute('DROP DATABASE "%s"' % db_name)
|
||||
except Exception, e:
|
||||
|
@ -561,6 +574,7 @@ class objects_proxy(netsvc.ExportService):
|
|||
|
||||
def dispatch(self, method, params):
|
||||
(db, uid, passwd ) = params[0:3]
|
||||
threading.current_thread().uid = uid
|
||||
params = params[3:]
|
||||
if method == 'obj_list':
|
||||
raise NameError("obj_list has been discontinued via RPC as of 6.0, please query ir.model directly!")
|
||||
|
@ -594,6 +608,7 @@ class wizard(netsvc.ExportService):
|
|||
|
||||
def dispatch(self, method, params):
|
||||
(db, uid, passwd ) = params[0:3]
|
||||
threading.current_thread().uid = uid
|
||||
params = params[3:]
|
||||
if method not in ['execute','create']:
|
||||
raise KeyError("Method not supported %s" % method)
|
||||
|
@ -645,6 +660,7 @@ class report_spool(netsvc.ExportService):
|
|||
|
||||
def dispatch(self, method, params):
|
||||
(db, uid, passwd ) = params[0:3]
|
||||
threading.current_thread().uid = uid
|
||||
params = params[3:]
|
||||
if method not in ['report', 'report_get', 'render_report']:
|
||||
raise KeyError("Method not supported %s" % method)
|
||||
|
|
|
@ -96,6 +96,7 @@ class test_ir_sequence_no_gap(unittest2.TestCase):
|
|||
"""
|
||||
cr0 = cursor()
|
||||
cr1 = cursor()
|
||||
cr1._default_log_exceptions = False # Prevent logging a traceback
|
||||
msg_re = '^could not obtain lock on row in relation "ir_sequence"$'
|
||||
with self.assertRaisesRegexp(psycopg2.OperationalError, msg_re):
|
||||
n0 = registry('ir.sequence').get(cr0, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
|
|
|
@ -313,7 +313,8 @@ class graph(object):
|
|||
self.order[level] = self.order[level]+1
|
||||
|
||||
for sec_end in self.transitions.get(node, []):
|
||||
self.init_order(sec_end, self.result[sec_end]['x'])
|
||||
if node!=sec_end:
|
||||
self.init_order(sec_end, self.result[sec_end]['x'])
|
||||
|
||||
|
||||
def order_heuristic(self):
|
||||
|
@ -438,33 +439,27 @@ class graph(object):
|
|||
l.reverse()
|
||||
no = len(l)
|
||||
|
||||
if no%2==0:
|
||||
first_half = l[no/2:]
|
||||
factor = 1
|
||||
else:
|
||||
first_half = l[no/2+1:]
|
||||
factor = 0
|
||||
|
||||
rest = no%2
|
||||
first_half = l[no/2+rest:]
|
||||
last_half = l[:no/2]
|
||||
|
||||
i=1
|
||||
for child in first_half:
|
||||
self.result[child]['y'] = mid_pos - (i - (factor * 0.5))
|
||||
i += 1
|
||||
for i, child in enumerate(first_half):
|
||||
self.result[child]['y'] = mid_pos - (i+1 - (0 if rest else 0.5))
|
||||
|
||||
if self.transitions.get(child, False):
|
||||
if last:
|
||||
self.result[child]['y'] = last + len(self.transitions[child])/2 + 1
|
||||
last = self.tree_order(child, last)
|
||||
|
||||
if no%2:
|
||||
if rest:
|
||||
mid_node = l[no/2]
|
||||
self.result[mid_node]['y'] = mid_pos
|
||||
|
||||
if self.transitions.get((mid_node), False):
|
||||
if last:
|
||||
self.result[mid_node]['y'] = last + len(self.transitions[mid_node])/2 + 1
|
||||
last = self.tree_order(mid_node)
|
||||
if node!=mid_node:
|
||||
last = self.tree_order(mid_node)
|
||||
else:
|
||||
if last:
|
||||
self.result[mid_node]['y'] = last + 1
|
||||
|
@ -474,13 +469,14 @@ class graph(object):
|
|||
i=1
|
||||
last_child = None
|
||||
for child in last_half:
|
||||
self.result[child]['y'] = mid_pos + (i - (factor * 0.5))
|
||||
self.result[child]['y'] = mid_pos + (i - (0 if rest else 0.5))
|
||||
last_child = child
|
||||
i += 1
|
||||
if self.transitions.get(child, False):
|
||||
if last:
|
||||
self.result[child]['y'] = last + len(self.transitions[child])/2 + 1
|
||||
last = self.tree_order(child, last)
|
||||
if node!=child:
|
||||
last = self.tree_order(child, last)
|
||||
|
||||
if last_child:
|
||||
last = self.result[last_child]['y']
|
||||
|
|
|
@ -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
|
||||
|
@ -383,7 +383,7 @@ def email_send(email_from, email_to, subject, body, email_cc=None, email_bcc=Non
|
|||
|
||||
res = mail_server_pool.send_email(cr, uid or 1, email_msg, mail_server_id=None,
|
||||
smtp_server=smtp_server, smtp_port=smtp_port, smtp_user=smtp_user, smtp_password=smtp_password,
|
||||
smtp_encryption=('ssl' if ssl else None), debug=debug)
|
||||
smtp_encryption=('ssl' if ssl else None), smtp_debug=debug)
|
||||
except Exception:
|
||||
_logger.exception("tools.email_send failed to deliver email")
|
||||
return False
|
||||
|
|
|
@ -20,9 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
def drop_view_if_exists(cr, viewname):
|
||||
cr.execute("select count(1) from pg_class where relkind=%s and relname=%s", ('v', viewname,))
|
||||
if cr.fetchone()[0]:
|
||||
cr.execute("DROP view %s" % (viewname,))
|
||||
cr.commit()
|
||||
cr.execute("DROP view IF EXISTS %s CASCADE" % (viewname,))
|
||||
cr.commit()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Loading…
Reference in New Issue