Jigar Amin - OpenERP
2012-08-27 10:00:23 +05:30
101 changed files with 441 additions and 345 deletions
+1 -1
View File
@@ -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:
+7 -6
View File
@@ -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',
+4 -5
View File
@@ -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>
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -4533,7 +4533,7 @@ msgstr ""
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr ""
#. module: base
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -4711,7 +4711,7 @@ msgstr "html"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr "BTW"
#. module: base
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -4551,7 +4551,7 @@ msgstr "html"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr "ПДВ"
#. module: base
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
-1
View File
@@ -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"/>
+6 -2
View File
@@ -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)
+1 -4
View File
@@ -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>
+15 -3
View File
@@ -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'})
+3 -3
View File
@@ -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">
+1 -1
View File
@@ -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
View File
@@ -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>
+1 -1
View File
@@ -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
+4 -5
View File
@@ -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"/>
+29 -34
View File
@@ -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>
+2 -2
View File
@@ -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_'):
+3 -2
View File
@@ -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>
+4 -1
View File
@@ -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>
+49 -49
View File
@@ -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>
+5 -7
View File
@@ -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"
-1
View File
@@ -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 -3
View File
@@ -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
View File
@@ -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
+2 -1
View File
@@ -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)]]),
+8
View File
@@ -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'
+36 -9
View File
@@ -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
View File
@@ -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)
+2 -2
View File
@@ -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)
+33
View File
@@ -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:
+15 -12
View File
@@ -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