[MERGE]: Merge with latest trunk-server
bzr revid: rpa@tinyerp.com-20111103071744-wkf0qgr8qkl540y7 bzr revid: rpa@tinyerp.com-20111116051225-w9b73w63w8g6z2hk
This commit is contained in:
commit
d4ad054000
32
.bzrignore
32
.bzrignore
|
@ -1,11 +1,23 @@
|
|||
.*
|
||||
*.egg-info
|
||||
*.orig
|
||||
*.pyc
|
||||
.*.swp
|
||||
.bzrignore
|
||||
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
|
||||
build/
|
||||
RE:^bin/
|
||||
RE:^dist/
|
||||
RE:^include/
|
||||
|
||||
RE:^share/
|
||||
RE:^man/
|
||||
RE:^lib/
|
||||
bin/yolk
|
||||
bin/pil*.py
|
||||
.project
|
||||
.pydevproject
|
||||
.settings
|
||||
|
|
|
@ -179,9 +179,12 @@ def dumpstacks(sig, frame):
|
|||
def setup_signal_handlers():
|
||||
""" Register the signal handler defined above. """
|
||||
SIGNALS = map(lambda x: getattr(signal, "SIG%s" % x), "INT TERM".split())
|
||||
map(lambda sig: signal.signal(sig, signal_handler), SIGNALS)
|
||||
if os.name == 'posix':
|
||||
map(lambda sig: signal.signal(sig, signal_handler), SIGNALS)
|
||||
signal.signal(signal.SIGQUIT, dumpstacks)
|
||||
elif os.name == 'nt':
|
||||
import win32api
|
||||
win32api.SetConsoleCtrlHandler(lambda sig: signal_handler(sig, None), 1)
|
||||
|
||||
def quit_on_signals():
|
||||
""" Wait for one or two signals then shutdown the server.
|
||||
|
@ -191,9 +194,12 @@ def quit_on_signals():
|
|||
|
||||
"""
|
||||
# Wait for a first signal to be handled. (time.sleep will be interrupted
|
||||
# by the signal handler.)
|
||||
# by the signal handler.) The try/except is for the win32 case.
|
||||
try:
|
||||
while quit_signals_received == 0:
|
||||
time.sleep(60)
|
||||
except KeyboardInterrupt, e:
|
||||
pass
|
||||
|
||||
if config['pidfile']:
|
||||
os.unlink(config['pidfile'])
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<record id="parameter_web_base_url" model="ir.config_parameter">
|
||||
<field name="key">web.base.url</field>
|
||||
<field name="value">http://localhost:8069</field>
|
||||
</record>
|
||||
<record id="view_menu" model="ir.ui.view">
|
||||
<field name="name">ir.ui.menu.tree</field>
|
||||
<field name="model">ir.ui.menu</field>
|
||||
|
@ -1671,5 +1667,19 @@
|
|||
<field name="currency_id" ref="HNL"/>
|
||||
<field eval="time.strftime('%Y-01-01')" name="name"/>
|
||||
</record>
|
||||
|
||||
<!-- Chilean peso -->
|
||||
<record id="CLP" model="res.currency">
|
||||
<field name="name">CLP</field>
|
||||
<field name="symbol">$</field>
|
||||
<field name="rounding">0.01</field>
|
||||
<field name="accuracy">4</field>
|
||||
<field name="company_id" ref="main_company"/>
|
||||
</record>
|
||||
<record id="rateCLP" model="res.currency.rate">
|
||||
<field name="rate">710</field>
|
||||
<field name="currency_id" ref="CLP"/>
|
||||
<field eval="time.strftime('%Y-01-01')" name="name"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<menuitem icon="terp-administration" id="menu_administration"
|
||||
name="Administration" sequence="50"
|
||||
name="Settings" sequence="50"
|
||||
web_icon="data/administration.png"
|
||||
web_icon_hover="data/administration-hover.png"/>
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -33,7 +33,7 @@ msgstr "سانت هيلينا"
|
|||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
msgid "Other Configuration"
|
||||
msgstr "عدادت أخري"
|
||||
msgstr "إعدادات أخرى"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -103,7 +103,7 @@ msgstr "سير العمل نشط"
|
|||
#. module: base
|
||||
#: field:ir.actions.act_window,display_menu_tip:0
|
||||
msgid "Display Menu Tips"
|
||||
msgstr ""
|
||||
msgstr "عرض إرشادات القائمة"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
|
@ -117,6 +117,8 @@ msgid ""
|
|||
"You can not write in this document (%s) ! Be sure your user belongs to one "
|
||||
"of these groups: %s."
|
||||
msgstr ""
|
||||
"لا يمكنك تعديل هذا المستند (%s)! تأكد من أنك تنتمي إلى إحدى المجموعات "
|
||||
"التالية: %s."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
|
@ -134,7 +136,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.actions.act_window,target:0
|
||||
msgid "Target Window"
|
||||
msgstr ""
|
||||
msgstr "نافذة الهدف"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_user.py:507
|
||||
|
@ -154,7 +156,7 @@ msgstr ""
|
|||
#: code:addons/osv.py:133
|
||||
#, python-format
|
||||
msgid "Constraint Error"
|
||||
msgstr ""
|
||||
msgstr "خطأ تقييد"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_ui_view_custom
|
||||
|
@ -171,12 +173,12 @@ msgstr ""
|
|||
#: code:addons/orm.py:3653
|
||||
#, python-format
|
||||
msgid "created."
|
||||
msgstr ""
|
||||
msgstr "تمّ الإنشاء"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_woodsuppliers0
|
||||
msgid "Wood Suppliers"
|
||||
msgstr ""
|
||||
msgstr "مورّدو الخشب"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:303
|
||||
|
@ -185,6 +187,8 @@ msgid ""
|
|||
"Some installed modules depend on the module you plan to Uninstall :\n"
|
||||
" %s"
|
||||
msgstr ""
|
||||
"ثمّة وحدات برمجية تعتمد على الوحدة التي تريد إزالتها:\n"
|
||||
" %s"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.sequence,number_increment:0
|
||||
|
@ -195,7 +199,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:base.action_res_company_tree
|
||||
#: model:ir.ui.menu,name:base.menu_action_res_company_tree
|
||||
msgid "Company's Structure"
|
||||
msgstr ""
|
||||
msgstr "هيكل الشركة"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -211,7 +215,7 @@ msgstr ""
|
|||
#: code:addons/base/res/res_user.py:132
|
||||
#, python-format
|
||||
msgid "\"smtp_server\" needs to be set to send mails to users"
|
||||
msgstr ""
|
||||
msgstr "لا بدّ من تعيين خادم إرسال البريد الإلكتروني \"smtp_server\""
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_export_language.py:60
|
||||
|
@ -227,7 +231,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.module.category,module_nr:0
|
||||
msgid "Number of Modules"
|
||||
msgstr ""
|
||||
msgstr "عدد البرامج"
|
||||
|
||||
#. module: base
|
||||
#: help:multi_company.default,company_dest_id:0
|
||||
|
@ -237,7 +241,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner.bank.type.field,size:0
|
||||
msgid "Max. Size"
|
||||
msgstr ""
|
||||
msgstr "الحجم الأقصى"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.address,name:0
|
||||
|
@ -255,7 +259,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: sql_constraint:res.lang:0
|
||||
msgid "The name of the language must be unique !"
|
||||
msgstr ""
|
||||
msgstr "لا بدّ أن يكون اسم اللغة مختلفاً عن اللغات الأخرى"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.request,state:0
|
||||
|
@ -265,7 +269,7 @@ msgstr "نشط"
|
|||
#. module: base
|
||||
#: field:ir.actions.wizard,wiz_name:0
|
||||
msgid "Wizard Name"
|
||||
msgstr ""
|
||||
msgstr "اسم المعالج"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2160
|
||||
|
@ -296,7 +300,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
msgid "Config Wizard Steps"
|
||||
msgstr ""
|
||||
msgstr "خطوات إعداد المعالج"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_ui_view_sc
|
||||
|
@ -362,6 +366,8 @@ msgid ""
|
|||
"You can not remove the admin user as it is used internally for resources "
|
||||
"created by OpenERP (updates, module installation, ...)"
|
||||
msgstr ""
|
||||
"لا يمكنك حذف المستخدم المشرف العام (admin) لأنه يسنخدم داخلياً بواسطة "
|
||||
"OpenERP في عمليات التحديث و إضافة البرامج الأخري"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gf
|
||||
|
@ -399,7 +405,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
msgid "Your system will be updated."
|
||||
msgstr ""
|
||||
msgstr "سوف يتمّ تحديث نظامك"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.todo,note:0
|
||||
|
@ -420,7 +426,7 @@ msgstr "كولومبيا"
|
|||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Schedule Upgrade"
|
||||
msgstr ""
|
||||
msgstr "حدّد موعد الترقية"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:838
|
||||
|
@ -434,6 +440,8 @@ msgid ""
|
|||
"The ISO country code in two chars.\n"
|
||||
"You can use this field for quick search."
|
||||
msgstr ""
|
||||
"رمز ISO للدولة والمكون من حرفين\n"
|
||||
"يمكنك استخدام هذا الحقل للبحث السريع."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pw
|
||||
|
@ -461,12 +469,12 @@ msgstr ""
|
|||
#: view:ir.actions.wizard:0
|
||||
#: model:ir.ui.menu,name:base.menu_ir_action_wizard
|
||||
msgid "Wizards"
|
||||
msgstr ""
|
||||
msgstr "المعالجات"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_miscellaneoussuppliers0
|
||||
msgid "Miscellaneous Suppliers"
|
||||
msgstr ""
|
||||
msgstr "مورّدون متنوعون"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:255
|
||||
|
@ -487,12 +495,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "Export done"
|
||||
msgstr ""
|
||||
msgstr "تمّت عملية التصدير"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
msgid "Model Description"
|
||||
msgstr ""
|
||||
msgstr "وصف النموذج"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,src_model:0
|
||||
|
@ -590,7 +598,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.model,name:base.model_base_language_import
|
||||
msgid "Language Import"
|
||||
msgstr ""
|
||||
msgstr "استيراد اللغة"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_config_users
|
||||
|
@ -635,12 +643,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "My Partners"
|
||||
msgstr ""
|
||||
msgstr "شركائي"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
msgid "XML Report"
|
||||
msgstr ""
|
||||
msgstr "تقرير XML"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.es
|
||||
|
@ -650,7 +658,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_translation_export
|
||||
msgid "Import / Export"
|
||||
msgstr ""
|
||||
msgstr "استيراد / تصدير"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,domain:0
|
||||
|
@ -662,7 +670,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
|
||||
#: model:ir.model,name:base.model_base_module_upgrade
|
||||
msgid "Module Upgrade"
|
||||
msgstr ""
|
||||
msgstr "ترقية وحدة برمجية"
|
||||
|
||||
#. module: base
|
||||
#: view:res.config.users:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -168,7 +168,7 @@ msgstr "ir.ui.view.custom"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.sz
|
||||
msgid "Swaziland"
|
||||
msgstr "Швейцария"
|
||||
msgstr "Свазиленд"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:1993
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -15,8 +15,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -6604,8 +6604,8 @@ msgid ""
|
|||
"You can not read this document (%s) ! Be sure your user belongs to one of "
|
||||
"these groups: %s."
|
||||
msgstr ""
|
||||
"Sie haben kein Leserecht für diesen Beleg (%s) ! Stellen Sie sicher, dass "
|
||||
"der Benutzer Mitglied der folgenden Gruppe ist: %s."
|
||||
"Sie haben kein Leserecht für diesen Satz (%s) ! Stellen Sie sicher, dass der "
|
||||
"Benutzer Mitglied der folgenden Gruppe ist: %s."
|
||||
|
||||
#. module: base
|
||||
#: view:res.bank:0
|
||||
|
|
|
@ -12,8 +12,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
"X-Poedit-Country: GREECE\n"
|
||||
"X-Poedit-Language: Greek\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-04 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-11 05:29+0000\n"
|
||||
"X-Generator: Launchpad (build 14123)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -9,8 +9,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||
"X-Poedit-Language: Persian\n"
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -131,7 +131,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Le domaine, optionnel, est utilisé pour limiter les valeurs possibles des "
|
||||
"champs concernés. Il s'exprime en langage Python sous forme de triplets. Par "
|
||||
"exemple : [('color','=',rouge')]"
|
||||
"exemple : [('color','=','rouge')]"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,ref:0
|
||||
|
@ -202,7 +202,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.sequence,number_increment:0
|
||||
msgid "Increment Number"
|
||||
msgstr "Incrémenter le Numéro"
|
||||
msgstr "Incrémenter le numéro"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_res_company_tree
|
||||
|
@ -590,7 +590,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner,title:0
|
||||
msgid "Partner Form"
|
||||
msgstr "Formulaire des partenaires"
|
||||
msgstr "Forme juridique"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -1661,7 +1661,7 @@ msgid ""
|
|||
"do not wish to add more users at this stage, you can always do this later."
|
||||
msgstr ""
|
||||
"Créez des utilisateurs additionnels et assignez-les à des groupes qui leur "
|
||||
"permettra d'avoir accès à des fonctionnalités choisies dans le système. "
|
||||
"permettront d'avoir accès à des fonctionnalités choisies dans le système. "
|
||||
"Cliquez sur 'Terminé' si vous ne désirez pas ajouter plus d'utilisateurs "
|
||||
"pour l'instant, vous pourrez toujours en ajouter plus tard."
|
||||
|
||||
|
@ -2177,7 +2177,7 @@ msgstr "terminer"
|
|||
#: selection:ir.ui.view,type:0
|
||||
#: selection:wizard.ir.model.menu.create.line,view_type:0
|
||||
msgid "Calendar"
|
||||
msgstr "Calendrier"
|
||||
msgstr "Créer un calendrier"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.address,partner_id:0
|
||||
|
@ -2202,9 +2202,6 @@ msgid ""
|
|||
"separated list of valid field names (optionally followed by asc/desc for the "
|
||||
"direction)"
|
||||
msgstr ""
|
||||
"\"order\" spécifié non valide, une \"ordre\" de spécification est une liste "
|
||||
"de nom de champs séparé par des virgules (optionnel suivi par le sens "
|
||||
"croissant/décroissant)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_module_module_dependency
|
||||
|
@ -3550,12 +3547,13 @@ msgid ""
|
|||
"Would your payment have been carried out after this mail was sent, please "
|
||||
"consider the present one as void."
|
||||
msgstr ""
|
||||
"Veuiller noter que les paiements ci dessous sont maintenant dus. Si votre "
|
||||
"paiement a été envoyé, nous recevrons rapidement le détail de votre "
|
||||
"paiements. Si votre paiement est décallé, merci de nous contacter pour en "
|
||||
"discuter. \n"
|
||||
"Si votre paiement a déjà réglé après que ce courriel soit parti, veuillez ne "
|
||||
"pas tenir compte de cet envoi."
|
||||
"Veuillez noter que les paiements ci-dessous sont maintenant dus. \n"
|
||||
"Si votre règlement nous a été envoyé, merci de nous en préciser rapidement "
|
||||
"les modalités.\n"
|
||||
"Nous vous invitons à nous contacter au cas où ce retard serait volontaire, "
|
||||
"et cela afin de nous en communiquer les motifs.\n"
|
||||
"Dans le cas où votre règlement nous parviendrait avant réception de ce "
|
||||
"courriel, nous vous demandons de considérer cette relance comme non avenue."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mx
|
||||
|
@ -7159,7 +7157,7 @@ msgstr "Filtre"
|
|||
#. module: base
|
||||
#: model:res.partner.title,shortcut:base.res_partner_title_madam
|
||||
msgid "Ms."
|
||||
msgstr "Mme"
|
||||
msgstr "Mlle"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ch
|
||||
|
@ -8317,7 +8315,8 @@ msgstr "Administration"
|
|||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
msgid "Click on Update below to start the process..."
|
||||
msgstr "Cliquer sur Mise à Jour afin de lancer l'opération..."
|
||||
msgstr ""
|
||||
"Cliquer sur le bouton Mettre à jour ci-dessous afin de lancer l'opération..."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ir
|
||||
|
@ -8955,7 +8954,7 @@ msgstr "Relation de l'objet"
|
|||
#: view:ir.rule:0
|
||||
#: view:res.partner:0
|
||||
msgid "General"
|
||||
msgstr "Générale"
|
||||
msgstr "Général"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.uz
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-30 21:09+0000\n"
|
||||
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
|
||||
"PO-Revision-Date: 2011-11-13 17:25+0000\n"
|
||||
"Last-Translator: Xosé <Unknown>\n"
|
||||
"Language-Team: Galician <gl@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: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-14 05:15+0000\n"
|
||||
"X-Generator: Launchpad (build 14277)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -1973,7 +1973,7 @@ msgstr "Mensaxes"
|
|||
#: code:addons/base/module/wizard/base_update_translations.py:38
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr "¡Erro!"
|
||||
msgstr "Erro!"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: base
|
||||
|
@ -720,7 +720,7 @@ msgstr "Radni dani"
|
|||
#. module: base
|
||||
#: selection:ir.module.module,license:0
|
||||
msgid "Other OSI Approved Licence"
|
||||
msgstr ""
|
||||
msgstr "Druga OSI odobrena licenca"
|
||||
|
||||
#. module: base
|
||||
#: help:res.config.users,context_lang:0
|
||||
|
@ -1057,7 +1057,7 @@ msgstr "Jezik \"%s\" ne postoji/ nije definiran"
|
|||
#: code:addons/base/publisher_warranty/publisher_warranty.py:163
|
||||
#, python-format
|
||||
msgid "Error during communication with the publisher warranty server."
|
||||
msgstr ""
|
||||
msgstr "Greška tijekom komunikacije sa serverom nositelja održavanja."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,email:0
|
||||
|
@ -2136,6 +2136,8 @@ msgid ""
|
|||
"separated list of valid field names (optionally followed by asc/desc for the "
|
||||
"direction)"
|
||||
msgstr ""
|
||||
"Naveden pogrešan \"poredak\". Ispravan \"poredak\" čini lista naziva polja "
|
||||
"razdvojenih zarezom (opcionalno s asc/desc za smijer)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_module_module_dependency
|
||||
|
@ -2597,7 +2599,7 @@ msgstr "Naurujski"
|
|||
#: code:addons/base/module/module.py:200
|
||||
#, python-format
|
||||
msgid "The certificate ID of the module must be unique !"
|
||||
msgstr ""
|
||||
msgstr "Oznaka certifikata (ID) mora biti jedinstvena !"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_property
|
||||
|
@ -2674,7 +2676,7 @@ msgstr "EAN13"
|
|||
#: code:addons/orm.py:1622
|
||||
#, python-format
|
||||
msgid "Invalid Architecture!"
|
||||
msgstr ""
|
||||
msgstr "Pogrešna arhitektura!"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pt
|
||||
|
@ -2686,6 +2688,7 @@ msgstr "Portugal"
|
|||
msgid ""
|
||||
"You cannot have multiple records with the same id for the same module !"
|
||||
msgstr ""
|
||||
"Nije dozvoljeno imatii više zapisa s istom oznakom (ID) u istom modulu."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,certificate:0
|
||||
|
@ -3952,7 +3955,7 @@ msgstr "Zelenortska Republika (Zelenortski otoci)"
|
|||
#. module: base
|
||||
#: view:base.module.import:0
|
||||
msgid "Select module package to import (.zip file):"
|
||||
msgstr ""
|
||||
msgstr "Odaberite zapakirani modul za učitavanje (.zip datoteka):"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.act_res_partner_event
|
||||
|
@ -4347,7 +4350,7 @@ msgstr "Želite očistiti ID-ove ? "
|
|||
#: field:publisher_warranty.contract,name:0
|
||||
#: field:publisher_warranty.contract.wizard,name:0
|
||||
msgid "Serial Key"
|
||||
msgstr ""
|
||||
msgstr "Serijski ključ"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.request,priority:0
|
||||
|
@ -4424,7 +4427,7 @@ msgstr "Mapiranje polja"
|
|||
#. module: base
|
||||
#: view:publisher_warranty.contract:0
|
||||
msgid "Refresh Validation Dates"
|
||||
msgstr ""
|
||||
msgstr "Osvježite datume važenja"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -8788,9 +8788,9 @@ msgid ""
|
|||
"Check this box if the partner is a supplier. If it's not checked, purchase "
|
||||
"people will not see it when encoding a purchase order."
|
||||
msgstr ""
|
||||
"Seleziona questa casella se il partner è un fornitore. Se non selezionata, "
|
||||
"gli acquirenti non la vedranno durante la definizione di un ordine di "
|
||||
"acquisto."
|
||||
"Seleziona questa casella se il partner è un fornitore. Se non selezionata, i "
|
||||
"responsabili acquisti non vedranno il partner durante la definizione di un "
|
||||
"ordine di acquisto."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,relation_field:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-30 20:44+0000\n"
|
||||
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
|
||||
"PO-Revision-Date: 2011-10-26 15:29+0000\n"
|
||||
"Last-Translator: Michel Vorenhout <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: 2011-10-01 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -8107,9 +8107,9 @@ msgid ""
|
|||
"loading a new language it becomes available as default interface language "
|
||||
"for users and partners."
|
||||
msgstr ""
|
||||
"Deze assitent helpt u een nieuwe taal toe te voegen aan uw OpenERP systeem. "
|
||||
"Na het laden van de nieuwe taal komt het beschikbaar als standaard interface "
|
||||
"taal voor gebruikers en relaties."
|
||||
"Deze assistent helpt u een nieuwe taal toe te voegen aan uw OpenERP systeem. "
|
||||
"Na het laden van de nieuwe taal komt deze beschikbaar als standaard "
|
||||
"interface taal voor gebruikers en relaties."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,subject:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-05 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 14085)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -211,7 +211,7 @@ msgstr "Struktura podjetja"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
msgstr ""
|
||||
msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -524,7 +524,7 @@ msgstr "Ime opcijskega modula predmeta na katerem bo to dejanje vidno"
|
|||
#. module: base
|
||||
#: field:workflow.transition,trigger_expr_id:0
|
||||
msgid "Trigger Expression"
|
||||
msgstr ""
|
||||
msgstr "Izraz sprožilnika"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.jo
|
||||
|
@ -956,7 +956,7 @@ msgstr "Spletna stran"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.gs
|
||||
msgid "S. Georgia & S. Sandwich Isls."
|
||||
msgstr ""
|
||||
msgstr "S. Georgia in S. Sandwich otoki"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.url,url:0
|
||||
|
@ -1278,7 +1278,7 @@ msgstr "Računska natančnost"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Sinhalese / සිංහල"
|
||||
msgstr ""
|
||||
msgstr "Sinhalese / සිංහල"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_wizard_ir_model_menu_create_line
|
||||
|
@ -1730,7 +1730,7 @@ msgstr "Poenostavljen"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.st
|
||||
msgid "Saint Tome (Sao Tome) and Principe"
|
||||
msgstr ""
|
||||
msgstr "Saint Tome (Sao Tome) in Principe"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.partner.address,type:0
|
||||
|
@ -2165,7 +2165,7 @@ msgstr "Ime partnerja"
|
|||
#. module: base
|
||||
#: field:workflow.activity,signal_send:0
|
||||
msgid "Signal (subflow.*)"
|
||||
msgstr ""
|
||||
msgstr "Signal (subflow.*)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_17
|
||||
|
@ -2545,7 +2545,7 @@ msgstr "Ruska federacija"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Urdu / اردو"
|
||||
msgstr ""
|
||||
msgstr "Urdu / اردو"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,name:0
|
||||
|
@ -3218,7 +3218,7 @@ msgstr "Poročila po meri"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Abkhazian / аҧсуа"
|
||||
msgstr ""
|
||||
msgstr "Copy text \t Abkhazian / аҧсуа"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.configuration:0
|
||||
|
@ -3865,7 +3865,7 @@ msgstr "Seznam kontrole dostopa"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.um
|
||||
msgid "USA Minor Outlying Islands"
|
||||
msgstr ""
|
||||
msgstr "Manjši oddaljeni otoki ZDA"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank,state:0
|
||||
|
@ -3894,7 +3894,7 @@ msgstr "Datum inicializacije"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Gujarati / ગુજરાતી"
|
||||
msgstr ""
|
||||
msgstr "Gujarati / ગુજરાતી"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:257
|
||||
|
@ -3946,7 +3946,7 @@ msgstr "Ure"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.gp
|
||||
msgid "Guadeloupe (French)"
|
||||
msgstr ""
|
||||
msgstr "Guadeloupe (francoski)"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_lang.py:157
|
||||
|
@ -4088,7 +4088,7 @@ msgstr "Natančnost cene"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Latvian / latviešu valoda"
|
||||
msgstr ""
|
||||
msgstr "Latvijsko / latviešu valoda"
|
||||
|
||||
#. module: base
|
||||
#: view:res.config:0
|
||||
|
@ -4099,7 +4099,7 @@ msgstr "vsep"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "French / Français"
|
||||
msgstr ""
|
||||
msgstr "Francosko / Français"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:1049
|
||||
|
@ -4193,7 +4193,7 @@ msgstr "Meniji"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Serbian (Latin) / srpski"
|
||||
msgstr ""
|
||||
msgstr "Srbsko (Latin) / srpski"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.il
|
||||
|
@ -4266,7 +4266,7 @@ msgstr "Banke"
|
|||
#. module: base
|
||||
#: view:res.log:0
|
||||
msgid "Unread"
|
||||
msgstr ""
|
||||
msgstr "Neprebrano"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.cron,doall:0
|
||||
|
@ -4393,7 +4393,7 @@ msgstr "Za sorodna polja, tehnično ime ciljnega modela"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Indonesian / Bahasa Indonesia"
|
||||
msgstr ""
|
||||
msgstr "Indonezijski / Bahasa Indonesia"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view,inherit_id:0
|
||||
|
@ -4847,7 +4847,7 @@ msgstr "Elementi delovnih procesov"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.vc
|
||||
msgid "Saint Vincent & Grenadines"
|
||||
msgstr ""
|
||||
msgstr "Saint Vincent in Grenadine"
|
||||
|
||||
#. module: base
|
||||
#: field:partner.sms.send,password:0
|
||||
|
@ -4886,7 +4886,7 @@ msgstr "RML interna glava"
|
|||
#. module: base
|
||||
#: field:ir.actions.act_window,search_view_id:0
|
||||
msgid "Search View Ref."
|
||||
msgstr ""
|
||||
msgstr "Sklic pogleda iskanja"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,installed_version:0
|
||||
|
@ -5144,7 +5144,7 @@ msgstr "Nadrejena kategorija"
|
|||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
msgid "Integer Big"
|
||||
msgstr ""
|
||||
msgstr "Veliko celo število"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.partner.address,type:0
|
||||
|
@ -5440,7 +5440,7 @@ msgstr "Naprej"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Thai / ภาษาไทย"
|
||||
msgstr ""
|
||||
msgstr "Tajski/ ภาษาไทย"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:158
|
||||
|
@ -5523,7 +5523,7 @@ msgstr "Privzeto podjetje"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (EC) / Español (EC)"
|
||||
msgstr ""
|
||||
msgstr "Špansko (EC) / Español (EC)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.ui.view,xml_id:0
|
||||
|
@ -5598,7 +5598,7 @@ msgstr "Zaposlovanje"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.re
|
||||
msgid "Reunion (French)"
|
||||
msgstr ""
|
||||
msgstr "Reunion (francoski)"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:321
|
||||
|
@ -5732,7 +5732,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Flemish (BE) / Vlaams (BE)"
|
||||
msgstr ""
|
||||
msgstr "Flamski (BE) / Vlaams (BE)"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.cron,interval_number:0
|
||||
|
@ -5797,7 +5797,7 @@ msgstr "Bližnjice po meri"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Vietnamese / Tiếng Việt"
|
||||
msgstr ""
|
||||
msgstr "Vietnamski/ Tiếng Việt"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.dz
|
||||
|
@ -5915,7 +5915,7 @@ msgstr "Nevtralno območje"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Hindi / हिंदी"
|
||||
msgstr ""
|
||||
msgstr "Hindujski / हिंदी"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -6121,7 +6121,7 @@ msgstr "Osnova"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Telugu / తెలుగు"
|
||||
msgstr ""
|
||||
msgstr "Copy text \t Telugu / తెలుగు"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.lr
|
||||
|
@ -6210,7 +6210,7 @@ msgstr "Kode zaporedja"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CO) / Español (CO)"
|
||||
msgstr ""
|
||||
msgstr "Špansko (CO) / Español (CO)"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.configuration:0
|
||||
|
@ -6250,7 +6250,7 @@ msgstr "res.log"
|
|||
#: help:ir.translation,module:0
|
||||
#: help:ir.translation,xml_id:0
|
||||
msgid "Maps to the ir_model_data for which this translation is provided."
|
||||
msgstr ""
|
||||
msgstr "Mapira k ir_model_data za katerega je zagotovljen prevod."
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -6266,7 +6266,7 @@ msgstr "Tedni"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.af
|
||||
msgid "Afghanistan, Islamic State of"
|
||||
msgstr ""
|
||||
msgstr "Afganistan, Muslimanska država"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_module_import.py:67
|
||||
|
@ -6324,7 +6324,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Chinese (TW) / 正體字"
|
||||
msgstr ""
|
||||
msgstr "Kitajsko (TW) / 正體字"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_request
|
||||
|
@ -6382,7 +6382,7 @@ msgstr "Ime storitve"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.pn
|
||||
msgid "Pitcairn Island"
|
||||
msgstr ""
|
||||
msgstr "Otok Pitcairn"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
|
@ -6585,7 +6585,7 @@ msgstr "Nameščena različica"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Mongolian / монгол"
|
||||
msgstr ""
|
||||
msgstr "Mongolski / монгол"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mr
|
||||
|
@ -6622,7 +6622,7 @@ msgstr "Krovno podjetje"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CR) / Español (CR)"
|
||||
msgstr ""
|
||||
msgstr "Špansko (CR) / Español (CR)"
|
||||
|
||||
#. module: base
|
||||
#: field:res.currency.rate,rate:0
|
||||
|
@ -6652,7 +6652,7 @@ msgstr "Orodja"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.kn
|
||||
msgid "Saint Kitts & Nevis Anguilla"
|
||||
msgstr ""
|
||||
msgstr "Saint Kitts in Nevis Anguilla"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_currency.py:100
|
||||
|
@ -6717,7 +6717,7 @@ msgstr "Model kateremu ta polja pripadajo"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.mq
|
||||
msgid "Martinique (French)"
|
||||
msgstr ""
|
||||
msgstr "Martinique (francoski)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.sequence.type:0
|
||||
|
@ -6781,7 +6781,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.ui.menu,child_id:0
|
||||
msgid "Child IDs"
|
||||
msgstr ""
|
||||
msgstr "Podrejeni ID-ji"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_actions.py:713
|
||||
|
@ -7231,7 +7231,7 @@ msgstr "Stranka"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (NI) / Español (NI)"
|
||||
msgstr ""
|
||||
msgstr "Špansko (NI) / Español (NI)"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,shortdesc:0
|
||||
|
@ -7542,7 +7542,7 @@ msgstr "Stanje"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Galician / Galego"
|
||||
msgstr ""
|
||||
msgstr "Galski / Galego"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.no
|
||||
|
@ -7766,7 +7766,7 @@ msgstr "Nedefinirana metoda 'get'!"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Norwegian Bokmål / Norsk bokmål"
|
||||
msgstr ""
|
||||
msgstr "Norveški Bokmål / Norsk bokmål"
|
||||
|
||||
#. module: base
|
||||
#: help:res.config.users,new_password:0
|
||||
|
@ -7827,7 +7827,7 @@ msgstr "ir.values"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Occitan (FR, post 1500) / Occitan"
|
||||
msgstr ""
|
||||
msgstr "Copy text \t Occitan (FR, post 1500) / Occitan"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.open_module_tree
|
||||
|
@ -7856,7 +7856,7 @@ msgstr "Demokratična republika Kongo"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Malayalam / മലയാളം"
|
||||
msgstr ""
|
||||
msgstr "Malezijski / മലയാളം"
|
||||
|
||||
#. module: base
|
||||
#: view:res.request:0
|
||||
|
@ -7928,7 +7928,7 @@ msgstr "Koda države mora biti edinstvena!"
|
|||
#. module: base
|
||||
#: selection:ir.module.module.dependency,state:0
|
||||
msgid "Uninstallable"
|
||||
msgstr ""
|
||||
msgstr "Nenamestljiv"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner.category:0
|
||||
|
@ -8018,7 +8018,7 @@ msgstr "2.sklic dokument"
|
|||
#. module: base
|
||||
#: field:res.request,ref_doc1:0
|
||||
msgid "Document Ref 1"
|
||||
msgstr ""
|
||||
msgstr "1.sklic dokumenta"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ga
|
||||
|
@ -8055,7 +8055,7 @@ msgstr "Copy text \t 1. %c ==> Pet 5.Dec 2008 5 18:25:20"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.nc
|
||||
msgid "New Caledonia (French)"
|
||||
msgstr ""
|
||||
msgstr "Nova Caledonia (francoski)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cy
|
||||
|
@ -8262,7 +8262,7 @@ msgstr "Gradiniki na uporabnika"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Slovak / Slovenský jazyk"
|
||||
msgstr ""
|
||||
msgstr "Slovaški / Slovenský jazyk"
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.export,state:0
|
||||
|
@ -8570,7 +8570,7 @@ msgstr "Tanzanija"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Danish / Dansk"
|
||||
msgstr ""
|
||||
msgstr "Danski / Dansk"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.model.fields,select_level:0
|
||||
|
@ -8703,7 +8703,7 @@ msgstr "Dominikanska republika"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Serbian (Cyrillic) / српски"
|
||||
msgstr ""
|
||||
msgstr "Srbski (Cirilica) / српски"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2161
|
||||
|
@ -8860,7 +8860,7 @@ msgstr "Interesi & priložnosti"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Romanian / română"
|
||||
msgstr ""
|
||||
msgstr "Romunski/ română"
|
||||
|
||||
#. module: base
|
||||
#: view:res.log:0
|
||||
|
@ -8985,7 +8985,7 @@ msgstr "Datoteka spletne ikone"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Persian / فارس"
|
||||
msgstr ""
|
||||
msgstr "Perzijski / فارس"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.act_window:0
|
||||
|
@ -9099,7 +9099,7 @@ msgstr "Pogodba založniške garancije"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Bulgarian / български език"
|
||||
msgstr ""
|
||||
msgstr "Bolgarski / български език"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_aftersale
|
||||
|
@ -9212,7 +9212,7 @@ msgstr "Ni mogoče posodobiti"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Klingon"
|
||||
msgstr ""
|
||||
msgstr "Klingon"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sg
|
||||
|
@ -9295,7 +9295,7 @@ msgstr "%X - primeren čas zastopnja"
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (SV) / Español (SV)"
|
||||
msgstr ""
|
||||
msgstr "Španski (SV) / Español (SV)"
|
||||
|
||||
#. module: base
|
||||
#: help:res.lang,grouping:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:00+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -28,7 +28,7 @@ msgstr "Domän"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
msgid "Saint Helena"
|
||||
msgstr "St Helena"
|
||||
msgstr "Sankta Helena"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
|
@ -38,7 +38,7 @@ msgstr "Övrig konfiguration"
|
|||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
msgid "DateTime"
|
||||
msgstr "DatumTid"
|
||||
msgstr "Datum/Tid"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/fields.py:534
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:05+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-07-23 16:37+0000\n"
|
||||
"Last-Translator: OpenBMS JSC <Unknown>\n"
|
||||
"PO-Revision-Date: 2011-11-05 03:38+0000\n"
|
||||
"Last-Translator: Vuong Kien Hung <Unknown>\n"
|
||||
"Language-Team: Vietnamese <vi@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: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-06 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -9053,7 +9053,7 @@ msgstr "Hình thức tách"
|
|||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
msgid "Note that this operation might take a few minutes."
|
||||
msgstr ""
|
||||
msgstr "Lưu ý hoạt động này có thể mất vài phút"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_localisation
|
||||
|
@ -9106,7 +9106,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "%j - Day of the year [001,366]."
|
||||
msgstr ""
|
||||
msgstr "%j - Ngày của năm [001,366]"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,mobile:0
|
||||
|
@ -9189,7 +9189,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: help:ir.sequence,number_increment:0
|
||||
msgid "The next number of the sequence will be incremented by this number"
|
||||
msgstr ""
|
||||
msgstr "Số tiếp theo của dãy thứ tự sẽ được tăng bằng số này"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.cron,function:0
|
||||
|
@ -9238,7 +9238,7 @@ msgstr "Các đối tác: "
|
|||
#. module: base
|
||||
#: model:res.country,name:base.kp
|
||||
msgid "North Korea"
|
||||
msgstr ""
|
||||
msgstr "Bắc Triều Tiên"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.server,state:0
|
||||
|
@ -9269,7 +9269,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.exports,name:0
|
||||
msgid "Export Name"
|
||||
msgstr ""
|
||||
msgstr "Tên Trích xuất"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner.address,type:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-10-01 05:07+0000\n"
|
||||
"X-Generator: Launchpad (build 14071)\n"
|
||||
"X-Launchpad-Export-Date: 2011-11-04 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 14231)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
|
|
@ -2043,7 +2043,9 @@
|
|||
<field name="view_id" ref="ir_mail_server_list" />
|
||||
<field name="search_view_id" ref="view_ir_mail_server_search"/>
|
||||
</record>
|
||||
<menuitem id="next_id_15" name="Parameters" parent="base.menu_config" groups="base.group_extended" />
|
||||
<menuitem id="menu_mail_servers" parent="base.next_id_15" action="action_ir_mail_server_list" sequence="15"/>
|
||||
|
||||
<menuitem id="menu_email" name="Email" parent="base.menu_config" groups="base.group_extended"/>
|
||||
<menuitem id="menu_mail_servers" parent="menu_email" action="action_ir_mail_server_list" sequence="15"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -117,7 +117,7 @@ class report_xml(osv.osv):
|
|||
'multi': fields.boolean('On multiple doc.', help="If set to true, the action will not be displayed on the right toolbar of a form view."),
|
||||
'attachment': fields.char('Save As Attachment Prefix', size=128, help='This is the filename of the attachment used to store the printing result. Keep empty to not save the printed reports. You can use a python expression with the object and time variables.'),
|
||||
'attachment_use': fields.boolean('Reload from Attachment', help='If you check this, then the second time the user prints with same attachment name, it returns the previous report.'),
|
||||
'auto': fields.boolean('Custom python parser', required=True),
|
||||
'auto': fields.boolean('Custom python parser'),
|
||||
|
||||
'header': fields.boolean('Add RML header', help="Add or not the coporate RML header"),
|
||||
|
||||
|
@ -265,12 +265,13 @@ class act_window(osv.osv):
|
|||
help="Model name of the object to open in the view window"),
|
||||
'src_model': fields.char('Source Object', size=64,
|
||||
help="Optional model name of the objects on which this action should be visible"),
|
||||
'target': fields.selection([('current','Current Window'),('new','New Window')], 'Target Window'),
|
||||
'target': fields.selection([('current','Current Window'),('new','New Window'),('inline','Inline')], 'Target Window'),
|
||||
'view_type': fields.selection((('tree','Tree'),('form','Form')), string='View Type', required=True,
|
||||
help="View type: set to 'tree' for a hierarchical tree view, or 'form' for other views"),
|
||||
'view_mode': fields.char('View Mode', size=250, required=True,
|
||||
help="Comma-separated list of allowed view modes, such as 'form', 'tree', 'calendar', etc. (Default: tree,form)"),
|
||||
'usage': fields.char('Action Usage', size=32),
|
||||
'usage': fields.char('Action Usage', size=32,
|
||||
help="Used to filter menu and home actions from the user form."),
|
||||
'view_ids': fields.one2many('ir.actions.act_window.view', 'act_window_id', 'Views'),
|
||||
'views': fields.function(_views_get_fnc, method=True, type='binary', string='Views',
|
||||
help="This function field computes the ordered list of views that should be enabled " \
|
||||
|
|
|
@ -25,7 +25,7 @@ Store database-specific configuration parameters
|
|||
from osv import osv,fields
|
||||
import uuid
|
||||
import datetime
|
||||
from tools import misc
|
||||
from tools import misc, config
|
||||
|
||||
"""
|
||||
A dictionary holding some configuration parameters to be initialized when the database is created.
|
||||
|
@ -33,6 +33,7 @@ A dictionary holding some configuration parameters to be initialized when the da
|
|||
_default_parameters = {
|
||||
"database.uuid": lambda: str(uuid.uuid1()),
|
||||
"database.create_date": lambda: datetime.datetime.now().strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
"web.base.url": lambda: "http://localhost:%s" % config.get('xmlrpc_port'),
|
||||
}
|
||||
|
||||
class ir_config_parameter(osv.osv):
|
||||
|
|
|
@ -44,8 +44,8 @@ _logger = logging.getLogger('ir.mail_server')
|
|||
|
||||
class MailDeliveryException(osv.except_osv):
|
||||
"""Specific exception subclass for mail delivery errors"""
|
||||
def __init__(self, name, value, exc_type='warning'):
|
||||
super(MailDeliveryException, self).__init__(name, value, exc_type=exc_type)
|
||||
def __init__(self, name, value):
|
||||
super(MailDeliveryException, self).__init__(name, value)
|
||||
|
||||
class WriteToLogger(object):
|
||||
"""debugging helper: behave as a fd and pipe to logger at the given level"""
|
||||
|
@ -431,7 +431,9 @@ class ir_mail_server(osv.osv):
|
|||
# ignored, just a consequence of the previous exception
|
||||
pass
|
||||
except Exception, e:
|
||||
msg = _("Mail delivery failed via SMTP server '%s'.\n%s: %s") % (smtp_server, e.__class__.__name__, e)
|
||||
msg = _("Mail delivery failed via SMTP server '%s'.\n%s: %s") % (tools.ustr(smtp_server),
|
||||
e.__class__.__name__,
|
||||
tools.ustr(e))
|
||||
_logger.exception(msg)
|
||||
raise MailDeliveryException(_("Mail delivery failed"), msg)
|
||||
return message_id
|
||||
|
|
|
@ -124,12 +124,13 @@ class ir_model(osv.osv):
|
|||
|
||||
# overridden to allow searching both on model name (model field)
|
||||
# and model description (name field)
|
||||
def name_search(self, cr, uid, name='', args=None, operator='ilike', context=None, limit=None):
|
||||
def _name_search(self, cr, uid, name='', args=None, operator='ilike', context=None, limit=100, name_get_uid=None):
|
||||
if args is None:
|
||||
args = []
|
||||
domain = args + ['|', ('model', operator, name), ('name', operator, name)]
|
||||
return super(ir_model, self).name_search(cr, uid, None, domain,
|
||||
operator=operator, limit=limit, context=context)
|
||||
return self.name_get(cr, name_get_uid or uid,
|
||||
super(ir_model, self).search(cr, uid, domain, limit=limit, context=context),
|
||||
context=context)
|
||||
|
||||
|
||||
def unlink(self, cr, user, ids, context=None):
|
||||
|
@ -671,18 +672,20 @@ class ir_model_data(osv.osv):
|
|||
action_id = False
|
||||
|
||||
if xml_id:
|
||||
cr.execute('''SELECT imd.id, imd.res_id, md.id
|
||||
cr.execute('''SELECT imd.id, imd.res_id, md.id, imd.model
|
||||
FROM ir_model_data imd LEFT JOIN %s md ON (imd.res_id = md.id)
|
||||
WHERE imd.module=%%s AND imd.name=%%s''' % model_obj._table,
|
||||
(module, xml_id))
|
||||
results = cr.fetchall()
|
||||
for imd_id2,res_id2,real_id2 in results:
|
||||
for imd_id2,res_id2,real_id2,real_model in results:
|
||||
if not real_id2:
|
||||
self._get_id.clear_cache(self, uid, module, xml_id)
|
||||
self.get_object_reference.clear_cache(self, uid, module, xml_id)
|
||||
cr.execute('delete from ir_model_data where id=%s', (imd_id2,))
|
||||
res_id = False
|
||||
else:
|
||||
assert model == real_model, "External ID conflict, %s already refers to a `%s` record,"\
|
||||
" you can't define a `%s` record with this ID." % (xml_id, real_model, model)
|
||||
res_id,action_id = res_id2,imd_id2
|
||||
|
||||
if action_id and res_id:
|
||||
|
|
|
@ -27,22 +27,6 @@ import tools
|
|||
import os
|
||||
import logging
|
||||
|
||||
def _check_xml(self, cr, uid, ids, context=None):
|
||||
logger = logging.getLogger('init')
|
||||
for view in self.browse(cr, uid, ids, context):
|
||||
eview = etree.fromstring(view.arch.encode('utf8'))
|
||||
frng = tools.file_open(os.path.join('base','rng','view.rng'))
|
||||
try:
|
||||
relaxng_doc = etree.parse(frng)
|
||||
relaxng = etree.RelaxNG(relaxng_doc)
|
||||
if not relaxng.validate(eview):
|
||||
for error in relaxng.error_log:
|
||||
logger.error(tools.ustr(error))
|
||||
return False
|
||||
finally:
|
||||
frng.close()
|
||||
return True
|
||||
|
||||
class view_custom(osv.osv):
|
||||
_name = 'ir.ui.view.custom'
|
||||
_order = 'create_date desc' # search(limit=1) should return the last customization
|
||||
|
@ -86,6 +70,23 @@ class view(osv.osv):
|
|||
'priority': 16
|
||||
}
|
||||
_order = "priority,name"
|
||||
|
||||
def _check_xml(self, cr, uid, ids, context=None):
|
||||
logger = logging.getLogger('init')
|
||||
for view in self.browse(cr, uid, ids, context):
|
||||
eview = etree.fromstring(view.arch.encode('utf8'))
|
||||
frng = tools.file_open(os.path.join('base','rng','view.rng'))
|
||||
try:
|
||||
relaxng_doc = etree.parse(frng)
|
||||
relaxng = etree.RelaxNG(relaxng_doc)
|
||||
if not relaxng.validate(eview):
|
||||
for error in relaxng.error_log:
|
||||
logger.error(tools.ustr(error))
|
||||
return False
|
||||
finally:
|
||||
frng.close()
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_xml, 'Invalid XML for View Architecture!', ['arch'])
|
||||
]
|
||||
|
|
|
@ -109,8 +109,8 @@
|
|||
<field name="sequence">14</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.category" id="module_category_vertical_applications">
|
||||
<field name="name">Verticalizations</field>
|
||||
<record model="ir.module.category" id="module_category_specific_industry_applications">
|
||||
<field name="name">Specific Industry Applications</field>
|
||||
<field name="sequence">15</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -70,6 +70,9 @@ class res_config_configurable(osv.osv_memory):
|
|||
res = next.action_launch(context=context)
|
||||
res['nodestroy'] = False
|
||||
return res
|
||||
#if there is no next action and if html is in the context: reload instead of closing
|
||||
if 'html' in context:
|
||||
return {'type' : 'ir.actions.reload'}
|
||||
return {'type' : 'ir.actions.act_window_close'}
|
||||
|
||||
def start(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -150,7 +150,6 @@ class res_partner(osv.osv):
|
|||
_defaults = {
|
||||
'active': lambda *a: 1,
|
||||
'customer': lambda *a: 1,
|
||||
'address': [{'type': 'default'}],
|
||||
'category_id': _default_category,
|
||||
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c),
|
||||
'color': 0,
|
||||
|
|
|
@ -111,7 +111,10 @@
|
|||
<field name="model">res.partner.address</field>
|
||||
<field name="type">kanban</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban >
|
||||
<kanban>
|
||||
<field name="color"/>
|
||||
<field name="name"/>
|
||||
<field name="email"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/>
|
||||
|
@ -133,22 +136,22 @@
|
|||
<table class="oe_kanban_table">
|
||||
<tr>
|
||||
<td valign="top" width="22" align="left">
|
||||
<img src="/web/static/src/img/persons.png"/>
|
||||
<img src="/base/static/src/img/kanban_partner.png" width="64" height="64"/>
|
||||
</td>
|
||||
<td valign="top" align="left">
|
||||
<div class="oe_kanban_title2">
|
||||
<field name="title"/>
|
||||
<t t-if="record.title.raw_value && record.function.raw_value">,</t>
|
||||
<t t-if="record.title.raw_value and record.function.raw_value">,</t>
|
||||
<field name="function"/>
|
||||
</div>
|
||||
<div class="oe_kanban_title3">
|
||||
<field name="partner_id"/>
|
||||
<t t-if="record.partner_id.raw_value && record.country_id.raw_value">,</t>
|
||||
<t t-if="record.partner_id.raw_value and record.country_id.raw_value">,</t>
|
||||
<field name="country_id"/>
|
||||
</div>
|
||||
<div class="oe_kanban_title3">
|
||||
<i><field name="email"/>
|
||||
<t t-if="record.phone.raw_value && record.email.raw_value">,</t>
|
||||
<t t-if="record.phone.raw_value and record.email.raw_value">,</t>
|
||||
<field name="phone"/></i>
|
||||
</div>
|
||||
</td>
|
||||
|
@ -430,6 +433,9 @@
|
|||
<field name="type">kanban</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<field name="color"/>
|
||||
<field name="name"/>
|
||||
<field name="email"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/>
|
||||
|
@ -450,23 +456,23 @@
|
|||
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border">
|
||||
<table class="oe_kanban_table">
|
||||
<tr>
|
||||
<td valign="top" width="22" align="left">
|
||||
<img src="/web/static/src/img/partner.png"/>
|
||||
<td valign="top" width="64" align="left">
|
||||
<img src="/base/static/src/img/kanban_partner.png" width="64" height="64"/>
|
||||
</td>
|
||||
<td valign="top" align="left">
|
||||
<div class="oe_kanban_title2">
|
||||
<field name="title"/>
|
||||
<t t-if="record.title.raw_value && record.country.raw_value">,</t>
|
||||
<t t-if="record.title.raw_value and record.country.raw_value">,</t>
|
||||
<field name="country"/>
|
||||
</div>
|
||||
<div class="oe_kanban_title3">
|
||||
<field name="subname"/>
|
||||
<t t-if="record.subname.raw_value && record.function.raw_value">,</t>
|
||||
<t t-if="record.subname.raw_value and record.function.raw_value">,</t>
|
||||
<field name="function"/>
|
||||
</div>
|
||||
<div class="oe_kanban_title3">
|
||||
<i><field name="email"/>
|
||||
<t t-if="record.phone.raw_value && record.email.raw_value">,</t>
|
||||
<t t-if="record.phone.raw_value and record.email.raw_value">,</t>
|
||||
<field name="phone"/></i>
|
||||
</div>
|
||||
</td>
|
||||
|
|
|
@ -35,6 +35,7 @@ from osv import fields,osv
|
|||
from osv.orm import browse_record
|
||||
from service import security
|
||||
from tools.translate import _
|
||||
import openerp
|
||||
import openerp.exceptions
|
||||
|
||||
class groups(osv.osv):
|
||||
|
@ -205,6 +206,7 @@ class users(osv.osv):
|
|||
return dict.fromkeys(ids, '')
|
||||
|
||||
_columns = {
|
||||
'id': fields.integer('ID'),
|
||||
'name': fields.char('User Name', size=64, required=True, select=True,
|
||||
help="The new user's real name, used for searching"
|
||||
" and most listings"),
|
||||
|
@ -417,13 +419,41 @@ class users(osv.osv):
|
|||
data_id = dataobj._get_id(cr, 1, 'base', 'action_res_users_my')
|
||||
return dataobj.browse(cr, uid, data_id, context=context).res_id
|
||||
|
||||
def authenticate(self, db, login, password, user_agent_env):
|
||||
"""Verifies and returns the user ID corresponding to the given
|
||||
``login`` and ``password`` combination, or False if there was
|
||||
no matching user.
|
||||
|
||||
:param str db: the database on which user is trying to authenticate
|
||||
:param str login: username
|
||||
:param str password: user password
|
||||
:param dict user_agent_env: environment dictionary describing any
|
||||
relevant environment attributes
|
||||
"""
|
||||
uid = self.login(db, login, password)
|
||||
if uid == openerp.SUPERUSER_ID:
|
||||
# Successfully logged in as admin!
|
||||
# Attempt to guess the web base url...
|
||||
if user_agent_env and user_agent_env.get('base_location'):
|
||||
cr = pooler.get_db(db).cursor()
|
||||
try:
|
||||
self.pool.get('ir.config_parameter').set_param(cr, uid, 'web.base.url',
|
||||
user_agent_env['base_location'])
|
||||
cr.commit()
|
||||
except Exception:
|
||||
logging.getLogger('res.users').exception("Failed to update web.base.url configuration parameter")
|
||||
finally:
|
||||
cr.close()
|
||||
return uid
|
||||
|
||||
def login(self, db, login, password):
|
||||
if not password:
|
||||
return False
|
||||
cr = pooler.get_db(db).cursor()
|
||||
try:
|
||||
cr.execute('UPDATE res_users SET date=now() WHERE login=%s AND password=%s AND active RETURNING id',
|
||||
cr.execute("""UPDATE res_users
|
||||
SET date = now() AT TIME ZONE 'UTC'
|
||||
WHERE login=%s AND password=%s AND active RETURNING id""",
|
||||
(tools.ustr(login), tools.ustr(password)))
|
||||
res = cr.fetchone()
|
||||
cr.commit()
|
||||
|
@ -726,6 +756,28 @@ class users_view(osv.osv):
|
|||
return res
|
||||
return super(users_view, self).read(cr, uid, ids, fields, context, load)
|
||||
|
||||
def fields_get(self, cr, user, allfields=None, context=None, write_access=True):
|
||||
res = super(users_view, self).fields_get(cr, user, allfields, context, write_access)
|
||||
apps, others = self.pool.get('res.groups').get_classified(cr, user, context)
|
||||
for app, groups in apps:
|
||||
ids = [g.id for name, g in groups]
|
||||
app_name = name_boolean_groups(ids)
|
||||
sel_name = name_selection_groups(ids)
|
||||
selection = [(g.id, name) for name, g in groups]
|
||||
res[app_name] = {'type': 'boolean', 'string': app}
|
||||
tips = [name + ': ' + (g.comment or '') for name, g in groups]
|
||||
if tips:
|
||||
res[app_name].update(help='\n'.join(tips))
|
||||
res[sel_name] = {'type': 'selection', 'string': 'Group', 'selection': selection}
|
||||
|
||||
for sec, groups in others:
|
||||
for gname, g in groups:
|
||||
name = name_boolean_group(g.id)
|
||||
res[name] = {'type': 'boolean', 'string': gname}
|
||||
if g.comment:
|
||||
res[name].update(help=g.comment)
|
||||
return res
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
|
||||
context=None, toolbar=False, submenu=False):
|
||||
# in form views, transform 'groups_id' into reified group fields
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||
xmlns:a="http://relaxng.org/ns/annotation/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<!-- Handling of element overloading when inheriting from a base
|
||||
template
|
||||
|
@ -44,7 +45,92 @@
|
|||
</rng:optional>
|
||||
</rng:define>
|
||||
|
||||
|
||||
<rng:define name="dashboard-column">
|
||||
<rng:element name="column">
|
||||
<rng:zeroOrMore>
|
||||
<rng:element name="action">
|
||||
<!-- Action identifier, used by clients to get the
|
||||
actual action from db -->
|
||||
<rng:attribute name="name"/>
|
||||
<!-- Displayed name of dashboard item (above idem) -->
|
||||
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||
<!-- Merged into the action descriptor's own
|
||||
context before executing the action -->
|
||||
<rng:optional><rng:attribute name="context"/></rng:optional>
|
||||
<!-- Added to the action descriptor's own domain
|
||||
before executing the action -->
|
||||
<rng:optional><rng:attribute name="domain"/></rng:optional>
|
||||
<!-- In case the action is an act_window,
|
||||
overrides its own @views. -->
|
||||
<rng:optional><rng:attribute name="view_mode"/></rng:optional>
|
||||
</rng:element>
|
||||
</rng:zeroOrMore>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
<rng:define name="dashboard">
|
||||
<rng:choice>
|
||||
<rng:element name="board">
|
||||
<a:documentation>
|
||||
New-style (6.1) dashboard definition
|
||||
</a:documentation>
|
||||
<rng:choice>
|
||||
<rng:group>
|
||||
<a:documentation>
|
||||
Single-column dashboard style
|
||||
</a:documentation>
|
||||
<rng:attribute name="style">
|
||||
<rng:value>1</rng:value>
|
||||
</rng:attribute>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
</rng:group>
|
||||
<rng:group>
|
||||
<a:documentation>
|
||||
Three different 2-column dashboard styles:
|
||||
50|50, 33|66 and 66|33.
|
||||
</a:documentation>
|
||||
<rng:attribute name="style">
|
||||
<rng:choice>
|
||||
<rng:value>1-1</rng:value>
|
||||
<rng:value>1-2</rng:value>
|
||||
<rng:value>2-1</rng:value>
|
||||
</rng:choice>
|
||||
</rng:attribute>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
</rng:group>
|
||||
<rng:group>
|
||||
<a:documentation>
|
||||
Three-column dashboard style: 33|33|33
|
||||
</a:documentation>
|
||||
<rng:attribute name="style">
|
||||
<rng:value>1-1-1</rng:value>
|
||||
</rng:attribute>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
<rng:ref name="dashboard-column"/>
|
||||
</rng:group>
|
||||
</rng:choice>
|
||||
</rng:element>
|
||||
<!--
|
||||
DEPRECATED old-style dashboards
|
||||
-->
|
||||
<rng:element>
|
||||
<rng:choice>
|
||||
<rng:name>hpaned</rng:name>
|
||||
<rng:name>vpaned</rng:name>
|
||||
</rng:choice>
|
||||
<rng:optional>
|
||||
<rng:attribute name="position">
|
||||
<rng:data type="int"/>
|
||||
</rng:attribute>
|
||||
</rng:optional>
|
||||
<rng:zeroOrMore>
|
||||
<rng:optional><rng:ref name="any"/></rng:optional>
|
||||
<rng:optional><rng:ref name="html"/></rng:optional>
|
||||
</rng:zeroOrMore>
|
||||
</rng:element>
|
||||
</rng:choice>
|
||||
</rng:define>
|
||||
|
||||
<rng:define name="container">
|
||||
<rng:optional><rng:attribute name="col"/></rng:optional>
|
||||
|
@ -54,12 +140,11 @@
|
|||
<rng:ref name="field"/>
|
||||
<rng:ref name="group"/>
|
||||
<rng:ref name="button"/>
|
||||
<rng:ref name="hpaned" />
|
||||
<rng:ref name="label" />
|
||||
<rng:ref name="separator"/>
|
||||
<rng:ref name="image"/>
|
||||
<rng:ref name="form"/>
|
||||
<rng:ref name="vpaned"/>
|
||||
<rng:ref name="dashboard"/>
|
||||
<rng:ref name="filter"/>
|
||||
<rng:ref name="html"/>
|
||||
<rng:element name="newline"><rng:empty/></rng:element>
|
||||
|
@ -219,12 +304,11 @@
|
|||
<rng:ref name="field"/>
|
||||
<rng:ref name="group"/>
|
||||
<rng:ref name="button"/>
|
||||
<rng:ref name="hpaned" />
|
||||
<rng:ref name="label" />
|
||||
<rng:ref name="separator"/>
|
||||
<rng:ref name="image"/>
|
||||
<rng:ref name="form"/>
|
||||
<rng:ref name="vpaned"/>
|
||||
<rng:ref name="dashboard"/>
|
||||
<rng:ref name="filter"/>
|
||||
<rng:ref name="html"/>
|
||||
<rng:element name="newline"><rng:empty/></rng:element>
|
||||
|
@ -278,34 +362,6 @@
|
|||
</rng:element>
|
||||
</rng:define>
|
||||
|
||||
<rng:define name="hpaned">
|
||||
<rng:element name="hpaned">
|
||||
<rng:optional>
|
||||
<rng:attribute name="position">
|
||||
<rng:data type="int"/>
|
||||
</rng:attribute>
|
||||
</rng:optional>
|
||||
<rng:zeroOrMore>
|
||||
<rng:ref name="any" />
|
||||
<rng:optional><rng:ref name="html"/></rng:optional>
|
||||
</rng:zeroOrMore>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
|
||||
<rng:define name="vpaned">
|
||||
<rng:element name="vpaned">
|
||||
<rng:optional>
|
||||
<rng:attribute name="position">
|
||||
<rng:data type="int"/>
|
||||
</rng:attribute>
|
||||
</rng:optional>
|
||||
<rng:zeroOrMore>
|
||||
<rng:optional><rng:ref name="any"/></rng:optional>
|
||||
<rng:optional><rng:ref name="html"/></rng:optional>
|
||||
</rng:zeroOrMore>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
|
||||
<rng:define name="any">
|
||||
<rng:element>
|
||||
<rng:anyName/>
|
||||
|
@ -341,8 +397,7 @@
|
|||
<rng:ref name="form" />
|
||||
<rng:ref name="page" />
|
||||
<rng:ref name="notebook"/>
|
||||
<rng:ref name="hpaned"/>
|
||||
<rng:ref name="vpaned"/>
|
||||
<rng:ref name="dashboard"/>
|
||||
<rng:ref name="filter"/>
|
||||
<rng:ref name="html"/>
|
||||
</rng:choice>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"access_ir_model_access_all","ir_model_access_all","model_ir_model_access",,1,0,0,0
|
||||
"access_ir_model_data_all","ir_model_data all","model_ir_model_data",,1,0,0,0
|
||||
"access_ir_model_fields_all","ir_model_fields all","model_ir_model_fields",,1,0,0,0
|
||||
"access_ir_module_category_group_user","ir_module_category group_user","model_ir_module_category","group_system",1,0,0,0
|
||||
"access_ir_module_category_group_user","ir_module_category group_user","model_ir_module_category",,1,0,0,0
|
||||
"access_ir_module_module_group_user","ir_module_module group_user","model_ir_module_module","group_system",1,1,1,1
|
||||
"access_ir_module_module_user","ir_module_module user","model_ir_module_module",,1,0,0,0
|
||||
"access_ir_module_module_dependency_group_system","ir_module_module_dependency group_system","model_ir_module_module_dependency","group_system",1,1,1,1
|
||||
|
|
|
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
|
@ -101,7 +101,7 @@ class Graph(dict):
|
|||
# NOTE The call to load_information_from_description_file is already
|
||||
# done by db.initialize, so it is possible to not do it again here.
|
||||
info = openerp.modules.module.load_information_from_description_file(module)
|
||||
if info['installable']:
|
||||
if info and info['installable']:
|
||||
packages.append((module, info)) # TODO directly a dict, like in get_modules_with_version
|
||||
else:
|
||||
logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: not installable, skipped' % (module))
|
||||
|
|
|
@ -147,6 +147,10 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
|||
migrations = openerp.modules.migration.MigrationManager(cr, graph)
|
||||
logger.debug('loading %d packages...', len(graph))
|
||||
|
||||
# get db timestamp
|
||||
cr.execute("select now()::timestamp")
|
||||
dt_before_load = cr.fetchone()[0]
|
||||
|
||||
# register, instantiate and initialize models for each modules
|
||||
for index, package in enumerate(graph):
|
||||
module_name = package.name
|
||||
|
@ -214,6 +218,9 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
|||
|
||||
cr.commit()
|
||||
|
||||
# mark new res_log records as read
|
||||
cr.execute("update res_log set read=True where create_date >= %s", (dt_before_load,))
|
||||
|
||||
cr.commit()
|
||||
|
||||
return loaded_modules, processed_modules
|
||||
|
|
|
@ -69,7 +69,7 @@ and you would be tempted to believe something like this would be possible:
|
|||
['!', ['=', 'company_id.name', ['&', ..., ...]]]
|
||||
|
||||
That is, a domain could be a valid operand. But this is not the case. A domain
|
||||
is really limited to a two-level nature, and can not takes a recursive form: a
|
||||
is really limited to a two-level nature, and can not take a recursive form: a
|
||||
domain is not a valid second-level operand.
|
||||
|
||||
Unaccent - Accent-insensitive search
|
||||
|
|
|
@ -131,6 +131,12 @@ class boolean(_column):
|
|||
_symbol_f = lambda x: x and 'True' or 'False'
|
||||
_symbol_set = (_symbol_c, _symbol_f)
|
||||
|
||||
def __init__(self, string='unknown', required=False, **args):
|
||||
super(boolean, self).__init__(string=string, required=required, **args)
|
||||
if required:
|
||||
warnings.warn("Making a boolean field `required` has no effect, as NULL values are "
|
||||
"automatically turned into False", PendingDeprecationWarning, stacklevel=2)
|
||||
|
||||
class integer(_column):
|
||||
_type = 'integer'
|
||||
_symbol_c = '%s'
|
||||
|
@ -138,6 +144,12 @@ class integer(_column):
|
|||
_symbol_set = (_symbol_c, _symbol_f)
|
||||
_symbol_get = lambda self,x: x or 0
|
||||
|
||||
def __init__(self, string='unknown', required=False, **args):
|
||||
super(integer, self).__init__(string=string, required=required, **args)
|
||||
if required:
|
||||
warnings.warn("Making an integer field `required` has no effect, as NULL values are "
|
||||
"automatically turned into 0", PendingDeprecationWarning, stacklevel=2)
|
||||
|
||||
class integer_big(_column):
|
||||
"""Experimental 64 bit integer column type, currently unused.
|
||||
|
||||
|
@ -155,6 +167,12 @@ class integer_big(_column):
|
|||
_symbol_set = (_symbol_c, _symbol_f)
|
||||
_symbol_get = lambda self,x: x or 0
|
||||
|
||||
def __init__(self, string='unknown', required=False, **args):
|
||||
super(integer_big, self).__init__(string=string, required=required, **args)
|
||||
if required:
|
||||
warnings.warn("Making an integer_big field `required` has no effect, as NULL values are "
|
||||
"automatically turned into 0", PendingDeprecationWarning, stacklevel=2)
|
||||
|
||||
class reference(_column):
|
||||
_type = 'reference'
|
||||
_classic_read = False # post-process to handle missing target
|
||||
|
@ -208,10 +226,13 @@ class float(_column):
|
|||
_symbol_set = (_symbol_c, _symbol_f)
|
||||
_symbol_get = lambda self,x: x or 0.0
|
||||
|
||||
def __init__(self, string='unknown', digits=None, digits_compute=None, **args):
|
||||
_column.__init__(self, string=string, **args)
|
||||
def __init__(self, string='unknown', digits=None, digits_compute=None, required=False, **args):
|
||||
_column.__init__(self, string=string, required=required, **args)
|
||||
self.digits = digits
|
||||
self.digits_compute = digits_compute
|
||||
if required:
|
||||
warnings.warn("Making a float field `required` has no effect, as NULL values are "
|
||||
"automatically turned into 0.0", PendingDeprecationWarning, stacklevel=2)
|
||||
|
||||
|
||||
def digits_change(self, cr):
|
||||
|
@ -1037,7 +1058,7 @@ class related(function):
|
|||
|
||||
_columns = {
|
||||
'foo_id': fields.many2one('my.foo', 'Foo'),
|
||||
'bar': fields.related('frol', 'foo_id', type='char', string='Frol of Foo'),
|
||||
'bar': fields.related('foo_id', 'frol', type='char', string='Frol of Foo'),
|
||||
}
|
||||
"""
|
||||
|
||||
|
@ -1364,6 +1385,9 @@ def field_to_dict(model, cr, user, field, context=None):
|
|||
res['domain'] = field._domain
|
||||
res['context'] = field._context
|
||||
|
||||
if isinstance(field, one2many):
|
||||
res['relation_field'] = field._fields_id
|
||||
|
||||
return res
|
||||
|
||||
|
||||
|
|
|
@ -229,11 +229,6 @@ POSTGRES_CONFDELTYPES = {
|
|||
'SET DEFAULT': 'd',
|
||||
}
|
||||
|
||||
def last_day_of_current_month():
|
||||
today = datetime.date.today()
|
||||
last_day = str(calendar.monthrange(today.year, today.month)[1])
|
||||
return time.strftime('%Y-%m-' + last_day)
|
||||
|
||||
def intersect(la, lb):
|
||||
return filter(lambda x: x in lb, la)
|
||||
|
||||
|
@ -664,6 +659,10 @@ class BaseModel(object):
|
|||
_sequence = None
|
||||
_description = None
|
||||
|
||||
# dict of {field:method}, with method returning the name_get of records
|
||||
# to include in the _read_group, if grouped on this field
|
||||
_group_by_full = {}
|
||||
|
||||
# Transience
|
||||
_transient = False # True in a TransientModel
|
||||
_transient_max_count = None
|
||||
|
@ -1261,7 +1260,7 @@ class BaseModel(object):
|
|||
nbrmax = position+1
|
||||
|
||||
done = {}
|
||||
for i in range(len(fields)):
|
||||
for i, field in enumerate(fields):
|
||||
res = False
|
||||
if i >= len(line):
|
||||
raise Exception(_('Please check that all your lines have %d columns.'
|
||||
|
@ -1270,11 +1269,11 @@ class BaseModel(object):
|
|||
if not line[i]:
|
||||
continue
|
||||
|
||||
field = fields[i]
|
||||
if field[:len(prefix)] <> prefix:
|
||||
if line[i] and skip:
|
||||
return False
|
||||
continue
|
||||
field_name = field[len(prefix)]
|
||||
|
||||
#set the mode for m2o, o2m, m2m : xml_id/id/name
|
||||
if len(field) == len(prefix)+1:
|
||||
|
@ -1290,7 +1289,7 @@ class BaseModel(object):
|
|||
return [(6,0,res)]
|
||||
|
||||
# ID of the record using a XML ID
|
||||
if field[len(prefix)]=='id':
|
||||
if field_name == 'id':
|
||||
try:
|
||||
data_res_id = _get_id(model_name, line[i], current_module, 'id')
|
||||
except ValueError:
|
||||
|
@ -1299,16 +1298,17 @@ class BaseModel(object):
|
|||
continue
|
||||
|
||||
# ID of the record using a database ID
|
||||
elif field[len(prefix)]=='.id':
|
||||
elif field_name == '.id':
|
||||
data_res_id = _get_id(model_name, line[i], current_module, '.id')
|
||||
continue
|
||||
|
||||
field_type = fields_def[field_name]['type']
|
||||
# recursive call for getting children and returning [(0,0,{})] or [(1,ID,{})]
|
||||
if fields_def[field[len(prefix)]]['type']=='one2many':
|
||||
if field[len(prefix)] in done:
|
||||
if field_type == 'one2many':
|
||||
if field_name in done:
|
||||
continue
|
||||
done[field[len(prefix)]] = True
|
||||
relation = fields_def[field[len(prefix)]]['relation']
|
||||
done[field_name] = True
|
||||
relation = fields_def[field_name]['relation']
|
||||
relation_obj = self.pool.get(relation)
|
||||
newfd = relation_obj.fields_get( cr, uid, context=context )
|
||||
pos = position
|
||||
|
@ -1317,7 +1317,7 @@ class BaseModel(object):
|
|||
|
||||
first = 0
|
||||
while pos < len(datas):
|
||||
res2 = process_liness(self, datas, prefix + [field[len(prefix)]], current_module, relation_obj._name, newfd, pos, first)
|
||||
res2 = process_liness(self, datas, prefix + [field_name], current_module, relation_obj._name, newfd, pos, first)
|
||||
if not res2:
|
||||
break
|
||||
(newrow, pos, w2, data_res_id2, xml_id2) = res2
|
||||
|
@ -1333,36 +1333,36 @@ class BaseModel(object):
|
|||
|
||||
res.append( (data_res_id2 and 1 or 0, data_res_id2 or 0, newrow) )
|
||||
|
||||
|
||||
elif fields_def[field[len(prefix)]]['type']=='many2one':
|
||||
relation = fields_def[field[len(prefix)]]['relation']
|
||||
elif field_type == 'many2one':
|
||||
relation = fields_def[field_name]['relation']
|
||||
res = _get_id(relation, line[i], current_module, mode)
|
||||
|
||||
elif fields_def[field[len(prefix)]]['type']=='many2many':
|
||||
relation = fields_def[field[len(prefix)]]['relation']
|
||||
elif field_type == 'many2many':
|
||||
relation = fields_def[field_name]['relation']
|
||||
res = many_ids(line[i], relation, current_module, mode)
|
||||
|
||||
elif fields_def[field[len(prefix)]]['type'] == 'integer':
|
||||
elif field_type == 'integer':
|
||||
res = line[i] and int(line[i]) or 0
|
||||
elif fields_def[field[len(prefix)]]['type'] == 'boolean':
|
||||
elif field_type == 'boolean':
|
||||
res = line[i].lower() not in ('0', 'false', 'off')
|
||||
elif fields_def[field[len(prefix)]]['type'] == 'float':
|
||||
elif field_type == 'float':
|
||||
res = line[i] and float(line[i]) or 0.0
|
||||
elif fields_def[field[len(prefix)]]['type'] == 'selection':
|
||||
for key, val in fields_def[field[len(prefix)]]['selection']:
|
||||
elif field_type == 'selection':
|
||||
for key, val in fields_def[field_name]['selection']:
|
||||
if tools.ustr(line[i]) in [tools.ustr(key), tools.ustr(val)]:
|
||||
res = key
|
||||
break
|
||||
if line[i] and not res:
|
||||
logger.notifyChannel("import", netsvc.LOG_WARNING,
|
||||
_("key '%s' not found in selection field '%s'") % \
|
||||
(tools.ustr(line[i]), tools.ustr(field[len(prefix)])))
|
||||
warning += [_("Key/value '%s' not found in selection field '%s'") % (tools.ustr(line[i]), tools.ustr(field[len(prefix)]))]
|
||||
logging.getLogger('orm.import').warn(
|
||||
_("key '%s' not found in selection field '%s'"),
|
||||
tools.ustr(line[i]), tools.ustr(field_name))
|
||||
warning.append(_("Key/value '%s' not found in selection field '%s'") % (
|
||||
tools.ustr(line[i]), tools.ustr(field_name)))
|
||||
|
||||
else:
|
||||
res = line[i]
|
||||
|
||||
row[field[len(prefix)]] = res or False
|
||||
row[field_name] = res or False
|
||||
|
||||
result = (row, nbrmax, warning, data_res_id, xml_id)
|
||||
return result
|
||||
|
@ -1807,7 +1807,7 @@ class BaseModel(object):
|
|||
"""
|
||||
_rec_name = self._rec_name
|
||||
if _rec_name not in self._columns:
|
||||
_rec_name = self._columns.keys()[0]
|
||||
_rec_name = self._columns.keys()[0] if len(self._columns.keys()) > 0 else "id"
|
||||
|
||||
view = etree.Element('tree', string=self._description)
|
||||
etree.SubElement(view, 'field', name=_rec_name)
|
||||
|
@ -2476,6 +2476,24 @@ class BaseModel(object):
|
|||
del alldata[d['id']][groupby]
|
||||
d.update(alldata[d['id']])
|
||||
del d['id']
|
||||
|
||||
if groupby and groupby in self._group_by_full:
|
||||
gids = [x[groupby][0] for x in data if x[groupby]]
|
||||
stages = self._group_by_full[groupby](self, cr, uid, gids, domain, context)
|
||||
# as both lists are sorted in the same way, we can merge in one pass
|
||||
pos = 0
|
||||
while stages and ((pos<len(data)) or (pos<len(stages))):
|
||||
if (pos<len(data)) and (not data[pos][groupby] or (data[pos][groupby][0] == stages[pos][0])):
|
||||
pos+=1
|
||||
continue
|
||||
val = dict.fromkeys(float_int_fields, False)
|
||||
val.update({
|
||||
groupby: stages[pos],
|
||||
'__domain': [(groupby, '=', stages[pos][0])]+domain,
|
||||
groupby+'_count': 0L,
|
||||
'__context': {'group_by': groupby_list[1:]}
|
||||
})
|
||||
data.insert(pos, val)
|
||||
return data
|
||||
|
||||
def _inherits_join_add(self, current_table, parent_model_name, query):
|
||||
|
@ -4598,7 +4616,7 @@ class BaseModel(object):
|
|||
:type default: dictionary
|
||||
:param context: context arguments, like lang, time zone
|
||||
:type context: dictionary
|
||||
:return: True
|
||||
:return: id of the newly created record
|
||||
|
||||
"""
|
||||
if context is None:
|
||||
|
|
|
@ -19,8 +19,21 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
version = '6.1dev'
|
||||
major_version = '6.1'
|
||||
RELEASE_LEVELS = [ALPHA, BETA, RELEASE_CANDIDATE, FINAL] = ['alpha', 'beta', 'candidate', 'final']
|
||||
RELEASE_LEVELS_DISPLAY = {ALPHA: ALPHA,
|
||||
BETA: BETA,
|
||||
RELEASE_CANDIDATE: 'rc',
|
||||
FINAL: ''}
|
||||
|
||||
# version_info format: (MAJOR, MINOR, MICRO, RELEASE_LEVEL, SERIAL)
|
||||
# inspired by Python's own sys.version_info, in order to be
|
||||
# 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,BETA,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]))
|
||||
|
||||
description = 'OpenERP Server'
|
||||
long_desc = '''OpenERP is a complete ERP and CRM. The main features are accounting (analytic
|
||||
and financial), stock management, sales and purchases management, tasks
|
||||
|
|
|
@ -26,7 +26,7 @@ from render import render
|
|||
#.apidoc title: Report Rendering
|
||||
|
||||
try:
|
||||
import Image
|
||||
from PIL import Image
|
||||
except ImportError:
|
||||
import logging
|
||||
logging.warning('Python Imaging not installed, you can use only .JPG pictures !')
|
||||
|
|
|
@ -610,10 +610,9 @@ class _rml_flowable(object):
|
|||
for key in txt_n.attrib.keys():
|
||||
if key in ('rml_except', 'rml_loop', 'rml_tag'):
|
||||
del txt_n.attrib[key]
|
||||
if True or not self._textual(n).isspace():
|
||||
if not n.tag == 'bullet':
|
||||
txt_n.text = utils.xml2str(self._textual(n))
|
||||
txt_n.tail = n.tail and utils._process_text(self, n.tail.replace('\n','')) or ''
|
||||
txt_n.tail = n.tail and utils.xml2str(utils._process_text(self, n.tail.replace('\n',''))) or ''
|
||||
rc1 += etree.tostring(txt_n)
|
||||
return rc1
|
||||
|
||||
|
|
|
@ -110,6 +110,14 @@ def _child_get(node, self=None, tagname=None):
|
|||
yield n
|
||||
|
||||
def _process_text(self, txt):
|
||||
"""Translate ``txt`` according to the language in the local context,
|
||||
replace dynamic ``[[expr]]`` with their real value, then escape
|
||||
the result for XML.
|
||||
|
||||
:param str txt: original text to translate (must NOT be XML-escaped)
|
||||
:return: translated text, with dynamic expressions evaluated and
|
||||
with special XML characters escaped (``&,<,>``).
|
||||
"""
|
||||
if not self.localcontext:
|
||||
return str2xml(txt)
|
||||
if not txt:
|
||||
|
@ -130,10 +138,10 @@ def _process_text(self, txt):
|
|||
except Exception:
|
||||
pass
|
||||
if isinstance(txt, basestring):
|
||||
result += str2xml(txt)
|
||||
result += txt
|
||||
elif txt and (txt is not None) and (txt is not False):
|
||||
result += ustr(txt)
|
||||
return result
|
||||
return str2xml(result)
|
||||
|
||||
def text_get(node):
|
||||
return ''.join([ustr(n.text) for n in node])
|
||||
|
|
|
@ -366,20 +366,15 @@ class db(netsvc.ExportService):
|
|||
return True
|
||||
|
||||
class common(netsvc.ExportService):
|
||||
_logger = logging.getLogger('web-services')
|
||||
|
||||
def __init__(self,name="common"):
|
||||
netsvc.ExportService.__init__(self,name)
|
||||
|
||||
def dispatch(self, method, params):
|
||||
logger = netsvc.Logger()
|
||||
if method == 'login':
|
||||
res = security.login(params[0], params[1], params[2])
|
||||
msg = res and 'successful login' or 'bad login or password'
|
||||
# TODO log the client ip address..
|
||||
logger.notifyChannel("web-service", netsvc.LOG_INFO, "%s from '%s' using database '%s'" % (msg, params[1], params[0].lower()))
|
||||
return res or False
|
||||
elif method in ['about', 'timezone_get', 'get_server_environment',
|
||||
if method in ['login', 'about', 'timezone_get', 'get_server_environment',
|
||||
'login_message','get_stats', 'check_connectivity',
|
||||
'list_http_services', 'version']:
|
||||
'list_http_services', 'version', 'authenticate']:
|
||||
pass
|
||||
elif method in ['get_available_updates', 'get_migration_scripts', 'set_loglevel', 'get_os_time', 'get_sqlcount']:
|
||||
passwd = params[0]
|
||||
|
@ -391,6 +386,18 @@ class common(netsvc.ExportService):
|
|||
fn = getattr(self, 'exp_'+method)
|
||||
return fn(*params)
|
||||
|
||||
def exp_login(self, db, login, password):
|
||||
# TODO: legacy indirection through 'security', should use directly
|
||||
# the res.users model
|
||||
res = security.login(db, login, password)
|
||||
msg = res and 'successful login' or 'bad login or password'
|
||||
self._logger.info("%s from '%s' using database '%s'", msg, login, db.lower())
|
||||
return res or False
|
||||
|
||||
def exp_authenticate(self, db, login, password, user_agent_env):
|
||||
res_users = pooler.get_pool(db).get('res.users')
|
||||
return res_users.authenticate(db, login, password, user_agent_env)
|
||||
|
||||
def exp_version(self):
|
||||
return RPC_VERSION_1
|
||||
|
||||
|
|
|
@ -102,6 +102,9 @@ class configmanager(object):
|
|||
group.add_option("-P", "--import-partial", dest="import_partial", my_default='',
|
||||
help="Use this for big data importation, if it crashes you will be able to continue at the current state. Provide a filename to store intermediate importation states.")
|
||||
group.add_option("--pidfile", dest="pidfile", help="file where the server pid will be stored")
|
||||
group.add_option("--addons-path", dest="addons_path",
|
||||
help="specify additional addons paths (separated by commas).",
|
||||
action="callback", callback=self._check_addons_path, nargs=1, type="string")
|
||||
group.add_option("--load", dest="server_wide_modules", help="Comma-separated list of server-wide modules default=web")
|
||||
parser.add_option_group(group)
|
||||
|
||||
|
@ -233,9 +236,6 @@ class configmanager(object):
|
|||
help="overwrites existing translation terms on updating a module or importing a CSV or a PO file.")
|
||||
group.add_option("--modules", dest="translate_modules",
|
||||
help="specify modules to export. Use in combination with --i18n-export")
|
||||
group.add_option("--addons-path", dest="addons_path",
|
||||
help="specify additional addons paths (separated by commas).",
|
||||
action="callback", callback=self._check_addons_path, nargs=1, type="string")
|
||||
parser.add_option_group(group)
|
||||
|
||||
security = optparse.OptionGroup(parser, 'Security-related options')
|
||||
|
|
|
@ -759,8 +759,8 @@ if __name__=='__main__':
|
|||
g.process(starting_node)
|
||||
g.scale(radius*3,radius*3, radius, radius)
|
||||
|
||||
import Image
|
||||
import ImageDraw
|
||||
from PIL import Image
|
||||
from PIL import ImageDraw
|
||||
img = Image.new("RGB", (800, 600), "#ffffff")
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
|
|
|
@ -363,7 +363,7 @@ class TinyPoFile(object):
|
|||
"msgid \"\"\n" \
|
||||
"msgstr \"\"\n" \
|
||||
'''"Project-Id-Version: %(project)s %(version)s\\n"\n''' \
|
||||
'''"Report-Msgid-Bugs-To: %(bugmail)s\\n"\n''' \
|
||||
'''"Report-Msgid-Bugs-To: \\n"\n''' \
|
||||
'''"POT-Creation-Date: %(now)s\\n"\n''' \
|
||||
'''"PO-Revision-Date: %(now)s\\n"\n''' \
|
||||
'''"Last-Translator: <>\\n"\n''' \
|
||||
|
@ -377,7 +377,6 @@ class TinyPoFile(object):
|
|||
% { 'project': release.description,
|
||||
'version': release.version,
|
||||
'modules': reduce(lambda s, m: s + "#\t* %s\n" % m, modules, ""),
|
||||
'bugmail': release.support_email,
|
||||
'now': datetime.utcnow().strftime('%Y-%m-%d %H:%M')+"+0000",
|
||||
}
|
||||
)
|
||||
|
|
|
@ -11,6 +11,8 @@ import misc
|
|||
from config import config
|
||||
import yaml_tag
|
||||
import yaml
|
||||
import re
|
||||
from lxml import etree
|
||||
|
||||
# YAML import needs both safe and unsafe eval, but let's
|
||||
# default to /safe/.
|
||||
|
@ -164,9 +166,11 @@ class YamlInterpreter(object):
|
|||
self.logger.log(logging.ERROR, 'id: %s is to long (max: 64)', id)
|
||||
|
||||
def get_id(self, xml_id):
|
||||
if not xml_id:
|
||||
raise YamlImportException("The xml_id should be a non empty string.")
|
||||
if isinstance(xml_id, types.IntType):
|
||||
if xml_id is False:
|
||||
return False
|
||||
#if not xml_id:
|
||||
# raise YamlImportException("The xml_id should be a non empty string.")
|
||||
elif isinstance(xml_id, types.IntType):
|
||||
id = xml_id
|
||||
elif xml_id in self.id_map:
|
||||
id = self.id_map[xml_id]
|
||||
|
@ -308,10 +312,21 @@ class YamlInterpreter(object):
|
|||
import openerp.osv as osv
|
||||
record, fields = node.items()[0]
|
||||
model = self.get_model(record.model)
|
||||
|
||||
view_id = record.view
|
||||
if view_id and (view_id is not True):
|
||||
view_id = self.pool.get('ir.model.data').get_object_reference(self.cr, 1, self.module, record.view)[1]
|
||||
|
||||
if model.is_transient():
|
||||
record_dict=self.create_osv_memory_record(record, fields)
|
||||
else:
|
||||
self.validate_xml_id(record.id)
|
||||
try:
|
||||
self.pool.get('ir.model.data')._get_id(self.cr, 1, self.module, record.id)
|
||||
default = False
|
||||
except ValueError:
|
||||
default = True
|
||||
|
||||
if self.isnoupdate(record) and self.mode != 'init':
|
||||
id = self.pool.get('ir.model.data')._update_dummy(self.cr, 1, record.model, self.module, record.id)
|
||||
# check if the resource already existed at the last update
|
||||
|
@ -322,22 +337,110 @@ class YamlInterpreter(object):
|
|||
if not self._coerce_bool(record.forcecreate):
|
||||
return None
|
||||
|
||||
record_dict = self._create_record(model, fields)
|
||||
self.logger.debug("RECORD_DICT %s" % record_dict)
|
||||
|
||||
#context = self.get_context(record, self.eval_context)
|
||||
context = record.context #TOFIX: record.context like {'withoutemployee':True} should pass from self.eval_context. example: test_project.yml in project module
|
||||
#TOFIX: record.context like {'withoutemployee':True} should pass from self.eval_context. example: test_project.yml in project module
|
||||
context = record.context
|
||||
if view_id:
|
||||
varg = view_id
|
||||
if view_id is True: varg = False
|
||||
view = model.fields_view_get(self.cr, 1, varg, 'form', context)
|
||||
view_id = etree.fromstring(view['arch'].encode('utf-8'))
|
||||
|
||||
record_dict = self._create_record(model, fields, view_id, default=default)
|
||||
self.logger.debug("RECORD_DICT %s" % record_dict)
|
||||
id = self.pool.get('ir.model.data')._update(self.cr, 1, record.model, \
|
||||
self.module, record_dict, record.id, noupdate=self.isnoupdate(record), mode=self.mode, context=context)
|
||||
self.id_map[record.id] = int(id)
|
||||
if config.get('import_partial'):
|
||||
self.cr.commit()
|
||||
|
||||
def _create_record(self, model, fields):
|
||||
def _create_record(self, model, fields, view=False, parent={}, default=True):
|
||||
allfields = model.fields_get(self.cr, 1, context=self.context)
|
||||
if view is not False:
|
||||
defaults = default and model.default_get(self.cr, 1, allfields, context=self.context) or {}
|
||||
fg = model.fields_get(self.cr, 1, context=self.context)
|
||||
else:
|
||||
default = {}
|
||||
fg = {}
|
||||
record_dict = {}
|
||||
fields = fields or {}
|
||||
for field_name, expression in fields.items():
|
||||
field_value = self._eval_field(model, field_name, expression)
|
||||
|
||||
def process_val(key, val):
|
||||
if fg[key]['type']=='many2one':
|
||||
if type(val) in (tuple,list):
|
||||
val = val[0]
|
||||
elif (fg[key]['type']=='one2many'):
|
||||
if val is False:
|
||||
val = []
|
||||
if len(val) and type(val[0]) == dict:
|
||||
val = map(lambda x: (0,0,x), val)
|
||||
return val
|
||||
|
||||
# Process all on_change calls
|
||||
nodes = (view is not False) and [view] or []
|
||||
while nodes:
|
||||
el = nodes.pop(0)
|
||||
if el.tag=='field':
|
||||
field_name = el.attrib['name']
|
||||
assert field_name in fg, "The field '%s' is defined in the form view but not on the object '%s'!" % (field_name, model._name)
|
||||
if field_name in fields:
|
||||
view2 = None
|
||||
# if the form view is not inline, we call fields_view_get
|
||||
if (view is not False) and (fg[field_name]['type']=='one2many'):
|
||||
view2 = view.find("field[@name='%s']/form"%(field_name,))
|
||||
if not view2:
|
||||
view2 = self.pool.get(fg[field_name]['relation']).fields_view_get(self.cr, 1, False, 'form', self.context)
|
||||
view2 = etree.fromstring(view2['arch'].encode('utf-8'))
|
||||
|
||||
field_value = self._eval_field(model, field_name, fields[field_name], view2, parent=record_dict, default=default)
|
||||
record_dict[field_name] = field_value
|
||||
#if (field_name in defaults) and defaults[field_name] == field_value:
|
||||
# print '*** You can remove these lines:', field_name, field_value
|
||||
elif (field_name in defaults):
|
||||
if (field_name not in record_dict):
|
||||
record_dict[field_name] = process_val(field_name, defaults[field_name])
|
||||
else:
|
||||
continue
|
||||
|
||||
if not el.attrib.get('on_change', False):
|
||||
continue
|
||||
match = re.match("([a-z_1-9A-Z]+)\((.*)\)", el.attrib['on_change'])
|
||||
assert match, "Unable to parse the on_change '%s'!" % (el.attrib['on_change'], )
|
||||
|
||||
# creating the context
|
||||
class parent2(object):
|
||||
def __init__(self, d):
|
||||
self.d = d
|
||||
def __getattr__(self, name):
|
||||
return self.d.get(name, False)
|
||||
|
||||
ctx = record_dict.copy()
|
||||
ctx['context'] = self.context
|
||||
ctx['uid'] = 1
|
||||
ctx['parent'] = parent2(parent)
|
||||
for a in fg:
|
||||
if a not in ctx:
|
||||
ctx[a]=process_val(a, defaults.get(a, False))
|
||||
|
||||
# Evaluation args
|
||||
args = map(lambda x: eval(x, ctx), match.group(2).split(','))
|
||||
result = getattr(model, match.group(1))(self.cr, 1, [], *args)
|
||||
for key, val in (result or {}).get('value', {}).items():
|
||||
if key not in fields:
|
||||
assert key in fg, "The returning field '%s' from your on_change call '%s' does not exist on the object '%s'" % (key, match.group(1), model._name)
|
||||
record_dict[key] = process_val(key, val)
|
||||
#if (key in fields) and record_dict[key] == process_val(key, val):
|
||||
# print '*** You can remove these lines:', key, val
|
||||
else:
|
||||
nodes = list(el) + nodes
|
||||
|
||||
for field_name, expression in fields.items():
|
||||
if field_name in record_dict:
|
||||
continue
|
||||
field_value = self._eval_field(model, field_name, expression, default=False)
|
||||
record_dict[field_name] = field_value
|
||||
|
||||
return record_dict
|
||||
|
||||
def process_ref(self, node, column=None):
|
||||
|
@ -366,7 +469,7 @@ class YamlInterpreter(object):
|
|||
def process_eval(self, node):
|
||||
return eval(node.expression, self.eval_context)
|
||||
|
||||
def _eval_field(self, model, field_name, expression):
|
||||
def _eval_field(self, model, field_name, expression, view=False, parent={}, default=True):
|
||||
# TODO this should be refactored as something like model.get_field() in bin/osv
|
||||
if field_name in model._columns:
|
||||
column = model._columns[field_name]
|
||||
|
@ -387,7 +490,7 @@ class YamlInterpreter(object):
|
|||
value = self.get_id(expression)
|
||||
elif column._type == "one2many":
|
||||
other_model = self.get_model(column._obj)
|
||||
value = [(0, 0, self._create_record(other_model, fields)) for fields in expression]
|
||||
value = [(0, 0, self._create_record(other_model, fields, view, parent, default=default)) for fields in expression]
|
||||
elif column._type == "many2many":
|
||||
ids = [self.get_id(xml_id) for xml_id in expression]
|
||||
value = [(6, 0, ids)]
|
||||
|
|
|
@ -24,9 +24,10 @@ class Assert(YamlTag):
|
|||
super(Assert, self).__init__(**kwargs)
|
||||
|
||||
class Record(YamlTag):
|
||||
def __init__(self, model, id, use='id', **kwargs):
|
||||
def __init__(self, model, id, use='id', view=True, **kwargs):
|
||||
self.model = model
|
||||
self.id = id
|
||||
self.view = view
|
||||
super(Record, self).__init__(**kwargs)
|
||||
def __str__(self):
|
||||
return '!record {model: %s, id: %s}:' % (str(self.model,), str(self.id,))
|
||||
|
|
Loading…
Reference in New Issue