Merge lp:openobject-server
bzr revid: jam@tinyerp.com-20120817044741-thqezvmy7iaphkea bzr revid: jam@tinyerp.com-20120821043844-4wf3dcxbbbokhe5l bzr revid: jam@tinyerp.com-20120827043023-kz2bbk8fvfv4gkh5
This commit is contained in:
+1
-1
@@ -105,7 +105,7 @@ def run_test_file(dbname, test_file):
|
||||
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)
|
||||
openerp.tools.convert_yaml_import(cr, 'base', file(test_file), {}, 'test', True)
|
||||
openerp.tools.convert_yaml_import(cr, 'base', file(test_file), 'test', {}, 'test', True)
|
||||
cr.rollback()
|
||||
cr.close()
|
||||
except Exception:
|
||||
|
||||
@@ -25,20 +25,21 @@
|
||||
'name': 'Base',
|
||||
'version': '1.3',
|
||||
'category': 'Hidden',
|
||||
'description': """The kernel of OpenERP, needed for all installation.""",
|
||||
'description': """
|
||||
The kernel of OpenERP, needed for all installation.
|
||||
===================================================
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'maintainer': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends': [],
|
||||
'init_xml': [
|
||||
'data': [
|
||||
'base_data.xml',
|
||||
'security/base_security.xml',
|
||||
'base_menu.xml',
|
||||
'res/res_security.xml',
|
||||
'res/res_config.xml',
|
||||
'data/res.country.state.csv'
|
||||
],
|
||||
'update_xml': [
|
||||
'data/res.country.state.csv',
|
||||
'ir/wizard/wizard_menu_view.xml',
|
||||
'ir/ir.xml',
|
||||
'ir/ir_filters.xml',
|
||||
@@ -77,7 +78,7 @@
|
||||
'res/res_widget_data.xml',
|
||||
'publisher_warranty/publisher_warranty_data.xml',
|
||||
],
|
||||
'demo_xml': [
|
||||
'demo': [
|
||||
'base_demo.xml',
|
||||
'res/res_partner_demo.xml',
|
||||
'res/res_partner_demo.yml',
|
||||
|
||||
@@ -1060,11 +1060,10 @@
|
||||
<field name="company_id" eval="None"/>
|
||||
<field name="customer" eval="False"/>
|
||||
<field name="is_company" eval="True"/>
|
||||
<field name="street">45, Rue du Palais</field>
|
||||
<field name="city">Paris</field>
|
||||
<field name="zip">75016</field>
|
||||
<field ref="base.fr" name="country_id"/>
|
||||
<field name="phone">+33 1 49 51 23 94</field>
|
||||
<field name="street"></field>
|
||||
<field name="city"></field>
|
||||
<field name="zip"></field>
|
||||
<field name="phone"></field>
|
||||
<field name="email">info@yourcompany.com</field>
|
||||
<field name="website">www.yourcompany.com</field>
|
||||
</record>
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3653,7 +3653,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9864,7 +9864,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3721,7 +3721,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ضريبة القيمة المضافة"
|
||||
|
||||
#. module: base
|
||||
@@ -9975,7 +9975,7 @@ msgstr "الأسابيع"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3383,7 +3383,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9064,7 +9064,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3705,7 +3705,7 @@ msgstr "Проверка на EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ДДС"
|
||||
|
||||
#. module: base
|
||||
@@ -9961,7 +9961,7 @@ msgstr "Седмици"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3642,7 +3642,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9853,7 +9853,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3757,7 +3757,7 @@ msgstr "Verificació EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "CIF/NIF"
|
||||
|
||||
#. module: base
|
||||
@@ -10082,7 +10082,7 @@ msgstr "Setmanes"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3787,7 +3787,7 @@ msgstr "Kontrola Ean"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "DIČ"
|
||||
|
||||
#. module: base
|
||||
@@ -10090,7 +10090,7 @@ msgstr "Týdnů"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "DPH: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Moms"
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr "Uger"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4266,7 +4266,7 @@ msgstr "EAN Prüfung"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "USt-IdNr. / UID"
|
||||
|
||||
#. module: base
|
||||
@@ -10907,7 +10907,7 @@ msgstr "Wochen"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "UID: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3728,7 +3728,7 @@ msgstr "Έλεγχος ean"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ΦΠΑ"
|
||||
|
||||
#. module: base
|
||||
@@ -9997,7 +9997,7 @@ msgstr "Εβδομάδες"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4123,7 +4123,7 @@ msgstr "Ean check"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "VAT"
|
||||
|
||||
#. module: base
|
||||
@@ -10427,7 +10427,7 @@ msgstr "Weeks"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3977,7 +3977,7 @@ msgstr "Verificación EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "CIF/NIF"
|
||||
|
||||
#. module: base
|
||||
@@ -10306,7 +10306,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3668,7 +3668,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "CUIT"
|
||||
|
||||
#. module: base
|
||||
@@ -9900,7 +9900,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3795,7 +3795,7 @@ msgstr "Verificación EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "RUT"
|
||||
|
||||
#. module: base
|
||||
@@ -10124,7 +10124,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -1975,7 +1975,7 @@ msgstr ""
|
||||
"``BE0477472701``\n"
|
||||
"será validado con la normativa belga.\n"
|
||||
"\n"
|
||||
"Hay dos niveles diferentes de validación del número de VAT: \n"
|
||||
"Hay dos niveles diferentes de validación del número de TIN: \n"
|
||||
"\n"
|
||||
"*Por defecto, un simple fuera de linea de verificación se realiza mediante "
|
||||
"la validación conocida\n"
|
||||
@@ -4391,7 +4391,7 @@ msgstr "Verificación EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "CIF/NIF"
|
||||
|
||||
#. module: base
|
||||
@@ -12421,7 +12421,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "IVA: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3971,7 +3971,7 @@ msgstr "Ean de verificación"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "CIF/NIF"
|
||||
|
||||
#. module: base
|
||||
@@ -10350,7 +10350,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "IVA "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3665,7 +3665,7 @@ msgstr "Ean kontroll"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Käibemaks"
|
||||
|
||||
#. module: base
|
||||
@@ -9890,7 +9890,7 @@ msgstr "Nädalad"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3667,7 +3667,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "مالیات بر ارزش افزوده"
|
||||
|
||||
#. module: base
|
||||
@@ -9894,7 +9894,7 @@ msgstr "هفتهها"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3751,7 +3751,7 @@ msgstr "EAN tarkistus"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ALV"
|
||||
|
||||
#. module: base
|
||||
@@ -10091,7 +10091,7 @@ msgstr "Viikot"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "ALV: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4371,7 +4371,7 @@ msgstr "Vérification EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "TVA"
|
||||
|
||||
#. module: base
|
||||
@@ -11707,7 +11707,7 @@ msgstr "Semaines"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "TVA: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3757,7 +3757,7 @@ msgstr "comprobar EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "IVE"
|
||||
|
||||
#. module: base
|
||||
@@ -10069,7 +10069,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3692,7 +3692,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9903,7 +9903,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3654,7 +3654,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "מע\"מ"
|
||||
|
||||
#. module: base
|
||||
@@ -9877,7 +9877,7 @@ msgstr "שבועות"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3784,7 +3784,7 @@ msgstr "Provjera Ean"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "PDV"
|
||||
|
||||
#. module: base
|
||||
@@ -10050,7 +10050,7 @@ msgstr "Tjedni"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "PDV "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3744,7 +3744,7 @@ msgstr "EAN ellenőrzés"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Közösségi/nemzetközi adószám"
|
||||
|
||||
#. module: base
|
||||
@@ -10063,7 +10063,7 @@ msgstr "Hetek"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3638,7 +3638,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9849,7 +9849,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3668,7 +3668,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "VSK"
|
||||
|
||||
#. module: base
|
||||
@@ -9880,7 +9880,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3807,7 +3807,7 @@ msgstr "Verifica EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Partita IVA"
|
||||
|
||||
#. module: base
|
||||
@@ -10132,7 +10132,7 @@ msgstr "Settimane"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4131,7 +4131,7 @@ msgstr "EANチェック"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "VAT(Value Added Tax)"
|
||||
|
||||
#. module: base
|
||||
@@ -11571,7 +11571,7 @@ msgstr "週"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4267,7 +4267,7 @@ msgstr "EAN-ის შემოწმება"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "დღგ"
|
||||
|
||||
#. module: base
|
||||
@@ -11688,7 +11688,7 @@ msgstr "კვირეები"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "დღგ: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr "апта"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3681,7 +3681,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "부가세"
|
||||
|
||||
#. module: base
|
||||
@@ -9906,7 +9906,7 @@ msgstr "주"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3646,7 +3646,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "PVM"
|
||||
|
||||
#. module: base
|
||||
@@ -9877,7 +9877,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4533,7 +4533,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3678,7 +3678,7 @@ msgstr "EAN pārbaude"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "PVN"
|
||||
|
||||
#. module: base
|
||||
@@ -9919,7 +9919,7 @@ msgstr "Nedēļas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3645,7 +3645,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9856,7 +9856,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4166,7 +4166,7 @@ msgstr "Зур.код чеклэх"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "НӨАТ"
|
||||
|
||||
#. module: base
|
||||
@@ -11762,7 +11762,7 @@ msgstr "7 хоног"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "НӨАТ: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3686,7 +3686,7 @@ msgstr "Ean sjekk"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "MVA"
|
||||
|
||||
#. module: base
|
||||
@@ -9926,7 +9926,7 @@ msgstr "Uker"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3863,7 +3863,7 @@ msgstr "Ean controle"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "BTW"
|
||||
|
||||
#. module: base
|
||||
@@ -10292,7 +10292,7 @@ msgstr "Weken"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "BTW: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3649,7 +3649,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9860,7 +9860,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4711,7 +4711,7 @@ msgstr "html"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "BTW"
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3730,7 +3730,7 @@ msgstr "Sprawdzanie EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "NIP"
|
||||
|
||||
#. module: base
|
||||
@@ -10025,7 +10025,7 @@ msgstr "Tygodni"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "NIP: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3959,7 +3959,7 @@ msgstr "Verificar EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "IVA"
|
||||
|
||||
#. module: base
|
||||
@@ -10340,7 +10340,7 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "IVA: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4164,7 +4164,7 @@ msgstr "Verificar EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Imposto"
|
||||
|
||||
#. module: base
|
||||
@@ -10849,8 +10849,8 @@ msgstr "Semanas"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgstr "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "TIN: "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.af
|
||||
|
||||
@@ -4363,7 +4363,7 @@ msgstr "Verificati codul EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "TVA"
|
||||
|
||||
#. module: base
|
||||
@@ -12351,7 +12351,7 @@ msgstr "Saptamani"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "TVA: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3811,7 +3811,7 @@ msgstr "Проверка кода Ean"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ИНН"
|
||||
|
||||
#. module: base
|
||||
@@ -10154,7 +10154,7 @@ msgstr "Недели"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3712,7 +3712,7 @@ msgstr "Ean kontrola"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "DPH"
|
||||
|
||||
#. module: base
|
||||
@@ -9991,7 +9991,7 @@ msgstr "Týždne"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3741,7 +3741,7 @@ msgstr "Preveri ean"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "DDV"
|
||||
|
||||
#. module: base
|
||||
@@ -10047,7 +10047,7 @@ msgstr "Tedni"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3633,7 +3633,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9844,7 +9844,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3710,7 +3710,7 @@ msgstr "EAN provera"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "PDV"
|
||||
|
||||
#. module: base
|
||||
@@ -9975,7 +9975,7 @@ msgstr "Nedelje"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4309,7 +4309,7 @@ msgstr "EAN provera"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "PDV"
|
||||
|
||||
#. module: base
|
||||
@@ -11242,7 +11242,7 @@ msgstr "Nedelje"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "PDV: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3952,7 +3952,7 @@ msgstr "EAN kontroll"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Moms"
|
||||
|
||||
#. module: base
|
||||
@@ -10426,7 +10426,7 @@ msgstr "Veckor"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "Moms: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3633,7 +3633,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9844,7 +9844,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3773,7 +3773,7 @@ msgstr "EAN kontrolü"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "KDV"
|
||||
|
||||
#. module: base
|
||||
@@ -10097,7 +10097,7 @@ msgstr "Hafta"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "VNO: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3669,7 +3669,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ПДВ"
|
||||
|
||||
#. module: base
|
||||
@@ -9893,7 +9893,7 @@ msgstr "Тижні"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4551,7 +4551,7 @@ msgstr "html"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "ПДВ"
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3661,7 +3661,7 @@ msgstr "Kiểm tra EAN"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "Thuế GTGT"
|
||||
|
||||
#. module: base
|
||||
@@ -9878,7 +9878,7 @@ msgstr "Tuần"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -4032,7 +4032,7 @@ msgstr "条码检查"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "增值税"
|
||||
|
||||
#. module: base
|
||||
@@ -10638,7 +10638,7 @@ msgstr "周"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr "增值税: "
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3634,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
@@ -9845,7 +9845,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -3639,7 +3639,7 @@ msgstr "Ean 檢查"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgid "TIN"
|
||||
msgstr "增值稅"
|
||||
|
||||
#. module: base
|
||||
@@ -9858,7 +9858,7 @@ msgstr "週"
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgid "TIN: "
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -560,7 +560,6 @@
|
||||
<record model="ir.ui.view" id="view_ir_needaction_users_rel_tree">
|
||||
<field name="name">ir.needaction_users_rel.tree</field>
|
||||
<field name="model">ir.needaction_users_rel</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Subscription">
|
||||
<field name="user_id"/>
|
||||
|
||||
@@ -183,7 +183,6 @@ class ir_model(osv.osv):
|
||||
res = super(ir_model,self).create(cr, user, vals, context)
|
||||
if vals.get('state','base')=='manual':
|
||||
self.instanciate(cr, user, vals['model'], context)
|
||||
self.pool.get(vals['model']).__init__(self.pool, cr)
|
||||
ctx = dict(context,
|
||||
field_name=vals['name'],
|
||||
field_state='manual',
|
||||
@@ -198,7 +197,9 @@ class ir_model(osv.osv):
|
||||
x_custom_model._name = model
|
||||
x_custom_model._module = False
|
||||
a = x_custom_model.create_instance(self.pool, cr)
|
||||
if (not a._columns) or ('x_name' in a._columns.keys()):
|
||||
if not a._columns:
|
||||
x_name = 'id'
|
||||
elif 'x_name' in a._columns.keys():
|
||||
x_name = 'x_name'
|
||||
else:
|
||||
x_name = a._columns.keys()[0]
|
||||
@@ -931,6 +932,9 @@ class ir_model_data(osv.osv):
|
||||
|
||||
ir_model_relation = self.pool.get('ir.model.relation')
|
||||
relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
ir_module_module = self.pool.get('ir.module.module')
|
||||
modules_to_remove_ids = ir_module_module.search(cr, uid, [('name', 'in', modules_to_remove)])
|
||||
relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove_ids)])
|
||||
ir_model_relation._module_data_uninstall(cr, uid, relation_ids, context)
|
||||
|
||||
unlink_if_refcount((model, res_id) for model, res_id in to_unlink
|
||||
|
||||
@@ -45,7 +45,6 @@ class ir_model_constraint(Model):
|
||||
ids_set = set(ids)
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
to_unlink = []
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model.model
|
||||
model_obj = self.pool.get(model)
|
||||
@@ -75,5 +74,4 @@ class ir_model_constraint(Model):
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
|
||||
|
||||
to_unlink.append(data.id)
|
||||
self.unlink(cr, uid, to_unlink, context)
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
@@ -36,7 +36,6 @@ class ir_model_relation(Model):
|
||||
to_drop_table = []
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
to_unlink = []
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model
|
||||
model_obj = self.pool.get(model)
|
||||
@@ -53,9 +52,7 @@ class ir_model_relation(Model):
|
||||
if cr.fetchone() and not name in to_drop_table:
|
||||
to_drop_table.append(name)
|
||||
|
||||
to_unlink.append(data.id)
|
||||
|
||||
self.unlink(cr, uid, to_unlink, context)
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
<field name="act_to"/>
|
||||
<field name="signal"/>
|
||||
</arrow>
|
||||
<label string="When customizing a workflow, be sure you do not modify an existing node or arrow, but rather add new nodes or arrows. If you absolutly need to modify a node or arrow, you can only change fields that are empty or set to the default value. If you don't do that, your customization will be overwrited at the next update or upgrade to a future version of OpenERP."/>
|
||||
</diagram>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -18,12 +18,14 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import base64
|
||||
from docutils.core import publish_string
|
||||
import imp
|
||||
import logging
|
||||
import re
|
||||
import urllib
|
||||
import zipimport
|
||||
import base64
|
||||
|
||||
from openerp import modules, pooler, release, tools, addons
|
||||
from openerp.tools.parse_version import parse_version
|
||||
@@ -94,6 +96,14 @@ class module(osv.osv):
|
||||
'module %s', name, exc_info=True)
|
||||
return info
|
||||
|
||||
def _get_desc(self, cr, uid, ids, field_name=None, arg=None, context=None):
|
||||
res = dict.fromkeys(ids, '')
|
||||
for module in self.browse(cr, uid, ids, context=context):
|
||||
overrides = dict(embed_stylesheet=False, doctitle_xform=False, output_encoding='unicode')
|
||||
output = publish_string(source=module.description, writer_name='html', settings_overrides=overrides)
|
||||
res[module.id] = output
|
||||
return res
|
||||
|
||||
def _get_latest_version(self, cr, uid, ids, field_name=None, arg=None, context=None):
|
||||
res = dict.fromkeys(ids, '')
|
||||
for m in self.browse(cr, uid, ids):
|
||||
@@ -183,6 +193,7 @@ class module(osv.osv):
|
||||
'shortdesc': fields.char('Module Name', size=64, readonly=True, translate=True),
|
||||
'summary': fields.char('Summary', size=64, readonly=True, translate=True),
|
||||
'description': fields.text("Description", readonly=True, translate=True),
|
||||
'description_html': fields.function(_get_desc, string='Description HTML', type='html', method=True, readonly=True),
|
||||
'author': fields.char("Author", size=128, readonly=True),
|
||||
'maintainer': fields.char('Maintainer', size=128, readonly=True),
|
||||
'contributors': fields.text('Contributors', readonly=True),
|
||||
@@ -222,7 +233,7 @@ class module(osv.osv):
|
||||
('AGPL-3', 'Affero GPL-3'),
|
||||
('Other OSI approved licence', 'Other OSI Approved Licence'),
|
||||
('Other proprietary', 'Other Proprietary')
|
||||
], string='License', readonly=True),
|
||||
], string='License', readonly=True),
|
||||
'menus_by_module': fields.function(_get_views, string='Menus', type='text', multi="meta", store=True),
|
||||
'reports_by_module': fields.function(_get_views, string='Reports', type='text', multi="meta", store=True),
|
||||
'views_by_module': fields.function(_get_views, string='Views', type='text', multi="meta", store=True),
|
||||
@@ -371,7 +382,8 @@ class module(osv.osv):
|
||||
ir_model_data = self.pool.get('ir.model.data')
|
||||
ir_model_constraint = self.pool.get('ir.model.constraint')
|
||||
modules_to_remove = [m.name for m in self.browse(cr, uid, ids, context)]
|
||||
constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
modules_to_remove_ids = [m.id for m in self.browse(cr, uid, ids, context)]
|
||||
constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove_ids)])
|
||||
ir_model_constraint._module_data_uninstall(cr, uid, constraint_ids, context)
|
||||
ir_model_data._module_data_uninstall(cr, uid, modules_to_remove, context)
|
||||
self.write(cr, uid, ids, {'state': 'uninstalled'})
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<field name="model">ir.module.module</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search modules">
|
||||
<field name="name" filter_domain="['|', '|', '|', ('description', 'ilike', self), ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('name',
|
||||
<field name="name" filter_domain="['|', '|', ('summary', 'ilike', self), ('shortdesc', 'ilike', self), ('name',
|
||||
'ilike', self)]"/>
|
||||
<filter name="app" icon="terp-check" string="Apps" domain="[('application', '=', 1)]"/>
|
||||
<filter name="extra" icon="terp-check" string="Extra" domain="[('application', '=', 0)]"/>
|
||||
@@ -65,7 +65,7 @@
|
||||
<field name="summary"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_module_vignette oe_kanban_auto_height">
|
||||
<div class="oe_module_vignette">
|
||||
<t t-set="installed" t-value="record.state.raw_value == 'installed'"/>
|
||||
<img t-attf-src="#{record.icon.value}" class="oe_module_icon"/>
|
||||
<div class="oe_module_desc">
|
||||
@@ -133,7 +133,7 @@
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description"/>
|
||||
<field name="description_html"/>
|
||||
</page>
|
||||
<page string="Technical Data" groups="base.group_no_one">
|
||||
<group col="4">
|
||||
|
||||
@@ -142,7 +142,7 @@ class res_company(osv.osv):
|
||||
if phone: val.append(_('Phone: ')+phone)
|
||||
if fax: val.append(_('Fax: ')+fax)
|
||||
if website: val.append(_('Website: ')+website)
|
||||
if vat: val.append(_('VAT: ')+vat)
|
||||
if vat: val.append(_('TIN: ')+vat)
|
||||
if reg: val.append(_('Reg: ')+reg)
|
||||
return {'value': {'rml_footer1':' | '.join(val)}}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="res_config_view_base" model="ir.ui.view">
|
||||
<field name="name">res.config.view.base</field>
|
||||
<field name="model">res.config</field>
|
||||
|
||||
@@ -162,7 +162,7 @@ class res_partner(osv.osv):
|
||||
"It is important to set a value for this field. You should use the same timezone "
|
||||
"that is otherwise used to pick and render date and time values: your computer's timezone."),
|
||||
'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this partner if any.'),
|
||||
'vat': fields.char('VAT',size=32 ,help="Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement."),
|
||||
'vat': fields.char('TIN',size=32 ,help="Tax Identification Number. Check the box if the partner is subjected to taxes. Used by the some of the legal statements."),
|
||||
'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'),
|
||||
'website': fields.char('Website',size=64, help="Website of Partner or Company"),
|
||||
'comment': fields.text('Notes'),
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -95,7 +95,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Partners" version="7.0">
|
||||
<sheet>
|
||||
<field name="image_medium" widget='image' class="oe_avatar oe_left"/>
|
||||
<field name="image" widget='image' class="oe_left" options='{"preview_image": "image_medium", "size": [90, 90]}'/>
|
||||
<div class="oe_title">
|
||||
<div class="oe_edit_only">
|
||||
<label for="name"/> (
|
||||
@@ -164,7 +164,7 @@
|
||||
<field name="phone"/>
|
||||
<field name="street"/>
|
||||
<field name="street2"/>
|
||||
<field name="image_small"/>
|
||||
<field name="image"/>
|
||||
<field name="zip"/>
|
||||
<field name="city"/>
|
||||
<field name="country_id"/>
|
||||
@@ -177,7 +177,7 @@
|
||||
<a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block">X</a>
|
||||
<div class="oe_module_vignette">
|
||||
<a type="edit">
|
||||
<img t-att-src="kanban_image('res.partner', 'image_small', record.id.value)" class="oe_avatar oe_kanban_avatar_smallbox"/>
|
||||
<img t-att-src="kanban_image('res.partner', 'image', record.id.value, {'preview_image': 'image_small'})" class="oe_avatar oe_kanban_avatar_smallbox"/>
|
||||
</a>
|
||||
<div class="oe_module_desc">
|
||||
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border">
|
||||
@@ -204,7 +204,7 @@
|
||||
</templates>
|
||||
</kanban>
|
||||
<form string="Contact" version="7.0">
|
||||
<field name="image_small" widget='image' class="oe_avatar oe_left"/>
|
||||
<field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/>
|
||||
<div class="oe_title">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
@@ -293,7 +293,6 @@
|
||||
<field name="phone"/>
|
||||
<field name="street"/>
|
||||
<field name="street2"/>
|
||||
<field name="image_small"/>
|
||||
<field name="zip"/>
|
||||
<field name="city"/>
|
||||
<field name="country_id"/>
|
||||
|
||||
@@ -1,42 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
<data noupdate="1">
|
||||
|
||||
<record model="res.groups" id="group_partner_manager">
|
||||
<field name="name">Partner Manager</field>
|
||||
</record>
|
||||
<record model="res.groups" id="group_partner_manager">
|
||||
<field name="name">Partner Manager</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.menu" id="menu_config_address_book">
|
||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="menu_base_config">
|
||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="menu_base_partner">
|
||||
<field eval="[(6,0,[ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="menu_config_address_book">
|
||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="menu_base_config">
|
||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
<record model="ir.ui.menu" id="menu_base_partner">
|
||||
<field eval="[(6,0,[ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
<!-- Record Rule For Company -->
|
||||
<record id="res_company_rule" model="ir.rule">
|
||||
<field name="name">company rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_company"/>
|
||||
<field eval="True" name="global"/>
|
||||
<!-- TODO: review this <field name="domain_force">['|', ('child_ids', 'child_of', [user.company_id.id]), ('parent_id', 'child_of', [user.company_id.id])]</field> -->
|
||||
<field name="domain_force">[('id','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
<data noupdate="1">
|
||||
<!-- Record Rule For User -->
|
||||
<record id="res_users_rule" model="ir.rule">
|
||||
<field name="name">user rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_users"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">[('company_ids','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
<!-- Record Rule For Company -->
|
||||
|
||||
<record id="res_company_rule" model="ir.rule">
|
||||
<field name="name">company rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_company"/>
|
||||
<field eval="True" name="global"/>
|
||||
<!-- TODO: review this <field name="domain_force">['|', ('child_ids', 'child_of', [user.company_id.id]), ('parent_id', 'child_of', [user.company_id.id])]</field> -->
|
||||
<field name="domain_force">[('id','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
<!-- Record Rule For User -->
|
||||
<record id="res_users_rule" model="ir.rule">
|
||||
<field name="name">user rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_users"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">[('company_ids','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
|
||||
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
|
||||
# Copyright (C) 2010-2012 OpenERP s.a. (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@@ -332,7 +332,7 @@ class res_users(osv.osv):
|
||||
return super(res_users, self).copy(cr, uid, id, copydef, context)
|
||||
|
||||
def context_get(self, cr, uid, context=None):
|
||||
user = self.browse(cr, uid, uid, context)
|
||||
user = self.browse(cr, 1, uid, context)
|
||||
result = {}
|
||||
for k in self._all_columns.keys():
|
||||
if k.startswith('context_'):
|
||||
|
||||
@@ -215,9 +215,10 @@
|
||||
<field name="signature" readonly="0"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="preference_save" type="object" string="Save"/>
|
||||
<button name="preference_cancel" special="cancel" string="Cancel"/>
|
||||
<button name="preference_change_password" type="object" string="Change password"/>
|
||||
<button name="preference_save" type="object" string="Save"/>
|
||||
or
|
||||
<button name="preference_cancel" string="Cancel" special="cancel" class="oe_link"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -187,7 +187,10 @@
|
||||
<rng:optional><rng:attribute name="create" /></rng:optional>
|
||||
<rng:optional><rng:attribute name="string"/></rng:optional>
|
||||
<rng:ref name="node"/>
|
||||
<rng:ref name="arrow"/>
|
||||
<rng:ref name="arrow"/>
|
||||
<rng:zeroOrMore>
|
||||
<rng:ref name="label"/>
|
||||
</rng:zeroOrMore>
|
||||
</rng:element>
|
||||
</rng:define>
|
||||
|
||||
|
||||
@@ -1,54 +1,51 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
|
||||
<!--
|
||||
Users Groups
|
||||
[Note] Field 'category_id' is set later in base/module/module_data.xml
|
||||
-->
|
||||
<record model="res.groups" id="group_erp_manager">
|
||||
<field name="name">Access Rights</field>
|
||||
</record>
|
||||
<record model="res.groups" id="group_system">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="implied_ids" eval="[(4, ref('group_erp_manager'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_user">
|
||||
<field name="name">Employee</field>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_company">
|
||||
<field name="name">Multi Companies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_currency">
|
||||
<field name="name">Multi Currencies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_no_one">
|
||||
<field name="name">Technical Features</field>
|
||||
</record>
|
||||
|
||||
<record id="group_sale_salesman" model="res.groups">
|
||||
<field name="name">User</field>
|
||||
</record>
|
||||
<record id="group_sale_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="implied_ids" eval="[(4, ref('group_sale_salesman'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- Set accesses to menu -->
|
||||
<record model="ir.ui.menu" id="base.menu_administration">
|
||||
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
|
||||
<!--
|
||||
Users Groups
|
||||
Note that the field 'category_id' is set later in
|
||||
base/module/module_data.xml
|
||||
-->
|
||||
<record model="res.groups" id="group_erp_manager">
|
||||
<field name="name">Access Rights</field>
|
||||
</record>
|
||||
<record model="res.groups" id="group_system">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="implied_ids" eval="[(4, ref('group_erp_manager'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_user">
|
||||
<field name="name">Employee</field>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_company">
|
||||
<field name="name">Multi Companies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_multi_currency">
|
||||
<field name="name">Multi Currencies</field>
|
||||
</record>
|
||||
|
||||
<record model="res.groups" id="group_no_one">
|
||||
<field name="name">Technical Features</field>
|
||||
</record>
|
||||
|
||||
<record id="group_sale_salesman" model="res.groups">
|
||||
<field name="name">User</field>
|
||||
</record>
|
||||
<record id="group_sale_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="implied_ids" eval="[(4, ref('group_sale_salesman'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- Set accesses to menu -->
|
||||
<record model="ir.ui.menu" id="base.menu_administration">
|
||||
<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"/>
|
||||
@@ -58,8 +55,11 @@
|
||||
<record model="ir.rule" id="res_partner_rule">
|
||||
<field name="name">res.partner company</field>
|
||||
<field name="model_id" ref="model_res_partner"/>
|
||||
<!-- Show partners from ancestors and descendants companies (or company-less), this is usually a better
|
||||
default for multicompany setups. -->
|
||||
<!--
|
||||
Show partners from ancestors and descendants companies
|
||||
(or company-less), this is usually a better default for
|
||||
multicompany setups.
|
||||
-->
|
||||
<field name="domain_force">['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field>
|
||||
</record>
|
||||
|
||||
|
||||
@@ -42,15 +42,13 @@
|
||||
-
|
||||
!python {model: ir.model}: |
|
||||
from tools.safe_eval import safe_eval
|
||||
from tools.misc import mute_logger
|
||||
try:
|
||||
safe_eval('open("/etc/passwd","r")')
|
||||
assert False, "safe_eval should not allow calling open() builtin"
|
||||
with mute_logger('openerp.tools.safe_eval'):
|
||||
safe_eval('open("/etc/passwd","r")')
|
||||
assert False, "safe_eval should not allow calling open() builtin"
|
||||
except NameError:
|
||||
pass
|
||||
except:
|
||||
# NameError should be raised because open() builtin is not found,
|
||||
# but other exceptions probably indicate that open() was executed!
|
||||
assert False, "safe_eval should not allow calling open() builtin"
|
||||
pass
|
||||
|
||||
-
|
||||
"ORM test: verify that parent_store computation are going right"
|
||||
|
||||
@@ -185,7 +185,6 @@
|
||||
<rng:optional> <rng:attribute name="string"/> </rng:optional>
|
||||
<rng:optional> <rng:attribute name="sequence"/> </rng:optional>
|
||||
<rng:optional> <rng:attribute name="groups"/> </rng:optional>
|
||||
<rng:optional> <rng:attribute name="type"/> </rng:optional>
|
||||
<rng:optional> <rng:attribute name="menu"/> </rng:optional>
|
||||
<rng:empty />
|
||||
</rng:element>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
|
||||
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
|
||||
# Copyright (C) 2010-2012 OpenERP s.a. (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@@ -84,7 +84,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
||||
_load_data(cr, module_name, idref, mode, 'test')
|
||||
return True
|
||||
except Exception:
|
||||
_logger.error(
|
||||
_logger.exception(
|
||||
'module %s: an exception occurred in a test', module_name)
|
||||
return False
|
||||
finally:
|
||||
@@ -119,7 +119,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
||||
elif ext == '.sql':
|
||||
process_sql_file(cr, fp)
|
||||
elif ext == '.yml':
|
||||
tools.convert_yaml_import(cr, module_name, fp, idref, mode, noupdate, report)
|
||||
tools.convert_yaml_import(cr, module_name, fp, kind, idref, mode, noupdate, report)
|
||||
else:
|
||||
tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
|
||||
finally:
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2011 OpenERP SA (<http://www.openerp.com>)
|
||||
# Copyright (C) 2004-2012 OpenERP SA (<http://www.openerp.com>)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@@ -376,11 +376,11 @@ def dispatch_rpc(service_name, method, params):
|
||||
except openerp.exceptions.Warning:
|
||||
raise
|
||||
except openerp.exceptions.DeferredException, e:
|
||||
_logger.error(tools.exception_to_unicode(e))
|
||||
_logger.exception(tools.exception_to_unicode(e))
|
||||
post_mortem(e.traceback)
|
||||
raise
|
||||
except Exception, e:
|
||||
_logger.error(tools.exception_to_unicode(e))
|
||||
_logger.exception(tools.exception_to_unicode(e))
|
||||
post_mortem(sys.exc_info())
|
||||
raise
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ Tests can be explicitely added to the `fast_suite` or `checks` lists or not.
|
||||
See the :ref:`test-framework` section in the :ref:`features` list.
|
||||
"""
|
||||
|
||||
from . import test_expression, test_ir_sequence, test_orm,\
|
||||
from . import test_expression, test_html_sanitize, test_ir_sequence, test_orm,\
|
||||
test_view_validation, test_uninstall
|
||||
|
||||
fast_suite = [
|
||||
@@ -17,6 +17,7 @@ fast_suite = [
|
||||
|
||||
checks = [
|
||||
test_expression,
|
||||
test_html_sanitize,
|
||||
test_orm,
|
||||
test_view_validation,
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@ import openerp.modules.registry
|
||||
import openerp
|
||||
|
||||
from openerp.tests import common
|
||||
from openerp.tools.misc import mute_logger
|
||||
|
||||
def ok(n):
|
||||
""" Successful import of ``n`` records
|
||||
@@ -221,6 +222,7 @@ class test_integer_field(ImporterCase):
|
||||
-1, -42, -(2**31 - 1), -(2**31), -12345678
|
||||
], values(self.read()))
|
||||
|
||||
@mute_logger('openerp.sql_db')
|
||||
def test_out_of_range(self):
|
||||
self.assertEqual(
|
||||
self.import_(['value'], [[str(2**31)]]),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import threading
|
||||
import time
|
||||
import unittest2
|
||||
import xmlrpclib
|
||||
@@ -11,6 +12,13 @@ ADDONS_PATH = openerp.tools.config['addons_path']
|
||||
PORT = openerp.tools.config['xmlrpc_port']
|
||||
DB = openerp.tools.config['db_name']
|
||||
|
||||
# If the database name is not provided on the command-line,
|
||||
# use the one on the thread (which means if it is provided on
|
||||
# the command-line, this will break when installing another
|
||||
# database from XML-RPC).
|
||||
if not DB and hasattr(threading.current_thread(), 'dbname'):
|
||||
DB = threading.current_thread().dbname
|
||||
|
||||
HOST = '127.0.0.1'
|
||||
|
||||
ADMIN_USER = 'admin'
|
||||
|
||||
@@ -22,6 +22,16 @@ def registry(model):
|
||||
def cursor():
|
||||
return openerp.modules.registry.RegistryManager.get(DB).db.cursor()
|
||||
|
||||
|
||||
def drop_sequence(code):
|
||||
cr = cursor()
|
||||
for model in ['ir.sequence', 'ir.sequence.type']:
|
||||
s = registry(model)
|
||||
ids = s.search(cr, ADMIN_USER_ID, [('code', '=', code)])
|
||||
s.unlink(cr, ADMIN_USER_ID, ids)
|
||||
cr.commit()
|
||||
cr.close()
|
||||
|
||||
class test_ir_sequence_standard(unittest2.TestCase):
|
||||
""" A few tests for a 'Standard' (i.e. PostgreSQL) sequence. """
|
||||
|
||||
@@ -48,7 +58,7 @@ class test_ir_sequence_standard(unittest2.TestCase):
|
||||
def test_ir_sequence_draw(self):
|
||||
""" Try to draw a number. """
|
||||
cr = cursor()
|
||||
n = registry('ir.sequence').get(cr, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
n = registry('ir.sequence').next_by_code(cr, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
assert n
|
||||
cr.commit()
|
||||
cr.close()
|
||||
@@ -57,15 +67,19 @@ class test_ir_sequence_standard(unittest2.TestCase):
|
||||
""" Try to draw a number from two transactions. """
|
||||
cr0 = cursor()
|
||||
cr1 = cursor()
|
||||
n0 = registry('ir.sequence').get(cr0, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
n0 = registry('ir.sequence').next_by_code(cr0, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
assert n0
|
||||
n1 = registry('ir.sequence').get(cr1, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
n1 = registry('ir.sequence').next_by_code(cr1, ADMIN_USER_ID, 'test_sequence_type', {})
|
||||
assert n1
|
||||
cr0.commit()
|
||||
cr1.commit()
|
||||
cr0.close()
|
||||
cr1.close()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
drop_sequence('test_sequence_type')
|
||||
|
||||
class test_ir_sequence_no_gap(unittest2.TestCase):
|
||||
""" Copy of the previous tests for a 'No gap' sequence. """
|
||||
|
||||
@@ -85,7 +99,7 @@ class test_ir_sequence_no_gap(unittest2.TestCase):
|
||||
def test_ir_sequence_draw_no_gap(self):
|
||||
""" Try to draw a number. """
|
||||
cr = cursor()
|
||||
n = registry('ir.sequence').get(cr, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
n = registry('ir.sequence').next_by_code(cr, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
assert n
|
||||
cr.commit()
|
||||
cr.close()
|
||||
@@ -99,12 +113,16 @@ class test_ir_sequence_no_gap(unittest2.TestCase):
|
||||
cr1._default_log_exceptions = False # Prevent logging a traceback
|
||||
msg_re = '^could not obtain lock on row in relation "ir_sequence"$'
|
||||
with self.assertRaisesRegexp(psycopg2.OperationalError, msg_re):
|
||||
n0 = registry('ir.sequence').get(cr0, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
n0 = registry('ir.sequence').next_by_code(cr0, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
assert n0
|
||||
n1 = registry('ir.sequence').get(cr1, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
n1 = registry('ir.sequence').next_by_code(cr1, ADMIN_USER_ID, 'test_sequence_type_2', {})
|
||||
cr0.close()
|
||||
cr1.close()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
drop_sequence('test_sequence_type_2')
|
||||
|
||||
class test_ir_sequence_change_implementation(unittest2.TestCase):
|
||||
""" Create sequence objects and change their ``implementation`` field. """
|
||||
|
||||
@@ -146,6 +164,11 @@ class test_ir_sequence_change_implementation(unittest2.TestCase):
|
||||
cr.commit()
|
||||
cr.close()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
drop_sequence('test_sequence_type_3')
|
||||
drop_sequence('test_sequence_type_4')
|
||||
|
||||
class test_ir_sequence_generate(unittest2.TestCase):
|
||||
""" Create sequence objects and generate some values. """
|
||||
|
||||
@@ -162,7 +185,7 @@ class test_ir_sequence_generate(unittest2.TestCase):
|
||||
cr.close()
|
||||
|
||||
cr = cursor()
|
||||
f = lambda *a: registry('ir.sequence').get(cr, ADMIN_USER_ID, 'test_sequence_type_5', {})
|
||||
f = lambda *a: registry('ir.sequence').next_by_code(cr, ADMIN_USER_ID, 'test_sequence_type_5', {})
|
||||
assert all(str(x) == f() for x in xrange(1,1000))
|
||||
cr.commit()
|
||||
cr.close()
|
||||
@@ -180,11 +203,15 @@ class test_ir_sequence_generate(unittest2.TestCase):
|
||||
cr.close()
|
||||
|
||||
cr = cursor()
|
||||
f = lambda *a: registry('ir.sequence').get(cr, ADMIN_USER_ID, 'test_sequence_type_6', {})
|
||||
f = lambda *a: registry('ir.sequence').next_by_code(cr, ADMIN_USER_ID, 'test_sequence_type_6', {})
|
||||
assert all(str(x) == f() for x in xrange(1,1000))
|
||||
cr.commit()
|
||||
cr.close()
|
||||
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
drop_sequence('test_sequence_type_5')
|
||||
drop_sequence('test_sequence_type_6')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
+20
-19
@@ -591,16 +591,22 @@ form: module.record_id""" % (xml_id,)
|
||||
|
||||
if rec.get('action'):
|
||||
a_action = rec.get('action','').encode('utf8')
|
||||
a_type = rec.get('type','').encode('utf8') or 'act_window'
|
||||
|
||||
# determine the type of action
|
||||
a_type, a_id = self.model_id_get(cr, a_action)
|
||||
a_type = a_type.split('.')[-1] # keep only type part
|
||||
|
||||
icons = {
|
||||
"act_window": 'STOCK_NEW',
|
||||
"report.xml": 'STOCK_PASTE',
|
||||
"wizard": 'STOCK_EXECUTE',
|
||||
"url": 'STOCK_JUMP_TO'
|
||||
"url": 'STOCK_JUMP_TO',
|
||||
"client": 'STOCK_EXECUTE',
|
||||
"server": 'STOCK_EXECUTE',
|
||||
}
|
||||
values['icon'] = icons.get(a_type,'STOCK_NEW')
|
||||
|
||||
if a_type=='act_window':
|
||||
a_id = self.id_get(cr, a_action)
|
||||
cr.execute('select view_type,view_mode,name,view_id,target from ir_act_window where id=%s', (int(a_id),))
|
||||
rrres = cr.fetchone()
|
||||
assert rrres, "No window action defined for this id %s !\n" \
|
||||
@@ -625,18 +631,18 @@ form: module.record_id""" % (xml_id,)
|
||||
values['icon'] = 'STOCK_EXECUTE'
|
||||
if not values.get('name', False):
|
||||
values['name'] = action_name
|
||||
elif a_type=='wizard':
|
||||
a_id = self.id_get(cr, a_action)
|
||||
cr.execute('select name from ir_act_wizard where id=%s', (int(a_id),))
|
||||
|
||||
elif a_type in ['wizard', 'url', 'client', 'server'] and not values.get('name'):
|
||||
a_table = 'ir_act_%s' % a_type
|
||||
cr.execute('select name from %s where id=%%s' % a_table, (int(a_id),))
|
||||
resw = cr.fetchone()
|
||||
if (not values.get('name', False)) and resw:
|
||||
values['name'] = resw[0]
|
||||
elif a_type=='url':
|
||||
a_id = self.id_get(cr, a_action)
|
||||
cr.execute('select name from ir_act_url where id=%s', (int(a_id),))
|
||||
resw = cr.fetchone()
|
||||
if (not values.get('name')) and resw:
|
||||
if resw:
|
||||
values['name'] = resw[0]
|
||||
|
||||
if not values.get('name'):
|
||||
# ensure menu has a name
|
||||
values['name'] = rec_id or '?'
|
||||
|
||||
if rec.get('sequence'):
|
||||
values['sequence'] = int(rec.get('sequence'))
|
||||
if rec.get('icon'):
|
||||
@@ -658,17 +664,12 @@ form: module.record_id""" % (xml_id,)
|
||||
groups_value.append((4, group_id))
|
||||
values['groups_id'] = groups_value
|
||||
|
||||
xml_id = rec.get('id','').encode('utf8')
|
||||
self._test_xml_id(xml_id)
|
||||
pid = self.pool.get('ir.model.data')._update(cr, self.uid, 'ir.ui.menu', self.module, values, xml_id, noupdate=self.isnoupdate(data_node), mode=self.mode, res_id=res and res[0] or False)
|
||||
pid = self.pool.get('ir.model.data')._update(cr, self.uid, 'ir.ui.menu', self.module, values, rec_id, noupdate=self.isnoupdate(data_node), mode=self.mode, res_id=res and res[0] or False)
|
||||
|
||||
if rec_id and pid:
|
||||
self.idref[rec_id] = int(pid)
|
||||
|
||||
if rec.get('action') and pid:
|
||||
a_action = rec.get('action').encode('utf8')
|
||||
a_type = rec.get('type','').encode('utf8') or 'act_window'
|
||||
a_id = self.id_get(cr, a_action)
|
||||
action = "ir.actions.%s,%d" % (a_type, a_id)
|
||||
self.pool.get('ir.model.data').ir_set(cr, self.uid, 'action', 'tree_but_open', 'Menuitem', [('ir.ui.menu', int(pid))], action, True, True, xml_id=rec_id)
|
||||
return ('ir.ui.menu', pid)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
from pyquery import PyQuery as pq
|
||||
import re
|
||||
|
||||
def html_sanitize(x):
|
||||
return x # It seems that our test suite doesn't care.
|
||||
if not x:
|
||||
return x
|
||||
root = pq("<div />")
|
||||
@@ -59,4 +59,4 @@ def append_to(new_ones, el):
|
||||
else:
|
||||
children[-1].tail = i
|
||||
else:
|
||||
el.append(i)
|
||||
el.append(i)
|
||||
|
||||
@@ -1140,4 +1140,37 @@ class UnquoteEvalContext(defaultdict):
|
||||
def __missing__(self, key):
|
||||
return unquote(key)
|
||||
|
||||
|
||||
class mute_logger(object):
|
||||
"""Temporary suppress the logging.
|
||||
Can be used as context manager or decorator.
|
||||
|
||||
@mute_logger('openerp.plic.ploc')
|
||||
def do_stuff():
|
||||
blahblah()
|
||||
|
||||
with mute_logger('openerp.foo.bar'):
|
||||
do_suff()
|
||||
|
||||
"""
|
||||
def __init__(self, *loggers):
|
||||
self.loggers = loggers
|
||||
|
||||
def filter(self, record):
|
||||
return 0
|
||||
|
||||
def __enter__(self):
|
||||
for logger in self.loggers:
|
||||
logging.getLogger(logger).addFilter(self)
|
||||
|
||||
def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
|
||||
for logger in self.loggers:
|
||||
logging.getLogger(logger).removeFilter(self)
|
||||
|
||||
def __call__(self, func):
|
||||
@wraps(func)
|
||||
def deco(*args, **kwargs):
|
||||
with self:
|
||||
return func(*args, **kwargs)
|
||||
return deco
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -100,7 +100,7 @@ class RecordDictWrapper(dict):
|
||||
return dict.__getitem__(self, key)
|
||||
|
||||
class YamlInterpreter(object):
|
||||
def __init__(self, cr, module, id_map, mode, filename, report=None, noupdate=False):
|
||||
def __init__(self, cr, module, id_map, mode, filename, report=None, noupdate=False, loglevel=logging.DEBUG):
|
||||
self.cr = cr
|
||||
self.module = module
|
||||
self.id_map = id_map
|
||||
@@ -110,6 +110,7 @@ class YamlInterpreter(object):
|
||||
report = assertion_report.assertion_report()
|
||||
self.assertion_report = report
|
||||
self.noupdate = noupdate
|
||||
self.loglevel = loglevel
|
||||
self.pool = pooler.get_pool(cr.dbname)
|
||||
self.uid = 1
|
||||
self.context = {} # opererp context
|
||||
@@ -119,6 +120,9 @@ class YamlInterpreter(object):
|
||||
'datetime': datetime,
|
||||
'timedelta': timedelta}
|
||||
|
||||
def _log(self, *args, **kwargs):
|
||||
_logger.log(self.loglevel, *args, **kwargs)
|
||||
|
||||
def _ref(self):
|
||||
return lambda xml_id: self.get_id(xml_id)
|
||||
|
||||
@@ -484,12 +488,10 @@ class YamlInterpreter(object):
|
||||
self.noupdate = node.noupdate
|
||||
|
||||
def process_python(self, node):
|
||||
def log(msg, *args):
|
||||
_logger.log(logging.TEST, msg, *args)
|
||||
python, statements = node.items()[0]
|
||||
model = self.get_model(python.model)
|
||||
statements = statements.replace("\r\n", "\n")
|
||||
code_context = {'model': model, 'cr': self.cr, 'uid': self.uid, 'log': log, 'context': self.context}
|
||||
code_context = {'model': model, 'cr': self.cr, 'uid': self.uid, 'log': self._log, 'context': self.context}
|
||||
code_context.update({'self': model}) # remove me when no !python block test uses 'self' anymore
|
||||
try:
|
||||
code_obj = compile(statements, self.filename, 'exec')
|
||||
@@ -720,7 +722,7 @@ class YamlInterpreter(object):
|
||||
if len(ids):
|
||||
self.pool.get(node.model).unlink(self.cr, self.uid, ids)
|
||||
else:
|
||||
_logger.log(logging.TEST, "Record not deleted.")
|
||||
self._log("Record not deleted.")
|
||||
|
||||
def process_url(self, node):
|
||||
self.validate_xml_id(node.id)
|
||||
@@ -805,7 +807,7 @@ class YamlInterpreter(object):
|
||||
|
||||
is_preceded_by_comment = False
|
||||
for node in yaml.load(yaml_string):
|
||||
is_preceded_by_comment = self._log(node, is_preceded_by_comment)
|
||||
is_preceded_by_comment = self._log_node(node, is_preceded_by_comment)
|
||||
try:
|
||||
self._process_node(node)
|
||||
except YamlImportException, e:
|
||||
@@ -852,26 +854,27 @@ class YamlInterpreter(object):
|
||||
else:
|
||||
raise YamlImportException("Can not process YAML block: %s" % node)
|
||||
|
||||
def _log(self, node, is_preceded_by_comment):
|
||||
def _log_node(self, node, is_preceded_by_comment):
|
||||
if is_comment(node):
|
||||
is_preceded_by_comment = True
|
||||
_logger.log(logging.TEST, node)
|
||||
self._log(node)
|
||||
elif not is_preceded_by_comment:
|
||||
if isinstance(node, types.DictionaryType):
|
||||
msg = "Creating %s\n with %s"
|
||||
args = node.items()[0]
|
||||
_logger.log(logging.TEST, msg, *args)
|
||||
self._log(msg, *args)
|
||||
else:
|
||||
_logger.log(logging.TEST, node)
|
||||
self._log(node)
|
||||
else:
|
||||
is_preceded_by_comment = False
|
||||
return is_preceded_by_comment
|
||||
|
||||
def yaml_import(cr, module, yamlfile, idref=None, mode='init', noupdate=False, report=None):
|
||||
def yaml_import(cr, module, yamlfile, kind, idref=None, mode='init', noupdate=False, report=None):
|
||||
if idref is None:
|
||||
idref = {}
|
||||
loglevel = logging.TEST if kind == 'test' else logging.DEBUG
|
||||
yaml_string = yamlfile.read()
|
||||
yaml_interpreter = YamlInterpreter(cr, module, idref, mode, filename=yamlfile.name, report=report, noupdate=noupdate)
|
||||
yaml_interpreter = YamlInterpreter(cr, module, idref, mode, filename=yamlfile.name, report=report, noupdate=noupdate, loglevel=loglevel)
|
||||
yaml_interpreter.process(yaml_string)
|
||||
|
||||
# keeps convention of convert.py
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user