[MERGE] from trunk
bzr revid: rco@openerp.com-20121105083756-jdr9fxp32djpifqk
This commit is contained in:
commit
401dd57f30
|
@ -87,9 +87,9 @@ In addition to the above possibilities, when invoked with a non-existing module
|
|||
sub-modules.
|
||||
|
||||
Depending on the unittest2_ class that is used to write the tests (see
|
||||
``openerp.tests.common`` for some helper classes that you can re-use), a database
|
||||
may be created before the test is run, and the module providing the test will
|
||||
be installed on that database.
|
||||
:mod:`openerp.tests.common` for some helper classes that you can re-use), a
|
||||
database may be created before the test is run, and the module providing the
|
||||
test will be installed on that database.
|
||||
|
||||
Because creating a database, installing modules, and then dropping it is
|
||||
expensive, it is possible to interleave the run of the ``fast_suite`` tests
|
||||
|
@ -98,3 +98,20 @@ each requested module is installed, its fast_suite tests are run. The database
|
|||
is thus created and dropped (and the modules installed) only once.
|
||||
|
||||
.. _unittest2: http://pypi.python.org/pypi/unittest2
|
||||
|
||||
TestCase subclasses
|
||||
-------------------
|
||||
|
||||
.. automodule:: openerp.tests.common
|
||||
:members:
|
||||
|
||||
.. note::
|
||||
|
||||
The `setUp` and `tearDown` methods are not part of the tests. Uncaught
|
||||
exceptions in those methods are errors, not test failures. In particular,
|
||||
a failing `setUp` will not be followed by a `tearDown` causing any
|
||||
allocated resource in the `setUp` to not be released by the `tearDown`.
|
||||
|
||||
In the :py:class:`openerp.tests.common.TransactionCase` and
|
||||
:py:class:`openerp.tests.common.SingleTransactionCase`, this means the
|
||||
test suite can hang because of unclosed cursors.
|
||||
|
|
|
@ -101,6 +101,7 @@ def preload_registry(dbname):
|
|||
def run_test_file(dbname, test_file):
|
||||
""" Preload a registry, possibly run a test file, and start the cron."""
|
||||
try:
|
||||
config = openerp.tools.config
|
||||
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False)
|
||||
cr = db.cursor()
|
||||
_logger.info('loading test file %s', test_file)
|
||||
|
|
|
@ -86,14 +86,12 @@ The kernel of OpenERP, needed for all installation.
|
|||
'security/base_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/ir.model.access-1.csv', # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version
|
||||
'res/res_widget_view.xml',
|
||||
'res/res_widget_data.xml',
|
||||
],
|
||||
'demo': [
|
||||
'base_demo.xml',
|
||||
'res/res_partner_demo.xml',
|
||||
'res/res_partner_demo.yml',
|
||||
'res/res_widget_demo.xml',
|
||||
'res/res_partner_image_demo.xml',
|
||||
],
|
||||
'test': [
|
||||
'test/base_test.xml',
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2011-01-18 05:32+0000\n"
|
||||
"PO-Revision-Date: 2012-11-05 00:42+0000\n"
|
||||
"Last-Translator: Cristian Salamea (Gnuthink) <ovnicraft@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-10-20 05:06+0000\n"
|
||||
"X-Generator: Launchpad (build 16165)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-05 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16232)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -655,6 +655,26 @@ msgid ""
|
|||
" Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modulo para automatizar cartas para facturas no pagadas, con recordatorios "
|
||||
"multi-nivel\n"
|
||||
"==========================================================================\n"
|
||||
"\n"
|
||||
"Pueden definirse múltiples niveles de recordatorios a través del menú:\n"
|
||||
" Contabilidad/Configuración/Varios/Seguimientos\n"
|
||||
"\n"
|
||||
"Una vez definidos, pueden imprimirse automáticamente recordatorios cada día, "
|
||||
"simplemente haciendo clic en el menú: \n"
|
||||
" Contabilidad/Procesamiento periódico/Facturación/Enviar seguimientos\n"
|
||||
"\n"
|
||||
"Se generará un PDF con todas las cartas de acuerdo con los diferentes \n"
|
||||
"niveles de recordatorio definidos. Se pueden definir diferentes políticas\n"
|
||||
"para las distintas compañías . También se puede enviar correo al cliente.\n"
|
||||
"\n"
|
||||
"Debe denotarse que si se quiere revisar el nivel de seguimiento de una "
|
||||
"empresa/cuenta determinada, se puede realizar en el menú:\n"
|
||||
" Contabilidad/Informes/Informes genéricos/Empresas/Seguimientos enviados\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: field:res.country,name:0
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
|
||||
"PO-Revision-Date: 2012-08-20 15:52+0000\n"
|
||||
"Last-Translator: Mustufa Rangwala (Open ERP) <mra@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2012-11-01 18:59+0000\n"
|
||||
"Last-Translator: Dusan Laznik <laznik@mentis.si>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-10-20 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 16165)\n"
|
||||
"X-Launchpad-Export-Date: 2012-11-02 05:09+0000\n"
|
||||
"X-Generator: Launchpad (build 16218)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -34,7 +34,7 @@ msgstr "DatumČas"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_mailgate
|
||||
msgid "Tasks-Mail Integration"
|
||||
msgstr ""
|
||||
msgstr "Integracija email-opravila"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/fields.py:582
|
||||
|
@ -90,7 +90,7 @@ msgstr "Delovni proces"
|
|||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
msgid "No gap"
|
||||
msgstr ""
|
||||
msgstr "Bez razmaka"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -179,7 +179,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_process
|
||||
msgid "Process"
|
||||
msgstr ""
|
||||
msgstr "Proces"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
|
||||
|
@ -271,7 +271,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ"
|
|||
#: model:ir.module.category,name:base.module_category_sales_management
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
msgid "Sales Management"
|
||||
msgstr ""
|
||||
msgstr "Prodaja"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -372,12 +372,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_customer_relationship_management
|
||||
msgid "Customer Relationship Management"
|
||||
msgstr ""
|
||||
msgstr "Upravljanje odnosov s kupci (CRM)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Extra"
|
||||
msgstr ""
|
||||
msgstr "Dodatno"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2526
|
||||
|
@ -388,7 +388,7 @@ msgstr "Neveljavna skupina_z"
|
|||
#. module: base
|
||||
#: field:ir.module.category,child_ids:0
|
||||
msgid "Child Applications"
|
||||
msgstr ""
|
||||
msgstr "Podrejene aplikacije"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,credit_limit:0
|
||||
|
@ -539,7 +539,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:ir.values:0
|
||||
msgid "Action Binding"
|
||||
msgstr ""
|
||||
msgstr "Povezovanje akcij"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gf
|
||||
|
@ -702,7 +702,7 @@ msgstr "Izvoz zaključen"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin_outlook
|
||||
msgid "Outlook Plug-In"
|
||||
msgstr ""
|
||||
msgstr "Vtičnik za Outlook"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -745,7 +745,7 @@ msgstr "Eritreja"
|
|||
#. module: base
|
||||
#: sql_constraint:res.company:0
|
||||
msgid "The company name must be unique !"
|
||||
msgstr ""
|
||||
msgstr "Ime podjetja mora biti unikatno !"
|
||||
|
||||
#. module: base
|
||||
#: view:res.config:0
|
||||
|
@ -1006,7 +1006,7 @@ msgstr "Zahtevaj tipe sklicov"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_google_base_account
|
||||
msgid "Google Users"
|
||||
msgstr ""
|
||||
msgstr "Google uporabniki"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.server.object.lines,value:0
|
||||
|
@ -1069,7 +1069,7 @@ msgstr "Vrsta"
|
|||
#. module: base
|
||||
#: field:ir.mail_server,smtp_user:0
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Uporabnik"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:398
|
||||
|
@ -1217,12 +1217,12 @@ msgstr "Špansko (GT) / Español (GT)"
|
|||
#. module: base
|
||||
#: field:ir.mail_server,smtp_port:0
|
||||
msgid "SMTP Port"
|
||||
msgstr ""
|
||||
msgstr "SMTP vrata"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_import_sugarcrm
|
||||
msgid "SugarCRM Import"
|
||||
msgstr ""
|
||||
msgstr "Uvoz iz SugarCRM-a"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -1239,12 +1239,12 @@ msgstr ""
|
|||
#: code:addons/base/module/wizard/base_language_install.py:55
|
||||
#, python-format
|
||||
msgid "Language Pack"
|
||||
msgstr ""
|
||||
msgstr "Jezikovni paket"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_tests
|
||||
msgid "Tests"
|
||||
msgstr ""
|
||||
msgstr "Preizkusi"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view_sc,res_id:0
|
||||
|
@ -1305,7 +1305,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.module.category,parent_id:0
|
||||
msgid "Parent Application"
|
||||
msgstr ""
|
||||
msgstr "Nadrejena aplikacija"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:222
|
||||
|
@ -1322,12 +1322,12 @@ msgstr "Ne izbirajte jezika za izvoz novega jezika."
|
|||
#: model:ir.module.module,shortdesc:base.module_document
|
||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||
msgid "Document Management System"
|
||||
msgstr ""
|
||||
msgstr "Sistem za upravljanje dokumentov"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_claim
|
||||
msgid "Claims Management"
|
||||
msgstr ""
|
||||
msgstr "Pritožbe"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_purchase_root
|
||||
|
@ -1542,7 +1542,7 @@ msgstr "Prijava"
|
|||
#: model:ir.actions.act_window,name:base.action_wizard_update_translations
|
||||
#: model:ir.ui.menu,name:base.menu_wizard_update_translations
|
||||
msgid "Synchronize Terms"
|
||||
msgstr ""
|
||||
msgstr "Sinhronizacija izrazov"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -1585,7 +1585,7 @@ msgstr "Plavajoče"
|
|||
#: model:ir.module.category,name:base.module_category_warehouse_management
|
||||
#: model:ir.module.module,shortdesc:base.module_stock
|
||||
msgid "Warehouse Management"
|
||||
msgstr ""
|
||||
msgstr "Skladiščno poslovanje"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_request_link
|
||||
|
@ -1799,7 +1799,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_html_view
|
||||
msgid "Html View"
|
||||
msgstr ""
|
||||
msgstr "Pogled html"
|
||||
|
||||
#. module: base
|
||||
#: field:res.currency,position:0
|
||||
|
@ -1809,7 +1809,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_process
|
||||
msgid "Enterprise Process"
|
||||
msgstr ""
|
||||
msgstr "Proces podjetja"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,function:0
|
||||
|
@ -1868,7 +1868,7 @@ msgstr "Pripeti model"
|
|||
#. module: base
|
||||
#: field:res.partner.bank,footer:0
|
||||
msgid "Display on Reports"
|
||||
msgstr ""
|
||||
msgstr "Prikaz na poročilih"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_cn
|
||||
|
@ -1943,7 +1943,7 @@ msgstr "%s (kopija)"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_chart
|
||||
msgid "Template of Charts of Accounts"
|
||||
msgstr ""
|
||||
msgstr "Predloga kontnega načrta"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.address,type:0
|
||||
|
@ -2030,12 +2030,12 @@ msgstr "Finska"
|
|||
#: code:addons/base/res/res_company.py:156
|
||||
#, python-format
|
||||
msgid "Website: "
|
||||
msgstr ""
|
||||
msgstr "Spletna stran: "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_administration
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
msgstr "Nastavitve"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.act_window,view_type:0
|
||||
|
@ -2175,7 +2175,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_subscription
|
||||
msgid "Recurring Documents"
|
||||
msgstr ""
|
||||
msgstr "Ponavljajoči dokumenti"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bs
|
||||
|
@ -2214,7 +2214,7 @@ msgstr "Število osveženih modulov"
|
|||
#. module: base
|
||||
#: field:ir.cron,function:0
|
||||
msgid "Method"
|
||||
msgstr ""
|
||||
msgstr "Način"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner.event:0
|
||||
|
@ -2353,7 +2353,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.mail_server,smtp_debug:0
|
||||
msgid "Debugging"
|
||||
msgstr ""
|
||||
msgstr "Razhroščevanje"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm_helpdesk
|
||||
|
@ -2463,7 +2463,7 @@ msgstr "Trenutno razmerje"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_idea
|
||||
msgid "Ideas"
|
||||
msgstr ""
|
||||
msgstr "Ideje"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_crm
|
||||
|
@ -2505,7 +2505,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_invoiced
|
||||
msgid "Invoicing"
|
||||
msgstr ""
|
||||
msgstr "Izdajanje računov"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view_sc,name:0
|
||||
|
@ -2546,7 +2546,7 @@ msgstr ""
|
|||
#: field:ir.model.data,res_id:0
|
||||
#: field:ir.values,res_id:0
|
||||
msgid "Record ID"
|
||||
msgstr ""
|
||||
msgstr "ID zapisa"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,email:0
|
||||
|
@ -2630,7 +2630,7 @@ msgstr "Napaka pri komuniciranju s strežnikom založniške garancije."
|
|||
#: model:res.groups,name:base.group_sale_manager
|
||||
#: model:res.groups,name:base.group_tool_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
msgstr "Vodja"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom
|
||||
|
@ -2667,7 +2667,7 @@ msgstr "Počiši ID-je"
|
|||
#. module: base
|
||||
#: view:res.groups:0
|
||||
msgid "Inherited"
|
||||
msgstr ""
|
||||
msgstr "Podedovano"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,serialization_field_id:0
|
||||
|
@ -2690,7 +2690,7 @@ msgstr "%y - Leto brez stoletja [00,99]."
|
|||
#: code:addons/base/res/res_company.py:155
|
||||
#, python-format
|
||||
msgid "Fax: "
|
||||
msgstr ""
|
||||
msgstr "Fax: "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.si
|
||||
|
@ -2700,7 +2700,7 @@ msgstr "Slovenija"
|
|||
#. module: base
|
||||
#: help:res.currency,name:0
|
||||
msgid "Currency Code (ISO 4217)"
|
||||
msgstr ""
|
||||
msgstr "Šifra valute (ISO 4217)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.res_log_act_window
|
||||
|
@ -2818,14 +2818,14 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_stock_planning
|
||||
msgid "Master Procurement Schedule"
|
||||
msgstr ""
|
||||
msgstr "Planiranje nabave"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_module_category
|
||||
#: field:ir.module.module,application:0
|
||||
#: field:res.groups,category_id:0
|
||||
msgid "Application"
|
||||
msgstr ""
|
||||
msgstr "Program"
|
||||
|
||||
#. module: base
|
||||
#: selection:publisher_warranty.contract,state:0
|
||||
|
@ -3019,7 +3019,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
|
||||
msgid "Wiki: Quality Manual"
|
||||
msgstr ""
|
||||
msgstr "Wiki: Priročnik kvalitete"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.act_window.view,view_mode:0
|
||||
|
@ -3047,7 +3047,7 @@ msgstr "Sektor HR"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_dashboard_admin
|
||||
msgid "Administration Dashboard"
|
||||
msgstr ""
|
||||
msgstr "Nadzorna plošča administracije"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:4408
|
||||
|
@ -3138,7 +3138,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_contract
|
||||
msgid "Employee Contracts"
|
||||
msgstr ""
|
||||
msgstr "Pogodbe zaposlenih"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_wiki_faq
|
||||
|
@ -3191,7 +3191,7 @@ msgstr "Naziv kontakta"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_product_manufacturer
|
||||
msgid "Products Manufacturers"
|
||||
msgstr ""
|
||||
msgstr "Proizvajalci"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:217
|
||||
|
@ -3202,7 +3202,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_survey
|
||||
msgid "Survey"
|
||||
msgstr ""
|
||||
msgstr "Vprašalnik"
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.import:0
|
||||
|
@ -3498,7 +3498,7 @@ msgstr ""
|
|||
#: model:ir.module.category,name:base.module_category_generic_modules_accounting
|
||||
#: view:res.company:0
|
||||
msgid "Accounting"
|
||||
msgstr ""
|
||||
msgstr "Računovodstvo"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_payment
|
||||
|
@ -3543,7 +3543,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "Napaka! Ne morete ustvariti rekurzivno povezane člane."
|
||||
|
||||
#. module: base
|
||||
#: view:res.payterm:0
|
||||
|
@ -3618,7 +3618,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_point_of_sale
|
||||
msgid "Point Of Sale"
|
||||
msgstr ""
|
||||
msgstr "Prodajno mesto"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:302
|
||||
|
@ -3654,7 +3654,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
msgid "Standard"
|
||||
msgstr ""
|
||||
msgstr "Običajno"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_maintenance_contract
|
||||
|
@ -3687,7 +3687,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_human_resources
|
||||
msgid "Human Resources"
|
||||
msgstr ""
|
||||
msgstr "Človeški viri"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_country
|
||||
|
@ -3747,7 +3747,7 @@ msgstr "DDV"
|
|||
#. module: base
|
||||
#: field:res.users,new_password:0
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
msgstr "Nastavite geslo"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -4251,7 +4251,7 @@ msgstr "Povzetek"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_hidden_dependency
|
||||
msgid "Dependency"
|
||||
msgstr ""
|
||||
msgstr "Odvisnost"
|
||||
|
||||
#. module: base
|
||||
#: field:multi_company.default,expression:0
|
||||
|
@ -4582,7 +4582,7 @@ msgstr "Pravila"
|
|||
#. module: base
|
||||
#: field:ir.mail_server,smtp_host:0
|
||||
msgid "SMTP Server"
|
||||
msgstr ""
|
||||
msgstr "Strežnik SMTP"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:256
|
||||
|
@ -4672,7 +4672,7 @@ msgstr "Kenija"
|
|||
#: model:ir.actions.act_window,name:base.action_translation
|
||||
#: model:ir.ui.menu,name:base.menu_action_translation
|
||||
msgid "Translated Terms"
|
||||
msgstr ""
|
||||
msgstr "Prevedeni izrazi"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner.event:0
|
||||
|
@ -5003,7 +5003,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_localization
|
||||
msgid "Localization"
|
||||
msgstr ""
|
||||
msgstr "Lokalizacija"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_sale_mrp
|
||||
|
@ -5096,7 +5096,7 @@ msgstr "Decimalni ločevalnik"
|
|||
#: view:ir.module.module:0
|
||||
#, python-format
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
msgstr "Namesti"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_res_groups
|
||||
|
@ -5118,7 +5118,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.filters,name:0
|
||||
msgid "Filter Name"
|
||||
msgstr ""
|
||||
msgstr "Ime filtra"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -5225,7 +5225,7 @@ msgstr "Polje"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_long_term
|
||||
msgid "Long Term Projects"
|
||||
msgstr ""
|
||||
msgstr "Dolgoročni projekti"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ve
|
||||
|
@ -5628,7 +5628,7 @@ msgstr "Svalbardovi in Jan Mayenovi otoki"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_hidden_test
|
||||
msgid "Test"
|
||||
msgstr ""
|
||||
msgstr "Test"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_kanban
|
||||
|
@ -5718,7 +5718,7 @@ msgstr "Lastnost 'on_delete' za za 'many2one' polja"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_accounting_and_finance
|
||||
msgid "Accounting & Finance"
|
||||
msgstr ""
|
||||
msgstr "Računovodstvo & Finance"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,write_id:0
|
||||
|
@ -5746,7 +5746,7 @@ msgstr ""
|
|||
#: model:ir.module.category,name:base.module_category_usability
|
||||
#: view:res.users:0
|
||||
msgid "Usability"
|
||||
msgstr ""
|
||||
msgstr "Uporabnost"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,domain:0
|
||||
|
@ -5797,7 +5797,7 @@ msgstr "Ime skupine se ne sme začeti z \"-\""
|
|||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Apps"
|
||||
msgstr ""
|
||||
msgstr "Programi"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.ui.view_sc:0
|
||||
|
@ -5853,7 +5853,7 @@ msgstr "Lastnik bančnega računa"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_uncategorized
|
||||
msgid "Uncategorized"
|
||||
msgstr ""
|
||||
msgstr "Neopredeljeno"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_name:0
|
||||
|
@ -5921,7 +5921,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:res.partner.bank:0
|
||||
msgid "My Banks"
|
||||
msgstr ""
|
||||
msgstr "Moje banke"
|
||||
|
||||
#. module: base
|
||||
#: help:multi_company.default,object_id:0
|
||||
|
@ -6003,12 +6003,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_report_creator
|
||||
msgid "Query Builder"
|
||||
msgstr ""
|
||||
msgstr "Čarovnik za poizvedbe"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.todo,type:0
|
||||
msgid "Launch Automatically"
|
||||
msgstr ""
|
||||
msgstr "Zaženi samodejno"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_mail
|
||||
|
@ -6141,7 +6141,7 @@ msgstr ""
|
|||
#: code:addons/base/module/module.py:392
|
||||
#, python-format
|
||||
msgid "Uninstall"
|
||||
msgstr ""
|
||||
msgstr "Odstrani"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_budget
|
||||
|
@ -6161,7 +6161,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:ir.mail_server,smtp_encryption:0
|
||||
msgid "SSL/TLS"
|
||||
msgstr ""
|
||||
msgstr "SSL/TLS"
|
||||
|
||||
#. module: base
|
||||
#: field:publisher_warranty.contract,check_opw:0
|
||||
|
|
|
@ -142,13 +142,13 @@ class report_xml(osv.osv):
|
|||
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *a: 'ir.actions.report.xml',
|
||||
'multi': lambda *a: False,
|
||||
'auto': lambda *a: True,
|
||||
'header': lambda *a: True,
|
||||
'report_sxw_content': lambda *a: False,
|
||||
'report_type': lambda *a: 'pdf',
|
||||
'attachment': lambda *a: False,
|
||||
'type': 'ir.actions.report.xml',
|
||||
'multi': False,
|
||||
'auto': True,
|
||||
'header': True,
|
||||
'report_sxw_content': False,
|
||||
'report_type': 'pdf',
|
||||
'attachment': False,
|
||||
}
|
||||
|
||||
report_xml()
|
||||
|
@ -251,14 +251,14 @@ class act_window(osv.osv):
|
|||
}
|
||||
|
||||
_defaults = {
|
||||
'type': lambda *a: 'ir.actions.act_window',
|
||||
'view_type': lambda *a: 'form',
|
||||
'view_mode': lambda *a: 'tree,form',
|
||||
'context': lambda *a: '{}',
|
||||
'limit': lambda *a: 80,
|
||||
'target': lambda *a: 'current',
|
||||
'auto_refresh': lambda *a: 0,
|
||||
'auto_search':lambda *a: True,
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'context': '{}',
|
||||
'limit': 80,
|
||||
'target': 'current',
|
||||
'auto_refresh': 0,
|
||||
'auto_search':True,
|
||||
'multi': False,
|
||||
}
|
||||
|
||||
|
@ -298,7 +298,7 @@ class act_window_view(osv.osv):
|
|||
help="If set to true, the action will not be displayed on the right toolbar of a form view."),
|
||||
}
|
||||
_defaults = {
|
||||
'multi': lambda *a: False,
|
||||
'multi': False,
|
||||
}
|
||||
def _auto_init(self, cr, context=None):
|
||||
super(act_window_view, self)._auto_init(cr, context)
|
||||
|
@ -322,8 +322,8 @@ class act_wizard(osv.osv):
|
|||
'model': fields.char('Object', size=64),
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *a: 'ir.actions.wizard',
|
||||
'multi': lambda *a: False,
|
||||
'type': 'ir.actions.wizard',
|
||||
'multi': False,
|
||||
}
|
||||
act_wizard()
|
||||
|
||||
|
@ -344,8 +344,8 @@ class act_url(osv.osv):
|
|||
)
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *a: 'ir.actions.act_url',
|
||||
'target': lambda *a: 'new'
|
||||
'type': 'ir.actions.act_url',
|
||||
'target': 'new'
|
||||
}
|
||||
act_url()
|
||||
|
||||
|
@ -388,7 +388,7 @@ class server_object_lines(osv.osv):
|
|||
], 'Type', required=True, size=32, change_default=True),
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *a: 'equation',
|
||||
'type': 'equation',
|
||||
}
|
||||
server_object_lines()
|
||||
|
||||
|
@ -490,11 +490,11 @@ class actions_server(osv.osv):
|
|||
'copy_object': fields.reference('Copy Of', selection=_select_objects, size=256),
|
||||
}
|
||||
_defaults = {
|
||||
'state': lambda *a: 'dummy',
|
||||
'condition': lambda *a: 'True',
|
||||
'type': lambda *a: 'ir.actions.server',
|
||||
'sequence': lambda *a: 5,
|
||||
'code': lambda *a: """# You can use the following variables:
|
||||
'state': 'dummy',
|
||||
'condition': 'True',
|
||||
'type': 'ir.actions.server',
|
||||
'sequence': 5,
|
||||
'code': """# You can use the following variables:
|
||||
# - self: ORM model of the record on which the action is triggered
|
||||
# - object: browse_record of the record on which the action is triggered if there is one, otherwise None
|
||||
# - pool: ORM model pool (i.e. self.pool)
|
||||
|
@ -747,7 +747,7 @@ class act_window_close(osv.osv):
|
|||
_inherit = 'ir.actions.actions'
|
||||
_table = 'ir_actions'
|
||||
_defaults = {
|
||||
'type': lambda *a: 'ir.actions.act_window_close',
|
||||
'type': 'ir.actions.act_window_close',
|
||||
}
|
||||
act_window_close()
|
||||
|
||||
|
|
|
@ -80,13 +80,13 @@ class ir_cron(osv.osv):
|
|||
|
||||
_defaults = {
|
||||
'nextcall' : lambda *a: time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'priority' : lambda *a: 5,
|
||||
'priority' : 5,
|
||||
'user_id' : lambda obj,cr,uid,context: uid,
|
||||
'interval_number' : lambda *a: 1,
|
||||
'interval_type' : lambda *a: 'months',
|
||||
'numbercall' : lambda *a: 1,
|
||||
'active' : lambda *a: 1,
|
||||
'doall' : lambda *a: 1
|
||||
'interval_number' : 1,
|
||||
'interval_type' : 'months',
|
||||
'numbercall' : 1,
|
||||
'active' : 1,
|
||||
'doall' : 1
|
||||
}
|
||||
|
||||
def _check_args(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -197,7 +197,7 @@ class ir_mail_server(osv.osv):
|
|||
logpiper = WriteToLogger(_logger)
|
||||
smtplib.stderr = logpiper
|
||||
smtplib.stdout = logpiper
|
||||
return super(ir_mail_server, self).__init__(*args,**kwargs)
|
||||
super(ir_mail_server, self).__init__(*args,**kwargs)
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
return [(a["id"], "(%s)" % (a['name'])) for a in self.read(cr, uid, ids, ['name'], context=context)]
|
||||
|
|
|
@ -106,7 +106,7 @@ class ir_model(osv.osv):
|
|||
}
|
||||
|
||||
_defaults = {
|
||||
'model': lambda *a: 'x_',
|
||||
'model': 'x_',
|
||||
'state': lambda self,cr,uid,ctx=None: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
|
||||
}
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ class view_sc(osv.osv):
|
|||
|
||||
_order = 'sequence,name'
|
||||
_defaults = {
|
||||
'resource': lambda *a: 'ir.ui.menu',
|
||||
'resource': 'ir.ui.menu',
|
||||
'user_id': lambda obj, cr, uid, context: uid,
|
||||
}
|
||||
_sql_constraints = [
|
||||
|
|
|
@ -172,6 +172,7 @@
|
|||
<field name="author"/>
|
||||
<field name="installed_version"/>
|
||||
<field name="state"/>
|
||||
<field name="category_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -46,12 +46,12 @@ class base_module_upgrade(osv.osv_memory):
|
|||
|
||||
ids = self.get_module_list(cr, uid, context=context)
|
||||
if not ids:
|
||||
res['arch'] = '''<form string="Apply Schedule Upgrade" version="7.0">
|
||||
<header>
|
||||
<button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
|
||||
<button special="cancel" string="Close" icon="gtk-cancel"/>
|
||||
</header>
|
||||
<separator string="Apply Schedule Upgrade" colspan="4"/>
|
||||
res['arch'] = '''<form string="Upgrade Completed" version="7.0">
|
||||
<separator string="Upgrade Completed" colspan="4"/>
|
||||
<footer>
|
||||
<button name="config" string="Start Configuration" type="object" class="oe_highlight"/> or
|
||||
<button special="cancel" string="Close" class="oe_link"/>
|
||||
</footer>
|
||||
</form>'''
|
||||
|
||||
return res
|
||||
|
|
|
@ -31,7 +31,6 @@ import res_company
|
|||
import res_users
|
||||
import res_request
|
||||
import res_lang
|
||||
import res_widget
|
||||
import ir_property
|
||||
|
||||
import report
|
||||
|
|
|
@ -155,7 +155,7 @@ class res_partner_bank(osv.osv):
|
|||
cursor, user, 'country_id', context=context),
|
||||
'state_id': lambda obj, cursor, user, context: obj._default_value(
|
||||
cursor, user, 'state_id', context=context),
|
||||
'name': lambda *args: '/'
|
||||
'name': '/'
|
||||
}
|
||||
|
||||
def fields_get(self, cr, uid, fields=None, context=None):
|
||||
|
|
|
@ -51,8 +51,8 @@ class multi_company_default(osv.osv):
|
|||
}
|
||||
|
||||
_defaults = {
|
||||
'expression': lambda *a: 'True',
|
||||
'sequence': lambda *a: 100,
|
||||
'expression': 'True',
|
||||
'sequence': 100,
|
||||
}
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
|
@ -235,7 +235,7 @@ class res_company(osv.osv):
|
|||
self.cache_restart(cr)
|
||||
return super(res_company, self).create(cr, uid, vals, context=context)
|
||||
obj_partner = self.pool.get('res.partner')
|
||||
partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True}, context=context)
|
||||
partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True, 'image': vals.get('logo', False)}, context=context)
|
||||
vals.update({'partner_id': partner_id})
|
||||
self.cache_restart(cr)
|
||||
company_id = super(res_company, self).create(cr, uid, vals, context=context)
|
||||
|
|
|
@ -108,6 +108,14 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="company_normal_action_tree" model="ir.actions.act_window">
|
||||
<field name="name">Companies</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.company</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('id','=',active_id)]</field>
|
||||
</record>
|
||||
<record id="action_res_company_form" model="ir.actions.act_window">
|
||||
<field name="name">Companies</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
@ -125,6 +133,13 @@
|
|||
</record>
|
||||
<menuitem action="action_res_company_tree" groups="base.group_multi_company" id="menu_action_res_company_tree" parent="base.menu_res_company_global" sequence="16"/>
|
||||
|
||||
<record id="ir_open_company" model="ir.values">
|
||||
<field eval="'tree_but_open'" name="key2"/>
|
||||
<field eval="'res.company'" name="model"/>
|
||||
<field name="name">Companies</field>
|
||||
<field eval="'ir.actions.act_window,%d'%company_normal_action_tree" name="value"/>
|
||||
</record>
|
||||
|
||||
<record id="view_inventory_tree" model="ir.ui.view">
|
||||
<field name="name">multi_company.default.tree</field>
|
||||
<field name="model">multi_company.default</field>
|
||||
|
|
|
@ -69,7 +69,7 @@ class res_currency(osv.osv):
|
|||
'position': fields.selection([('after','After Amount'),('before','Before Amount')], 'Symbol Position', help="Determines where the currency symbol should be placed after or before the amount.")
|
||||
}
|
||||
_defaults = {
|
||||
'active': lambda *a: 1,
|
||||
'active': 1,
|
||||
'position' : 'after',
|
||||
'rounding': 0.01,
|
||||
'accuracy': 4,
|
||||
|
|
|
@ -143,14 +143,14 @@ class lang(osv.osv):
|
|||
'thousands_sep':fields.char('Thousands Separator',size=64),
|
||||
}
|
||||
_defaults = {
|
||||
'active': lambda *a: 1,
|
||||
'translatable': lambda *a: 0,
|
||||
'direction': lambda *a: 'ltr',
|
||||
'active': 1,
|
||||
'translatable': 0,
|
||||
'direction': 'ltr',
|
||||
'date_format':_get_default_date_format,
|
||||
'time_format':_get_default_time_format,
|
||||
'grouping':lambda *a: '[]',
|
||||
'decimal_point':lambda *a: '.',
|
||||
'thousands_sep':lambda *a: ',',
|
||||
'grouping': '[]',
|
||||
'decimal_point': '.',
|
||||
'thousands_sep': ',',
|
||||
}
|
||||
_sql_constraints = [
|
||||
('name_uniq', 'unique (name)', 'The name of the language must be unique !'),
|
||||
|
|
|
@ -135,7 +135,7 @@ class res_partner_category(osv.osv):
|
|||
(osv.osv._check_recursion, 'Error ! You can not create recursive categories.', ['parent_id'])
|
||||
]
|
||||
_defaults = {
|
||||
'active': lambda *a: 1,
|
||||
'active': 1,
|
||||
}
|
||||
_parent_store = True
|
||||
_parent_order = 'name'
|
||||
|
@ -213,7 +213,7 @@ class res_partner(osv.osv, format_address):
|
|||
'employee': fields.boolean('Employee', help="Check this box if this contact is an Employee."),
|
||||
'function': fields.char('Job Position', size=128),
|
||||
'type': fields.selection([('default', 'Default'), ('invoice', 'Invoice'),
|
||||
('delivery', 'Delivery'), ('contact', 'Contact'),
|
||||
('delivery', 'Shipping'), ('contact', 'Contact'),
|
||||
('other', 'Other')], 'Address Type',
|
||||
help="Used to select automatically the right address according to the context in sales and purchases documents."),
|
||||
'street': fields.char('Street', size=128),
|
||||
|
@ -320,6 +320,12 @@ class res_partner(osv.osv, format_address):
|
|||
return {'value': dict((key, value_or_id(parent[key])) for key in ADDRESS_FIELDS)}
|
||||
return {}
|
||||
|
||||
def onchange_state(self, cr, uid, ids, state_id, context=None):
|
||||
if state_id:
|
||||
country_id = self.pool.get('res.country.state').browse(cr, uid, state_id, context).country_id.id
|
||||
return {'value':{'country_id':country_id}}
|
||||
return {}
|
||||
|
||||
def _check_ean_key(self, cr, uid, ids, context=None):
|
||||
for partner_o in pooler.get_pool(cr.dbname).get('res.partner').read(cr, uid, ids, ['ean13',]):
|
||||
thisean=partner_o['ean13']
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -162,7 +162,7 @@
|
|||
<field name="street2"/>
|
||||
<div class="address_format">
|
||||
<field name="city" placeholder="City" style="width: 40%%"/>
|
||||
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}'/>
|
||||
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}' on_change="onchange_state(state_id)"/>
|
||||
<field name="zip" placeholder="ZIP" style="width: 20%%"/>
|
||||
</div>
|
||||
<field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/>
|
||||
|
|
|
@ -77,10 +77,10 @@ class res_request(osv.osv):
|
|||
'history': fields.one2many('res.request.history','req_id', 'History')
|
||||
}
|
||||
_defaults = {
|
||||
'act_from': lambda obj,cr,uid,context={}: uid,
|
||||
'state': lambda obj,cr,uid,context={}: 'draft',
|
||||
'active': lambda obj,cr,uid,context={}: True,
|
||||
'priority': lambda obj,cr,uid,context={}: '1',
|
||||
'act_from': lambda obj,cr,uid,context=None: uid,
|
||||
'state': 'draft',
|
||||
'active': True,
|
||||
'priority': '1',
|
||||
}
|
||||
_order = 'priority desc, trigger_date, create_date desc'
|
||||
_table = 'res_request'
|
||||
|
@ -94,7 +94,7 @@ class res_request_link(osv.osv):
|
|||
'priority': fields.integer('Priority'),
|
||||
}
|
||||
_defaults = {
|
||||
'priority': lambda *a: 5,
|
||||
'priority': 5,
|
||||
}
|
||||
_order = 'priority'
|
||||
res_request_link()
|
||||
|
@ -110,9 +110,9 @@ class res_request_history(osv.osv):
|
|||
'date_sent': fields.datetime('Date sent', states={'waiting':[('readonly',True)]}, required=True)
|
||||
}
|
||||
_defaults = {
|
||||
'name': lambda *a: 'NoName',
|
||||
'act_from': lambda obj,cr,uid,context={}: uid,
|
||||
'act_to': lambda obj,cr,uid,context={}: uid,
|
||||
'name': 'NoName',
|
||||
'act_from': lambda obj,cr,uid,context=None: uid,
|
||||
'act_to': lambda obj,cr,uid,context=None: uid,
|
||||
'date_sent': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
}
|
||||
res_request_history()
|
||||
|
|
|
@ -122,7 +122,6 @@ class res_users(osv.osv):
|
|||
}
|
||||
_name = "res.users"
|
||||
_description = 'Users'
|
||||
_order = 'login'
|
||||
|
||||
def _set_new_password(self, cr, uid, id, name, value, args, context=None):
|
||||
if value is False:
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
|
||||
|
||||
class res_widget(osv.osv):
|
||||
_name = "res.widget"
|
||||
_rec_name = "title"
|
||||
_columns = {
|
||||
'title' : fields.char('Title', size=64, required=True, translate=True),
|
||||
'content': fields.text('Content', required=True),
|
||||
}
|
||||
|
||||
res_widget()
|
||||
|
||||
|
||||
class res_widget_user(osv.osv):
|
||||
_name="res.widget.user"
|
||||
_rec_name="user_id"
|
||||
_order = "sequence"
|
||||
_columns = {
|
||||
'sequence': fields.integer('Sequence'),
|
||||
'user_id': fields.many2one('res.users','User', select=1, ondelete='cascade'),
|
||||
'widget_id': fields.many2one('res.widget','Widget',required=True, ondelete='cascade'),
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
existing = self.search(cr, uid, [('user_id', '=', vals.get('user_id')), ('widget_id', '=', vals.get('widget_id'))], context=context)
|
||||
if existing:
|
||||
res = existing[0]
|
||||
else:
|
||||
res = super(res_widget_user, self).create(cr, uid, vals, context=context)
|
||||
return res
|
||||
|
||||
res_widget_user()
|
||||
|
||||
class res_widget_wizard(osv.osv_memory):
|
||||
_name = "res.widget.wizard"
|
||||
_description = "Add a widget for User"
|
||||
|
||||
def widgets_list_get(self, cr, uid,context=None):
|
||||
widget_obj=self.pool.get('res.widget')
|
||||
ids=widget_obj.search(cr, uid,[],context=context)
|
||||
if not len(ids):
|
||||
return []
|
||||
reads = widget_obj.read(cr, uid, ids, ['title'], context=context)
|
||||
res = []
|
||||
for record in reads:
|
||||
res.append((record['id'], record['title']))
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'widgets_list': fields.selection(widgets_list_get,string='Widget',required=True),
|
||||
}
|
||||
|
||||
def action_get(self, cr, uid, context=None):
|
||||
return self.pool.get('ir.actions.act_window').for_xml_id(
|
||||
cr, uid, 'base', 'action_res_widget_wizard', context=context)
|
||||
|
||||
def res_widget_add(self, cr, uid, ids, context=None):
|
||||
widget_id = self.read(cr, uid, ids, context=context)[0]
|
||||
if widget_id.has_key('widgets_list') and widget_id['widgets_list']:
|
||||
self.pool.get('res.widget.user').create(
|
||||
cr, uid, {'user_id':uid, 'widget_id':widget_id['widgets_list']}, context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
res_widget_wizard()
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,78 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="openerp_favorites_twitter_widget" model="res.widget">
|
||||
<field name="title">OpenERP Tweets</field>
|
||||
<field name="content"><![CDATA[
|
||||
<script type="text/javascript" src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<script type="text/javascript">
|
||||
if (typeof(TWTR) !== 'undefined') {
|
||||
new TWTR.Widget({
|
||||
version: 2,
|
||||
type: 'faves',
|
||||
rpp: 10,
|
||||
interval: 6000,
|
||||
title: '',
|
||||
subject: '',
|
||||
width: 'auto',
|
||||
height: 300,
|
||||
theme: {
|
||||
shell: {
|
||||
background: '#F0EEEE',
|
||||
color: '#444444'
|
||||
},
|
||||
tweets: {
|
||||
background: '#F0EEEE',
|
||||
color: '#444444',
|
||||
links: '#9A0404'
|
||||
}
|
||||
},
|
||||
features: {
|
||||
scrollbar: true,
|
||||
loop: false,
|
||||
live: true,
|
||||
hashtags: true,
|
||||
timestamp: true,
|
||||
avatars: true,
|
||||
behavior: 'all'
|
||||
}
|
||||
}).render().setUser('openerp').start();
|
||||
}
|
||||
</script>]]> </field>
|
||||
</record>
|
||||
|
||||
<record id="events_widget" model="res.widget">
|
||||
<field name="title">Events</field>
|
||||
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<div style="width:195px; text-align:center;" ><iframe src="http://www.eventbrite.com/calendar-widget?eid=852573069" frameborder="0" height="626" width="220" marginheight="0" marginwidth="0" scrolling="no" ></iframe><div style="font-family:Helvetica, Arial; font-size:10px; padding:5px 0 5px; margin:2px; width:195px; text-align:center;" ><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com/features?ref=ecal" >Online Ticketing</a><span style="color:#ddd;" > powered by </span><a style="color:#ddd; text-decoration:none;" target="_blank" href="http://www.eventbrite.com?ref=ecal" >Eventbrite</a></div>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="facebook_widget" model="res.widget">
|
||||
<field name="title">Facebook</field>
|
||||
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<iframe src="http://www.facebook.com/plugins/activity.php?site=www.facebook.com/OpenERP&width=399&height=300&header=true&colorscheme=light&recommendations=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:399px; height:300px;" allowTransparency="true"></iframe>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="note_widget" model="res.widget">
|
||||
<field name="title">Notes</field>
|
||||
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/ig/modules/sticky.xml&up_title=Note&up_bgcolor=white&up_textcolor=Black&up_stickydata=&synd=open&w=399&h=200&title=Notes&lang=all&country=ALL&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="google_maps_widget" model="res.widget">
|
||||
<field name="title">Google Maps</field>
|
||||
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/uds/modules/elements/localsearch/localsearch.xml&up_location=Ramillies&up_largeMapMode=1&up_kml=1&up_traffic=&up_locationCacheString=&up_locationCacheLat=&up_locationCacheLng=&up_mapType=m&up_idleZoom=11&up_transitionQuery=&up_rawquery=&up_selectedtext=&synd=open&w=399&h=350&title=Map&lang=all&country=ALL&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="currency_converter_widget" model="res.widget">
|
||||
<field name="title">Currency Converter</field>
|
||||
<field name="content"><![CDATA[<script src="http://widgets.twimg.com/j/2/widget.js"></script>
|
||||
<script src="http://www.gmodules.com/ig/ifr?url=http://www.pixelmedia.nl/gmodules/ucc.xml&up_fromcur=USD&up_tocur=EUR&synd=open&w=399&h=110&title=Currency+Converter&lang=all&country=ALL&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="openerp_favorites" model="res.widget.user">
|
||||
<field name="widget_id" ref="openerp_favorites_twitter_widget"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
</data>
|
||||
</openerp>
|
|
@ -1,101 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="view_res_widget_search" model="ir.ui.view">
|
||||
<field name="name">res.widget.search</field>
|
||||
<field name="model">res.widget</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Widget">
|
||||
<field name="title" string="Widget"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_widget_form" model="ir.ui.view">
|
||||
<field name="name">res.widget.form</field>
|
||||
<field name="model">res.widget</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Widgets" version="7.0">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="title"/>
|
||||
<field name="content"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_widget_tree" model="ir.ui.view">
|
||||
<field name="name">res.widget.tree</field>
|
||||
<field name="model">res.widget</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Widgets">
|
||||
<field name="title"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="res_widget_act_window" model="ir.actions.act_window">
|
||||
<field name="name">Homepage Widgets</field>
|
||||
<field name="res_model">res.widget</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_res_widget_search"/>
|
||||
</record>
|
||||
<menuitem action="res_widget_act_window" id="menu_res_widget_act_window" parent="base.next_id_2" />
|
||||
|
||||
<record id="res_widget_user_tree" model="ir.ui.view">
|
||||
<field name="name">res.widget.user.tree</field>
|
||||
<field name="model">res.widget.user</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="User Widgets">
|
||||
<field name="sequence" invisible="1"/>
|
||||
<field name="user_id"/>
|
||||
<field name="widget_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_widget_user_form" model="ir.ui.view">
|
||||
<field name="name">res.widget.user.form</field>
|
||||
<field name="model">res.widget.user</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="User Widgets" version="7.0">
|
||||
<sheet>
|
||||
<group col="4">
|
||||
<field name="widget_id"/>
|
||||
<field name="user_id"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="res_widget_user_act_window" model="ir.actions.act_window">
|
||||
<field name="name">Widgets per User</field>
|
||||
<field name="res_model">res.widget.user</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<menuitem action="res_widget_user_act_window" id="menu_res_widget_user_act_window" parent="base.next_id_2"/>
|
||||
|
||||
<record id="view_res_widget_wizard" model="ir.ui.view">
|
||||
<field name="name">Homepage Widgets Management</field>
|
||||
<field name="model">res.widget.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Widget Wizard" col="4" version="7.0">
|
||||
<header>
|
||||
<button name="res_widget_add" string="Add" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<group>
|
||||
<field name="widgets_list"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<act_window name="Homepage Widgets Management"
|
||||
res_model="res.widget.wizard" src_model="res.widget.user"
|
||||
view_mode="form" target="new" key2="client_action_multi"
|
||||
id="action_res_widget_wizard"/>
|
||||
</data>
|
||||
</openerp>
|
|
@ -46,12 +46,6 @@
|
|||
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="res_widget_user_rule">
|
||||
<field name="name">res.widget.user rule</field>
|
||||
<field name="model_id" ref="model_res_widget_user"/>
|
||||
<field name="domain_force">['|', ('user_id','=',user.id),('user_id','=',False)]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="res_partner_rule">
|
||||
<field name="name">res.partner company</field>
|
||||
<field name="model_id" ref="model_res_partner"/>
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_res_widget_user_all","res_widget_user all","model_res_widget_user",,1,1,1,1
|
||||
"access_res_widget_user_group_user","res_widget_user group_user","model_res_widget_user","group_user",1,1,1,1
|
||||
"access_ir_attachment_all","ir_attachment all","model_ir_attachment",,1,0,0,0
|
||||
"access_ir_attachment_group_user","ir_attachment group_user","model_ir_attachment","group_user",1,1,1,1
|
||||
"access_ir_cron_group_cron","ir_cron group_cron","model_ir_cron","group_system",1,1,1,1
|
||||
|
@ -115,8 +113,6 @@
|
|||
"access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0
|
||||
"access_ir_filter employee","ir_filters employee","model_ir_filters","group_user",1,1,1,1
|
||||
"access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1
|
||||
"access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1
|
||||
"access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0
|
||||
"access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0
|
||||
"access_ir_mail_server_all","ir_mail_server","model_ir_mail_server",,1,0,0,0
|
||||
"access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0
|
||||
|
|
|
|
@ -1548,7 +1548,6 @@ class BaseModel(object):
|
|||
)
|
||||
self._invalids.update(fields)
|
||||
if error_msgs:
|
||||
cr.rollback()
|
||||
raise except_orm('ValidateError', '\n'.join(error_msgs))
|
||||
else:
|
||||
self._invalids.clear()
|
||||
|
@ -2293,7 +2292,9 @@ class BaseModel(object):
|
|||
if view_type == 'tree' or not action[2].get('multi')]
|
||||
resprint = [clean(print_) for print_ in resprint
|
||||
if view_type == 'tree' or not print_[2].get('multi')]
|
||||
resrelate = map(lambda x: x[2], resrelate)
|
||||
#When multi="True" set it will display only in More of the list view
|
||||
resrelate = [clean(action) for action in resrelate
|
||||
if (action[2].get('multi') and view_type == 'tree') or (not action[2].get('multi') and view_type == 'form')]
|
||||
|
||||
for x in itertools.chain(resprint, resaction, resrelate):
|
||||
x['string'] = x['name']
|
||||
|
|
|
@ -9,7 +9,7 @@ See the :ref:`test-framework` section in the :ref:`features` list.
|
|||
"""
|
||||
|
||||
from . import test_expression, test_html_sanitize, test_ir_sequence, test_orm,\
|
||||
test_fields, test_per_class_teardown, \
|
||||
test_fields, test_basecase, \
|
||||
test_view_validation, test_uninstall, test_misc, test_db_cursor
|
||||
|
||||
fast_suite = [
|
||||
|
@ -22,7 +22,7 @@ checks = [
|
|||
test_db_cursor,
|
||||
test_orm,
|
||||
test_fields,
|
||||
test_per_class_teardown,
|
||||
test_basecase,
|
||||
test_view_validation,
|
||||
test_misc,
|
||||
]
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
"""
|
||||
The module :mod:`openerp.tests.common` provides a few helpers and classes to write
|
||||
tests.
|
||||
"""
|
||||
import threading
|
||||
import time
|
||||
import unittest2
|
||||
|
@ -40,10 +43,11 @@ def stop_openerp():
|
|||
"""
|
||||
openerp.service.stop_services()
|
||||
|
||||
|
||||
class BaseCase(unittest2.TestCase):
|
||||
"""
|
||||
Subclass of TestCase for common OpenERP-specific code.
|
||||
|
||||
This class is abstract and expects self.cr and self.uid to be initialized by subclasses.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
|
@ -54,6 +58,29 @@ class BaseCase(unittest2.TestCase):
|
|||
def registry(self, model):
|
||||
return openerp.modules.registry.RegistryManager.get(DB)[model]
|
||||
|
||||
@classmethod
|
||||
def ref(self, xid):
|
||||
""" Returns database ID corresponding to a given identifier.
|
||||
|
||||
:param xid: fully-qualified record identifier, in the form ``module.identifier``
|
||||
:raise: ValueError if not found
|
||||
"""
|
||||
assert "." in xid, "this method requires a fully qualified parameter, in the following form: 'module.identifier'"
|
||||
module, xid = xid.split('.')
|
||||
_, id = self.registry('ir.model.data').get_object_reference(self.cr, self.uid, module, xid)
|
||||
return id
|
||||
|
||||
@classmethod
|
||||
def browse_ref(self, xid):
|
||||
""" Returns a browsable record for the given identifier.
|
||||
|
||||
:param xid: fully-qualified record identifier, in the form ``module.identifier``
|
||||
:raise: ValueError if not found
|
||||
"""
|
||||
assert "." in xid, "this method requires a fully qualified parameter, in the following form: 'module.identifier'"
|
||||
module, xid = xid.split('.')
|
||||
return self.registry('ir.model.data').get_object(self.cr, self.uid, module, xid)
|
||||
|
||||
|
||||
class TransactionCase(BaseCase):
|
||||
"""
|
||||
|
@ -92,8 +119,8 @@ class RpcCase(unittest2.TestCase):
|
|||
Subclass of TestCase with a few XML-RPC proxies.
|
||||
"""
|
||||
|
||||
def __init__(self, name):
|
||||
super(RpcCase, self).__init__(name)
|
||||
def __init__(self, methodName='runTest'):
|
||||
super(RpcCase, self).__init__(methodName)
|
||||
|
||||
class A(object):
|
||||
pass
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import unittest2
|
||||
|
||||
import openerp
|
||||
import common
|
||||
|
||||
class test_per_class_teardown(common.SingleTransactionCase):
|
||||
class test_single_transaction_case(common.SingleTransactionCase):
|
||||
"""
|
||||
Check the whole-class transaction behavior of SingleTransactionCase.
|
||||
"""
|
||||
|
@ -22,7 +21,30 @@ class test_per_class_teardown(common.SingleTransactionCase):
|
|||
ids = self.registry('res.partner').search(cr, uid, [('name', '=', 'test_per_class_teardown_partner')])
|
||||
self.assertEqual(1, len(ids), "Test partner not found.")
|
||||
|
||||
class test_per_method_teardown(common.TransactionCase):
|
||||
def test_20a(self):
|
||||
""" Create a partner with a XML ID """
|
||||
cr, uid = self.cr, self.uid
|
||||
res_partner = self.registry('res.partner')
|
||||
ir_model_data = self.registry('ir.model.data')
|
||||
pid, _ = res_partner.name_create(cr, uid, 'Mr Blue')
|
||||
ir_model_data.create(cr, uid, {'name': 'test_partner_blue',
|
||||
'module': 'base',
|
||||
'model': 'res.partner',
|
||||
'res_id': pid})
|
||||
def test_20b(self):
|
||||
""" Resolve xml id with ref() and browse_ref() """
|
||||
cr, uid = self.cr, self.uid
|
||||
res_partner = self.registry('res.partner')
|
||||
xid = 'base.test_partner_blue'
|
||||
p_ref = self.ref(xid)
|
||||
self.assertTrue(p_ref, "ref() should resolve xid to database ID")
|
||||
partner = res_partner.browse(cr, uid, p_ref)
|
||||
p_browse_ref = self.browse_ref(xid)
|
||||
self.assertEqual(partner, p_browse_ref, "browse_ref() should resolve xid to browse records")
|
||||
|
||||
|
||||
|
||||
class test_transaction_case(common.TransactionCase):
|
||||
"""
|
||||
Check the per-method transaction behavior of TransactionCase.
|
||||
"""
|
|
@ -286,8 +286,11 @@ class YamlInterpreter(object):
|
|||
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, SUPERUSER_ID, self.module, record.view)[1]
|
||||
if view_id and (view_id is not True) and isinstance(view_id, basestring):
|
||||
module = self.module
|
||||
if '.' in view_id:
|
||||
module, view_id = view_id.split('.',1)
|
||||
view_id = self.pool.get('ir.model.data').get_object_reference(self.cr, SUPERUSER_ID, module, view_id)[1]
|
||||
|
||||
if model.is_transient():
|
||||
record_dict=self.create_osv_memory_record(record, fields)
|
||||
|
@ -378,7 +381,11 @@ class YamlInterpreter(object):
|
|||
return False
|
||||
return val
|
||||
|
||||
view = view_info and etree.fromstring(view_info['arch'].encode('utf-8')) or False
|
||||
if view_info:
|
||||
arch = etree.fromstring(view_info['arch'].encode('utf-8'))
|
||||
view = arch if len(arch) else False
|
||||
else:
|
||||
view = False
|
||||
fields = fields or {}
|
||||
if view is not False:
|
||||
fg = view_info['fields']
|
||||
|
|
|
@ -109,6 +109,8 @@ def assert_constructor(loader, node):
|
|||
|
||||
def record_constructor(loader, node):
|
||||
kwargs = loader.construct_mapping(node)
|
||||
assert "model" in kwargs, "'model' argument is required for !record"
|
||||
assert "id" in kwargs, "'id' argument is required for !record"
|
||||
return Record(**kwargs)
|
||||
|
||||
def python_constructor(loader, node):
|
||||
|
|
Loading…
Reference in New Issue