From d24eb97eb459b52da05c70395511015a0a3e1656 Mon Sep 17 00:00:00 2001 From: Sofia Date: Tue, 16 Dec 2008 12:37:46 +0530 Subject: [PATCH 01/29] * In reports, graphs on opportunities shows estimated revenues instead of number of cases bzr revid: sahibsofia@gmail.com-20081216070746-aduwdhfkkgfunp7p --- addons/crm_configuration/crm_report_view.xml | 9 ++++++--- addons/crm_configuration/report/crm_report.py | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/addons/crm_configuration/crm_report_view.xml b/addons/crm_configuration/crm_report_view.xml index fc4a95e1610..567bfcbfd4d 100644 --- a/addons/crm_configuration/crm_report_view.xml +++ b/addons/crm_configuration/crm_report_view.xml @@ -16,10 +16,10 @@ + - @@ -34,6 +34,7 @@ + @@ -47,7 +48,7 @@ - + @@ -82,6 +83,7 @@ + @@ -98,6 +100,7 @@ + @@ -111,7 +114,7 @@ - + diff --git a/addons/crm_configuration/report/crm_report.py b/addons/crm_configuration/report/crm_report.py index 7cd7f19b18d..775eb7ec5cc 100644 --- a/addons/crm_configuration/report/crm_report.py +++ b/addons/crm_configuration/report/crm_report.py @@ -38,6 +38,7 @@ class report_crm_case_section_categ2(osv.osv): 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), 'category2_id':fields.many2one('crm.case.category2', 'Type', readonly=True), 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), 'nbr': fields.integer('# of Cases', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), 'delay_close': fields.char('Delay Close', size=20, readonly=True), @@ -56,6 +57,7 @@ class report_crm_case_section_categ2(osv.osv): c.stage_id, c.section_id, count(*) as nbr, + sum(planned_revenue) as amount_revenue, to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close from crm_case c @@ -74,6 +76,7 @@ class report_crm_case_section_stage(osv.osv): 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), 'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True), 'stage_id':fields.many2one('crm.case.stage', 'Stage', readonly=True), + 'amount_revenue': fields.float('Est.Revenue', readonly=True), 'nbr': fields.integer('# of Cases', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), 'delay_close': fields.char('Delay Close', size=20, readonly=True), @@ -91,6 +94,7 @@ class report_crm_case_section_stage(osv.osv): c.stage_id, c.section_id, count(*) as nbr, + sum(planned_revenue) as amount_revenue, to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close from crm_case c From 71d69d7b4097b7883827feeab031bde5e3ac3672 Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 11:33:54 +0100 Subject: [PATCH 02/29] Wrong use of the escape char '\' bzr revid: olt@tinyerp.com-20081216103354-8fl5ionxbtk1e41s --- addons/account/i18n/es_AR.po | 10 +++++----- addons/stock/i18n/es_AR.po | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/account/i18n/es_AR.po b/addons/account/i18n/es_AR.po index 0a351b3ecff..bff7d7872ea 100644 --- a/addons/account/i18n/es_AR.po +++ b/addons/account/i18n/es_AR.po @@ -713,7 +713,7 @@ msgstr "" #. module: account #: field:account.analytic.account,child_ids:0 msgid "Childs Accounts" -msgstr "Cuentas \\"hijas\\"" +msgstr "Cuentas \"hijas\"" #. module: account #: model:ir.ui.menu,name:account.menu_analytic_accounting @@ -837,7 +837,7 @@ msgstr "" #. module: account #: field:account.tax,child_ids:0 msgid "Childs Tax Account" -msgstr "Cuentas \\"hijas\\"" +msgstr "Cuentas \"hijas\"" #. module: account #: rml:account.analytic.account.cost_ledger:0 @@ -1651,7 +1651,7 @@ msgstr "" #: field:account.tax,child_depend:0 #: field:account.tax.template,child_depend:0 msgid "Tax on Childs" -msgstr "Impuesto depende de Cuentas \\"hijas\\"" +msgstr "Impuesto depende de Cuentas \"hijas\"" #. module: account #: wizard_view:account.reconcile.unreconcile,init:0 @@ -2126,7 +2126,7 @@ msgstr "Cálculo" #. module: account #: field:account.analytic.account,parent_id:0 msgid "Parent analytic account" -msgstr "Cuenta de Costos \\"padre\\"" +msgstr "Cuenta de Costos \"padre\"" #. module: account #: view:account.analytic.line:0 @@ -3401,7 +3401,7 @@ msgstr "" #: field:account.tax,parent_id:0 #: field:account.tax.template,parent_id:0 msgid "Parent Tax Account" -msgstr "Cuenta \\"padre\\"" +msgstr "Cuenta \"padre\"" #. module: account #: model:ir.model,name:account.model_account_account_type diff --git a/addons/stock/i18n/es_AR.po b/addons/stock/i18n/es_AR.po index fc30342da3e..243fbeae81a 100644 --- a/addons/stock/i18n/es_AR.po +++ b/addons/stock/i18n/es_AR.po @@ -854,7 +854,7 @@ msgstr "" #. module: stock #: field:stock.location,location_id:0 msgid "Parent Location" -msgstr "Ubicación \\"padre\\"" +msgstr "Ubicación \"padre\"" #. module: stock #: field:stock.inventory,date:0 From 85091de9ab24a0e89c6752307ed9cd863fa0c3e2 Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 11:34:41 +0100 Subject: [PATCH 03/29] wrong header bzr revid: olt@tinyerp.com-20081216103441-98p30jsq16jxb55t --- addons/l10n_chart_uk_minimal/i18n/fr_FR.po | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/addons/l10n_chart_uk_minimal/i18n/fr_FR.po b/addons/l10n_chart_uk_minimal/i18n/fr_FR.po index cac6fb604cb..9274bf6623d 100644 --- a/addons/l10n_chart_uk_minimal/i18n/fr_FR.po +++ b/addons/l10n_chart_uk_minimal/i18n/fr_FR.po @@ -4,18 +4,16 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 4.3.0Report-Msgid-Bugs-To: " -"support@tinyerp.comPOT-Creation-Date: 2008-09-04 08:35:53+0000PO-Revision-" -"Date: 2008-09-04 08:35:53+0000Last-Translator: <>Language-Team: MIME-" -"Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-" -"Encoding: Plural-Forms:\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-09-05 16:31+0000\n" -"PO-Revision-Date: 2008-10-14 13:30+0000\n" -"Last-Translator: Olivier Laurent \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: OpenERP Server 5.0.0-rc1\n" +"Report-Msgid-Bugs-To: support@openerp.com\n" +"POT-Creation-Date: 2008-11-28 16:57:27+0000\n" +"PO-Revision-Date: 2008-11-28 16:57:27+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2008-11-21 14:06+0000\n" "X-Generator: Launchpad (build Unknown)\n" From 9d592044207d96538627235261ef3cb0bccf18aa Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 11:38:14 +0100 Subject: [PATCH 04/29] Removed default language team in header bzr revid: olt@tinyerp.com-20081216103814-qmxi23srmm3jzx57 --- addons/l10n_fr/i18n/fr_FR.po | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/addons/l10n_fr/i18n/fr_FR.po b/addons/l10n_fr/i18n/fr_FR.po index e7c74850825..74a1af4ca32 100644 --- a/addons/l10n_fr/i18n/fr_FR.po +++ b/addons/l10n_fr/i18n/fr_FR.po @@ -4,16 +4,12 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 4.3.0Report-Msgid-Bugs-To: " -"support@tinyerp.comPOT-Creation-Date: 2008-09-04 08:35:53+0000PO-Revision-" -"Date: 2008-09-04 08:35:53+0000Last-Translator: <>Language-Team: MIME-" -"Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-" -"Encoding: Plural-Forms:\n" -"Report-Msgid-Bugs-To: \n" +"Project-Id-Version: OpenERP Server 5.0.0-rc1\n" +"Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2008-09-05 13:45+0000\n" "PO-Revision-Date: 2008-10-14 13:30+0000\n" "Last-Translator: Olivier Laurent \n" -"Language-Team: LANGUAGE \n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" From b230a3841b595b56679ab5b03df9c7cd76fcdf13 Mon Sep 17 00:00:00 2001 From: hmo-tinyerp <> Date: Tue, 16 Dec 2008 16:14:28 +0530 Subject: [PATCH 05/29] modified document data file to insert value of ressource_id (0) instand of NULL bzr revid: hmo-tinyerp-20081216104428-hlvqzr46w64z4rvd --- addons/document/document_demo.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/addons/document/document_demo.xml b/addons/document/document_demo.xml index 11d1f0a991a..95910e6031b 100644 --- a/addons/document/document_demo.xml +++ b/addons/document/document_demo.xml @@ -5,12 +5,15 @@ Documents + 0 My Folder + 0 + @@ -18,6 +21,8 @@ ressource 1 + 0 + @@ -29,6 +34,8 @@ + 0 + @@ -36,36 +43,48 @@ ressource + 0 + Products + 0 + Sales Order + 0 + All Sales Order + 0 + Quotations + 0 + Projects + 0 + From b6c69c83a22483659703f95b61c4ba4e544fd735 Mon Sep 17 00:00:00 2001 From: Husen Daudi Date: Tue, 16 Dec 2008 17:13:15 +0530 Subject: [PATCH 06/29] Bugfix for encoding (ref:pso) lp bug: https://launchpad.net/bugs/308074 fixed bzr revid: hda@tinyerp.com-20081216114315-jhb4vfs15bt1jzik --- addons/base_module_publish/wizard/module_zip.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base_module_publish/wizard/module_zip.py b/addons/base_module_publish/wizard/module_zip.py index c582358df0a..c3d04ceb5c4 100644 --- a/addons/base_module_publish/wizard/module_zip.py +++ b/addons/base_module_publish/wizard/module_zip.py @@ -42,7 +42,7 @@ def _zippy(archive, fromurl, path, src=True): else: exclude = ['py','pyo','pyc'] if (path.split('.')[-1] not in exclude) or (os.path.basename(path)=='__terp__.py'): - archive.write(os.path.join(fromurl, path), path) + archive.write(os.path.join(fromurl, path).encode(), path.encode()) return True def createzip(cr, uid, moduleid, context, b64enc=True, src=True): @@ -60,7 +60,7 @@ def createzip(cr, uid, moduleid, context, b64enc=True, src=True): if os.path.isdir(os.path.join(ad, name)): archname = StringIO.StringIO('wb') archive = PyZipFile(archname, "w", ZIP_DEFLATED) - archive.writepy(os.path.join(ad, name)) + archive.writepy(os.path.join(ad, name).encode()) _zippy(archive, ad, name, src=src) archive.close() val =archname.getvalue() From 16b95805c4898c9ee2db059cd0f8c5d57ac141b2 Mon Sep 17 00:00:00 2001 From: qdp Date: Tue, 16 Dec 2008 12:57:06 +0100 Subject: [PATCH 07/29] *improvement of base_module_quality bzr revid: qdp@tinyerp.com-20081216115706-q3d68614dl17or0z --- .../base_module_quality.py | 26 +++++ .../pylint_test/__init__.py | 26 +++++ .../pylint_test/pylint_test.py | 100 ++++++++++++++++++ .../wizard/module_quality_check.py | 64 ++++++++--- .../wizard/pylint_test/pylint_test.py | 76 +++++++++---- 5 files changed, 256 insertions(+), 36 deletions(-) create mode 100644 addons/base_module_quality/pylint_test/__init__.py create mode 100644 addons/base_module_quality/pylint_test/pylint_test.py diff --git a/addons/base_module_quality/base_module_quality.py b/addons/base_module_quality/base_module_quality.py index ab46c3b44be..2a49f301b87 100644 --- a/addons/base_module_quality/base_module_quality.py +++ b/addons/base_module_quality/base_module_quality.py @@ -23,5 +23,31 @@ import netsvc from osv import fields, osv +class quality_check(object): + ''' + This Class provide... + ''' + + _score = 0.0 + _result = "" + _result_details = "" + + def __init__(self, module_path=""): + ''' + this method should do the test and fill the _score, _result and _result_details var + ''' + raise 'Not Implemented' + + #~ def __get_result__(self, cr, uid, module_ids): + #~ ''' + #~ ''' + #~ return _result + + #~ def __get_detailed_result__(self, cr, uid, module_ids): + #~ ''' + #~ ''' + #~ return _result_details + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_module_quality/pylint_test/__init__.py b/addons/base_module_quality/pylint_test/__init__.py new file mode 100644 index 00000000000..00dce4b7e0b --- /dev/null +++ b/addons/base_module_quality/pylint_test/__init__.py @@ -0,0 +1,26 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +import pylint_test + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/base_module_quality/pylint_test/pylint_test.py b/addons/base_module_quality/pylint_test/pylint_test.py new file mode 100644 index 00000000000..1402c211923 --- /dev/null +++ b/addons/base_module_quality/pylint_test/pylint_test.py @@ -0,0 +1,100 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +import netsvc +from osv import fields, osv +import os + +#~ class _test_pylint(quality_check): + + #~ def __init__(self, url, add_folder=None): + #~ print "dans le test" + #~ list_files = os.listdir(url) + #~ new_list = [] + #~ subfolder = {} + #~ for i in list_files: + #~ if os.path.isdir(i): + #~ path = os.path.join(url, i) + #~ new_list.append(os.listdir(path)) + #~ res = _test_pylint(self, path, add_folder=i) + #~ subfolder.update(res) + #~ dict_files = {} + #~ for file in list_files: + #~ if file.split('.')[-1] == 'py' and not file.startswith('__init__'): + #~ file_path = os.path.join(url, file) + #~ res = os.popen('pylint '+file_path+' | tail -4').read() + #~ if res.startswith('Global'): + #~ if add_folder: + #~ dict_files[add_folder + '/' + file] = res + #~ else: + #~ dict_files[file] = res + #~ dict_files.update(subfolder) + #~ print "dict_files", dict_files + #~ return dict_files + +class _test_pylint(base_module_quality.quality_check): + + def __init__(self, module_path): + + self._result = """ +Pylint Test: +------------ + + This test checks if the module satisfy the current coding standard used by OpenERP. + + +""" + list_files = os.listdir(module_path) + new_list = [] + subfolder = {} + for i in list_files: + path = os.path.join(module_path, i) + if os.path.isdir(path): + for j in os.listdir(path): + list_files.append(os.path.join(i, j)) + + dict_files = {} + n =0 + score = 0.0 + print list_files + for file in list_files: + if file.split('.')[-1] == 'py' and not file.endswith('__init__.py') and not file.endswith('__terp__.py'): +#--rcfile= Specify a configuration file. + file_path = os.path.join(module_path, file) + res = os.popen('pylint --persistent=n '+file_path).read() + n += 1 + leftchar = -1 + while res[leftchar:leftchar+1] != ' ' and leftchar-1 <= 0: + leftchar -=1 + rightchar = -10 + while res[rightchar:rightchar+1] != '/' and rightchar+1 <= 0: + rightchar +=1 + + score += float(res[leftchar+1:rightchar]) + self._result_details += res + self._result += file+": "+ res[leftchar+1:rightchar]+"/10\n" + self._score = score / n + return None + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/base_module_quality/wizard/module_quality_check.py b/addons/base_module_quality/wizard/module_quality_check.py index de3f333338a..41d7aed7e1c 100644 --- a/addons/base_module_quality/wizard/module_quality_check.py +++ b/addons/base_module_quality/wizard/module_quality_check.py @@ -28,6 +28,7 @@ import sys import tools import os import pylint +import base_module_quality form_check = '''
@@ -41,30 +42,65 @@ fields_check = { 'default': lambda *args: 'pylint' }, } + view_form = """ - + + + + + """ +#TODO: utiliser les nouveaux wizards pour heriter la vue et rajouter un onglet par test? +#TODO: remove the first screen which is unused view_field = { - "module_info": {'type': 'text', 'string': 'check quality', 'readonly':True}, + "general_info": {'type': 'text', 'string': 'General Info', 'readonly':True}, } + + + class wiz_quality_check(wizard.interface): - def _check(self, cr, uid, data, context): - if data['form']['test'] == 'pylint': - pool=pooler.get_pool(cr.dbname) - module_data = pool.get('ir.module.module').browse(cr, uid, data['ids']) - from pylint_test import pylint_test - ad = tools.config['addons_path'] - url = os.path.join(ad, module_data[0].name) - result = pylint_test._test_pylint(self, url) - string_ret = '' - for i in result: - string_ret = string_ret + i + ':\n' + result[i] - return {'module_info':string_ret} + def _check(self, cr, uid, data, context): + string_ret = "" + from tools import config + list_folders=os.listdir(config['addons_path']+'/base_module_quality/') + for item in list_folders: + path = config['addons_path']+'/base_module_quality/wizard/'+item + if os.path.exists(path+'/'+item+'.py') and item not in ['report','wizard', 'security']: + pool=pooler.get_pool(cr.dbname) + module_data = pool.get('ir.module.module').browse(cr, uid, data['ids']) + + ad = tools.config['addons_path'] + module_path = os.path.join(ad, module_data[0].name) + #import pylint_test + x = __import__(item) + val = x.__init__(module_path) + string_ret += val._result + + return {'general_info':string_ret} + + + #mra version + #~ result = pylint_test._test_pylint(self, url) + #~ string_ret = '' + #~ for i in result: + #~ string_ret = string_ret + i + ':\n' + result[i] + #~ string_ret = "" + #~ if data['form']['test'] == 'pylint': + #~ pool=pooler.get_pool(cr.dbname) + #~ module_data = pool.get('ir.module.module').browse(cr, uid, data['ids']) + #~ from pylint_test import pylint_test + #~ ad = tools.config['addons_path'] + #~ url = os.path.join(ad, module_data[0].name) + #~ result = pylint_test._test_pylint(self, url) + #~ string_ret = '' + #~ for i in result: + #~ string_ret = string_ret + i + ':\n' + result[i] + states = { 'init': { 'actions': [], diff --git a/addons/base_module_quality/wizard/pylint_test/pylint_test.py b/addons/base_module_quality/wizard/pylint_test/pylint_test.py index a640e37e96c..6e80e136865 100644 --- a/addons/base_module_quality/wizard/pylint_test/pylint_test.py +++ b/addons/base_module_quality/wizard/pylint_test/pylint_test.py @@ -24,28 +24,60 @@ import netsvc from osv import fields, osv import os -def _test_pylint(self, url, add_folder=None): - list_files = os.listdir(url) - new_list = [] - subfolder = {} - for i in list_files: - if os.path.isdir(i): - path = os.path.join(url, i) - new_list.append(os.listdir(path)) - res = _test_pylint(self, path, add_folder=i) - subfolder.update(res) - dict_files = {} - for file in list_files: - if file.split('.')[-1] == 'py' and not file.startswith('__init__'): - file_path = os.path.join(url, file) - res = os.popen('pylint '+file_path+' | tail -4').read() - if res.startswith('Global'): - if add_folder: - dict_files[add_folder + '/' + file] = res - else: - dict_files[file] = res - dict_files.update(subfolder) - return dict_files + + +class _test_pylint(quality_check): + + def __init__(self, url, add_folder=None): + print "dans le test" + list_files = os.listdir(url) + new_list = [] + subfolder = {} + for i in list_files: + if os.path.isdir(i): + path = os.path.join(url, i) + new_list.append(os.listdir(path)) + res = _test_pylint(self, path, add_folder=i) + subfolder.update(res) + dict_files = {} + for file in list_files: + if file.split('.')[-1] == 'py' and not file.startswith('__init__'): + file_path = os.path.join(url, file) + res = os.popen('pylint '+file_path+' | tail -4').read() + if res.startswith('Global'): + if add_folder: + dict_files[add_folder + '/' + file] = res + else: + dict_files[file] = res + dict_files.update(subfolder) + print "dict_files", dict_files + return dict_files + +_test_pylint() + + +#~ def _test_pylint(self, url, add_folder=None): + #~ list_files = os.listdir(url) + #~ new_list = [] + #~ subfolder = {} + #~ for i in list_files: + #~ if os.path.isdir(i): + #~ path = os.path.join(url, i) + #~ new_list.append(os.listdir(path)) + #~ res = _test_pylint(self, path, add_folder=i) + #~ subfolder.update(res) + #~ dict_files = {} + #~ for file in list_files: + #~ if file.split('.')[-1] == 'py' and not file.startswith('__init__'): + #~ file_path = os.path.join(url, file) + #~ res = os.popen('pylint '+file_path+' | tail -4').read() + #~ if res.startswith('Global'): + #~ if add_folder: + #~ dict_files[add_folder + '/' + file] = res + #~ else: + #~ dict_files[file] = res + #~ dict_files.update(subfolder) + #~ return dict_files # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 4566b4174e02e4a980f23f95cf074b354aa6299f Mon Sep 17 00:00:00 2001 From: hmo-tinyerp <> Date: Tue, 16 Dec 2008 18:05:15 +0530 Subject: [PATCH 08/29] fixed bug : unicode problem on display path bzr revid: hmo-tinyerp-20081216123515-qh0zve76cto3mqsy --- addons/document/document.py | 6 +++++- addons/document/ftpserver/abstracted_fs.py | 7 +++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/document/document.py b/addons/document/document.py index afb466c983a..eb5affaa853 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -37,6 +37,7 @@ import random import string from psycopg2 import Binary from tools import config +import tools def random_name(): random.seed() @@ -497,6 +498,9 @@ class document_file(osv.osv): result[id]='' else: result[id] = '' + if context.get('bin_size', False): + result[id] = tools.human_size(len(result[id])) + return result # @@ -539,7 +543,7 @@ class document_file(osv.osv): 'create_date': fields.datetime('Date Created', readonly=True), 'create_uid': fields.many2one('res.users', 'Creator', readonly=True), 'store_method': fields.selection([('db','Database'),('fs','Filesystem'),('link','Link')], "Storing Method"), - 'datas': fields.function(_data_get,method=True,store=True,fnct_inv=_data_set,string='File Content',type="binary"), + 'datas': fields.function(_data_get,method=True,fnct_inv=_data_set,string='File Content',type="binary"), 'store_fname': fields.char('Stored Filename', size=200), 'res_model': fields.char('Attached Model', size=64), #res_model 'res_id': fields.integer('Attached ID'), #res_id diff --git a/addons/document/ftpserver/abstracted_fs.py b/addons/document/ftpserver/abstracted_fs.py index c83fbb61d05..69aecb284c4 100644 --- a/addons/document/ftpserver/abstracted_fs.py +++ b/addons/document/ftpserver/abstracted_fs.py @@ -74,7 +74,7 @@ class abstracted_fs: # Ok def db_list(self): - return pooler.pool_dic.keys() + #return pooler.pool_dic.keys() s = netsvc.LocalService('db') result = s.list() self.db_name_list = [] @@ -95,8 +95,7 @@ class abstracted_fs: if cr is not None: cr.close() #if db is not None: - # pooler.close_db(db_name) - print 'Return', self.db_name_list + # pooler.close_db(db_name) return self.db_name_list # Ok @@ -689,7 +688,7 @@ class abstracted_fs: # formatting is matched with proftpd ls output yield "%s %3s %-8s %-8s %8s %s %s\r\n" %(perms, nlinks, uname, gname, - size, mtime, file.path.split('/')[-1]) + size, mtime, file.path.encode('ascii','replace').split('/')[-1]) # Ok def format_mlsx(self, basedir, listing, perms, facts, ignore_err=True): From bca0425af5c4bc565610766f427a8515e5a7102f Mon Sep 17 00:00:00 2001 From: Jay Vora Date: Tue, 16 Dec 2008 18:12:06 +0530 Subject: [PATCH 09/29] Base_Module_quality : misc changes bzr revid: jvo@tinyerp.com-20081216124206-2dqq01vdvawmlkge --- addons/base_module_quality/pylint_test/pylint_test.py | 2 +- addons/base_module_quality/wizard/module_quality_check.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/base_module_quality/pylint_test/pylint_test.py b/addons/base_module_quality/pylint_test/pylint_test.py index 1402c211923..c31a5c6599d 100644 --- a/addons/base_module_quality/pylint_test/pylint_test.py +++ b/addons/base_module_quality/pylint_test/pylint_test.py @@ -23,6 +23,7 @@ import netsvc from osv import fields, osv import os +from base_module_quality import base_module_quality #~ class _test_pylint(quality_check): @@ -54,7 +55,6 @@ import os class _test_pylint(base_module_quality.quality_check): def __init__(self, module_path): - self._result = """ Pylint Test: ------------ diff --git a/addons/base_module_quality/wizard/module_quality_check.py b/addons/base_module_quality/wizard/module_quality_check.py index 41d7aed7e1c..0e606a70f8e 100644 --- a/addons/base_module_quality/wizard/module_quality_check.py +++ b/addons/base_module_quality/wizard/module_quality_check.py @@ -77,8 +77,10 @@ class wiz_quality_check(wizard.interface): ad = tools.config['addons_path'] module_path = os.path.join(ad, module_data[0].name) #import pylint_test + item='base_module_quality.'+item x = __import__(item) - val = x.__init__(module_path) + val = x.__init__(str(module_path)) + print "VALL",x._result string_ret += val._result return {'general_info':string_ret} From 0cf74c1d331badd05add9688a357a572a6875938 Mon Sep 17 00:00:00 2001 From: hmo-tinyerp <> Date: Tue, 16 Dec 2008 18:35:11 +0530 Subject: [PATCH 10/29] fixed bug bzr revid: hmo-tinyerp-20081216130511-v61y9na8fw87tth4 --- addons/document/document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/document/document.py b/addons/document/document.py index eb5affaa853..ccd5c7afaf5 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -543,7 +543,7 @@ class document_file(osv.osv): 'create_date': fields.datetime('Date Created', readonly=True), 'create_uid': fields.many2one('res.users', 'Creator', readonly=True), 'store_method': fields.selection([('db','Database'),('fs','Filesystem'),('link','Link')], "Storing Method"), - 'datas': fields.function(_data_get,method=True,fnct_inv=_data_set,string='File Content',type="binary"), + 'datas': fields.function(_data_get,method=True,store=True,fnct_inv=_data_set,string='File Content',type="binary"), 'store_fname': fields.char('Stored Filename', size=200), 'res_model': fields.char('Attached Model', size=64), #res_model 'res_id': fields.integer('Attached ID'), #res_id From 41d44e6227adf913b73815574943e4de5099c210 Mon Sep 17 00:00:00 2001 From: hmo-tinyerp <> Date: Tue, 16 Dec 2008 19:12:14 +0530 Subject: [PATCH 11/29] fixed bug on rename directory name bzr revid: hmo-tinyerp-20081216134214-f6gez200817tqvdn --- addons/document/document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/document/document.py b/addons/document/document.py index ccd5c7afaf5..92b49a1b520 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -364,7 +364,7 @@ class document_directory(osv.osv): if not ressource_parent_type_id: ressource_parent_type_id=directory.ressource_parent_type_id and directory.ressource_parent_type_id.id or False if not ressource_id: - ressource_id=directory.ressource_id and directory.ressource_id.id or 0 + ressource_id=directory.ressource_id and directory.ressource_id or 0 res=self.search(cr,uid,[('id','<>',directory.id),('name','=',name),('parent_id','=',parent_id),('ressource_parent_type_id','=',ressource_parent_type_id),('ressource_id','=',ressource_id)]) if len(res): return False From 9b4ec5b9f9f42c0831a8a938030894f2f13b327e Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 14:56:07 +0100 Subject: [PATCH 12/29] Merged the Launchpad translations with the Bazaar po files bzr revid: olt@tinyerp.com-20081216135607-u803qnxy74p0xjny --- bin/addons/base/i18n/fr_FR.po | 402 +++++++++++++++++++++------------- 1 file changed, 253 insertions(+), 149 deletions(-) diff --git a/bin/addons/base/i18n/fr_FR.po b/bin/addons/base/i18n/fr_FR.po index 16e0647c81c..359b449c8c4 100644 --- a/bin/addons/base/i18n/fr_FR.po +++ b/bin/addons/base/i18n/fr_FR.po @@ -6,21 +6,22 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 5.0.0-rc1\n" "Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2008-11-28 16:57:27+0000\n" -"PO-Revision-Date: 2008-11-28 16:57:27+0000\n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2008-11-28 17:09+0000\n" +"PO-Revision-Date: 2008-12-10 13:58+0000\n" +"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2008-12-16 11:00+0000\n" +"X-Generator: Launchpad (build Unknown)\n" #. module: base #: model:ir.actions.act_window,name:base.ir_cron_act #: model:ir.ui.menu,name:base.menu_ir_cron_act #: view:ir.cron:0 msgid "Scheduled Actions" -msgstr "" +msgstr "Actions Planifiées" #. module: base #: field:ir.actions.report.xml,report_name:0 @@ -44,8 +45,12 @@ msgstr "Inconnu" #. module: base #: view:wizard.module.update_translations:0 -msgid "This wizard will detect new terms in the application so that you can update them manually." +msgid "" +"This wizard will detect new terms in the application so that you can update " +"them manually." msgstr "" +"Cet assistant détectera les nouveaux termes dans l'application, ainsi, " +"vous pourrez les mettre à jour manuellement." #. module: base #: field:workflow.activity,out_transitions:0 @@ -66,7 +71,7 @@ msgstr "Changer mes préférences" #. module: base #: view:ir.actions.act_window:0 msgid "Open Window" -msgstr "" +msgstr "Ouvrir la fenêtre" #. module: base #: field:res.partner.function,name:0 @@ -116,7 +121,7 @@ msgstr "Règles d'accès" #: field:ir.ui.view,arch:0 #: field:ir.ui.view.custom,arch:0 msgid "View Architecture" -msgstr "" +msgstr "Architecture de la Vue" #. module: base #: selection:ir.ui.menu,icon:0 @@ -126,11 +131,11 @@ msgstr "STOCK_MEDIA_FORWARD" #. module: base #: selection:ir.actions.todo,state:0 msgid "Skipped" -msgstr "" +msgstr "Ignoré" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not create this kind of document! (%s)" msgstr "Vous ne pouvez pas créer ce type de document! (%s)" @@ -193,7 +198,7 @@ msgstr "ir.default" #. module: base #: selection:ir.actions.todo,state:0 msgid "Not Started" -msgstr "" +msgstr "Non démarré" #. module: base #: view:ir.sequence:0 @@ -310,8 +315,8 @@ msgid "Suffix" msgstr "Suffixe" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The unlink method is not implemented on this object !" msgstr "La méthode de suppression n'est pas implémenté sur cette objet !" @@ -412,7 +417,7 @@ msgstr "Contact du prospet" #. module: base #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" -msgstr "XML non valide pour l'architecture de la vue" +msgstr "XML non valide pour l'architecture de la vue!" #. module: base #: field:ir.report.custom,sortby:0 @@ -502,14 +507,17 @@ msgid "Form" msgstr "Formulaire" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Can not define a column %s. Reserved keyword !" msgstr "Impossible de définir la colonne %s. Mot clé réservé !" #. module: base #: help:ir.ui.menu,groups_id:0 -msgid "If you put groups, the visibility of this menu will be based on these groups. If this field is empty, Open ERP will compute visibility based on the related object's read access." +msgid "" +"If you put groups, the visibility of this menu will be based on these " +"groups. If this field is empty, Open ERP will compute visibility based on " +"the related object's read access." msgstr "" #. module: base @@ -533,8 +541,8 @@ msgid "STOCK_QUIT" msgstr "STOCK_QUIT" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The name_search method is not implemented on this object !" msgstr "La méthode 'name_search' n'est pas implémentée dans cet objet !" @@ -559,8 +567,8 @@ msgid "Web:" msgstr "Web:" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_export_lang.py:0 +#, python-format msgid "new" msgstr "nouveau" @@ -625,10 +633,14 @@ msgid "Contact Name" msgstr "Nom du Contact" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_export_lang.py:0 -msgid "Save this document to a %s file and edit it with a specific software or a text editor. The file encoding is UTF-8." -msgstr "Sauvegardez ce document dans un fichier %s et éditez le avec un logiciel spécifique ou un éditeur de texte. L'encodage du fichier est UTF-8." +#, python-format +msgid "" +"Save this document to a %s file and edit it with a specific software or a " +"text editor. The file encoding is UTF-8." +msgstr "" +"Sauvegardez ce document dans un fichier %s et éditez le avec un logiciel " +"spécifique ou un éditeur de texte. L'encodage du fichier est UTF-8." #. module: base #: view:ir.module.module:0 @@ -641,8 +653,8 @@ msgid "Repositories" msgstr "Dépôts" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "Password mismatch !" msgstr "Le mot de passe ne correspond pas !" @@ -653,8 +665,8 @@ msgid "Contact" msgstr "Contact" #. module: base -#, python-format #: code:addons/base/module/module.py:0 +#, python-format msgid "This url '%s' must provide an html file with links to zip modules" msgstr "" @@ -677,8 +689,8 @@ msgid "ir.ui.menu" msgstr "ir.ui.menu" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "ConcurrencyException" msgstr "" @@ -717,7 +729,9 @@ msgstr "En-tête de rapport" #. module: base #: view:ir.rule:0 msgid "If you don't force the domain, it will use the simple domain setup" -msgstr "Si vous ne forcez pas le domaine, il utilisera la configuration du domaine simplifiée." +msgstr "" +"Si vous ne forcez pas le domaine, il utilisera la configuration du domaine " +"simplifiée." #. module: base #: model:res.partner.title,name:base.res_partner_title_pvt_ltd @@ -821,7 +835,8 @@ msgstr "Desinstaller les modules" #. module: base #: help:res.partner.category,active:0 -msgid "The active field allows you to hide the category, without removing it." +msgid "" +"The active field allows you to hide the category, without removing it." msgstr "Le champ Actif permet de cacher la catégorie, sans l'effacer" #. module: base @@ -841,10 +856,16 @@ msgid "Select Action Type" msgstr "" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_export_lang.py:0 -msgid "Save this document to a .CSV file and open it with your favourite spreadsheet software. The file encoding is UTF-8. You have to translate the latest column before reimporting it." -msgstr "Sauvegarder ce document dans un fichier CSV et ouvrez le dans votre tableur favori. Le fichier est encodé en UTF-8. Vous devez traduire la dernière colonne avant de la réimporter." +#, python-format +msgid "" +"Save this document to a .CSV file and open it with your favourite " +"spreadsheet software. The file encoding is UTF-8. You have to translate the " +"latest column before reimporting it." +msgstr "" +"Sauvegarder ce document dans un fichier CSV et ouvrez le dans votre tableur " +"favori. Le fichier est encodé en UTF-8. Vous devez traduire la dernière " +"colonne avant de la réimporter." #. module: base #: model:ir.actions.act_window,name:base.action_currency_form @@ -860,8 +881,13 @@ msgstr "" #. module: base #: help:res.partner,lang:0 -msgid "If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english." -msgstr "Si la langue chargée dans le système est l'anglais, tous les documents liés à ce partenaire seront imprimés dans cette langue. Sinon, ils seront imprimé en anglais." +msgid "" +"If the selected language is loaded in the system, all documents related to " +"this partner will be printed in this language. If not, it will be english." +msgstr "" +"Si la langue chargée dans le système est l'anglais, tous les documents liés " +"à ce partenaire seront imprimés dans cette langue. Sinon, ils seront imprimé " +"en anglais." #. module: base #: selection:ir.ui.menu,icon:0 @@ -894,10 +920,15 @@ msgid "Test" msgstr "Test" #. module: base -#, python-format #: code:addons/base/res/res_user.py:0 -msgid "You can not remove the admin user as it is used internally for resources created by OpenERP (updates, module installation, ...)" -msgstr "Vous ne pouvez pas supprimer l'utilisateur 'admin' car il est utilisé en interne pour les ressources créées par OpenERP (mises à jour, installation de module, ...)" +#, python-format +msgid "" +"You can not remove the admin user as it is used internally for resources " +"created by OpenERP (updates, module installation, ...)" +msgstr "" +"Vous ne pouvez pas supprimer l'utilisateur 'admin' car il est utilisé en " +"interne pour les ressources créées par OpenERP (mises à jour, installation " +"de module, ...)" #. module: base #: wizard_view:module.module.update,update:0 @@ -977,8 +1008,8 @@ msgid "Bank type" msgstr "" #. module: base -#, python-format #: code:osv/fields.py:0 +#, python-format msgid "undefined get method !" msgstr "" @@ -988,8 +1019,8 @@ msgid "Header/Footer" msgstr "En-tête/Pied de page" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The read method is not implemented on this object !" msgstr "La méthode 'read' n'est pas implémentée dans cet objet !" @@ -1018,7 +1049,7 @@ msgstr "Évènements Partenaire" #. module: base #: field:ir.actions.todo,note:0 msgid "Text" -msgstr "" +msgstr "Texte" #. module: base #: selection:ir.ui.menu,icon:0 @@ -1065,7 +1096,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_partner_addess_tree #: view:res.partner:0 msgid "Partner contacts" -msgstr "Contactes partenaires" +msgstr "Contacts partenaires" #. module: base #: field:workflow.transition,trigger_model:0 @@ -1074,9 +1105,11 @@ msgstr "" #. module: base #: help:res.country,code:0 -msgid "The ISO country code in two chars.\n" +msgid "" +"The ISO country code in two chars.\n" "You can use this field for quick search." -msgstr "Le code ISO du pays en deux caractères.\n" +msgstr "" +"Le code ISO du pays en deux caractères.\n" "Vous pouvez utiliser ce champ pour effectuer une recherche rapide." #. module: base @@ -1136,8 +1169,8 @@ msgid "Parent Menu" msgstr "Menu Parent" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "Custom fields must have a name that starts with 'x_' !" msgstr "Les champs personalisés doivent avoir un nom qui commence par 'x_' !" @@ -1294,10 +1327,14 @@ msgid "Model" msgstr "Modèle" #. module: base -#, python-format #: code:addons/base/module/module.py:0 -msgid "You try to install a module that depends on the module: %s.\nBut this module is not available in your system." +#, python-format +msgid "" +"You try to install a module that depends on the module: %s.\n" +"But this module is not available in your system." msgstr "" +"Vous essayez d'installer un module qui dépend du module: %s\n" +"Mais ce module n'est pas disponible sur votre système." #. module: base #: wizard_field:res.partner.spam_send,init,text:0 @@ -1382,8 +1419,8 @@ msgid "Sequences" msgstr "Séquences" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Unknown position in inherited view %s !" msgstr "" @@ -1408,8 +1445,8 @@ msgid "Bank account" msgstr "Compte banquaire" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Warning: using a relation field which uses an unknown object" msgstr "Avertissement: un champ relation utilise un objet inconnu" @@ -1463,9 +1500,11 @@ msgid "Supplier" msgstr "Fournisseur" #. module: base -#, python-format #: code:report/custom.py:0 -msgid "The sum of the data (2nd field) is null.\nWe can't draw a pie chart !" +#, python-format +msgid "" +"The sum of the data (2nd field) is null.\n" +"We can't draw a pie chart !" msgstr "" #. module: base @@ -1475,7 +1514,9 @@ msgstr "Traduire" #. module: base #: view:ir.actions.server:0 -msgid "Access all the fields related to the current object using expression in double brackets, i.e. [[ object.partner_id.name ]]" +msgid "" +"Access all the fields related to the current object using expression in " +"double brackets, i.e. [[ object.partner_id.name ]]" msgstr "" #. module: base @@ -1519,10 +1560,11 @@ msgid "STOCK_SELECT_FONT" msgstr "" #. module: base -#, python-format #: code:addons/base/module/module.py:0 +#, python-format msgid "You try to remove a module that is installed or will be installed" -msgstr "Vous essayez d'enlever un module qui est installé ou qui va être installé" +msgstr "" +"Vous essayez d'enlever un module qui est installé ou qui va être installé" #. module: base #: rml:ir.module.reference:0 @@ -1557,10 +1599,14 @@ msgid "STOCK_GOTO_FIRST" msgstr "" #. module: base -#, python-format #: code:addons/base/module/module.py:0 -msgid "Can not create the module file:\n %s" +#, python-format +msgid "" +"Can not create the module file:\n" +" %s" msgstr "" +"Impossible de créer le fichier du module:\n" +" %s" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_form @@ -1647,9 +1693,11 @@ msgstr "" #. module: base #: help:ir.cron,priority:0 -msgid "0=Very Urgent\n" +msgid "" +"0=Very Urgent\n" "10=Not urgent" -msgstr "0=Très Urgent\n" +msgstr "" +"0=Très Urgent\n" "10=Pas Urgent" #. module: base @@ -1670,7 +1718,8 @@ msgstr "Droits d'accès" #. module: base #: help:ir.actions.report.xml,report_rml:0 -msgid "The .rml path of the file or NULL if the content is in report_rml_content" +msgid "" +"The .rml path of the file or NULL if the content is in report_rml_content" msgstr "" #. module: base @@ -1700,8 +1749,8 @@ msgid "Partner Address" msgstr "Adresse du Partenaire" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not remove the model '%s' !" msgstr "Vous ne pouvez pas enlever le modèle '%s' !" @@ -1722,8 +1771,8 @@ msgid "Subject" msgstr "Objet" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The write method is not implemented on this object !" msgstr "La méthode 'write' n'est pas implémentée dans cet objet !" @@ -1878,14 +1927,14 @@ msgid "STOCK_OK" msgstr "" #. module: base -#, python-format #: code:report/report_sxw.py:0 +#, python-format msgid "print" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "Password empty !" msgstr "Mot de passe vide !" @@ -1906,8 +1955,8 @@ msgid "None" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not write in this document! (%s)" msgstr "Vous ne pouvez pas écrire dans ce document ! (%s)" @@ -1934,7 +1983,9 @@ msgstr "Opérande" #. module: base #: help:res.partner,supplier:0 -msgid "Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order." +msgid "" +"Check this box if the partner is a supplier. If it's not checked, purchase " +"people will not see it when encoding a purchase order." msgstr "" #. module: base @@ -1995,8 +2046,8 @@ msgid "Low" msgstr "Faible" #. module: base -#, python-format #: code:addons/base/module/module.py:0 +#, python-format msgid "Recursion error in modules dependencies !" msgstr "Erreur de Récursion dans les dépendances des modules !" @@ -2053,7 +2104,7 @@ msgstr "Nom du canal" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Continue" -msgstr "" +msgstr "Continuer" #. module: base #: selection:res.config.view,view:0 @@ -2079,7 +2130,7 @@ msgstr "" #. module: base #: field:ir.attachment,create_date:0 msgid "Date Created" -msgstr "Date de Création" +msgstr "" #. module: base #: selection:ir.rule,operator:0 @@ -2108,8 +2159,12 @@ msgstr "Obtenir le Fichier" #. module: base #: wizard_view:module.module.update,init:0 -msgid "This function will check for new modules in the 'addons' path and on module repositories:" -msgstr "Cette fonction vérifiera si des nouveaux modules sont disponibles dans le chemin 'addons' et sur les dépôts de modules :" +msgid "" +"This function will check for new modules in the 'addons' path and on module " +"repositories:" +msgstr "" +"Cette fonction vérifiera si des nouveaux modules sont disponibles dans le " +"chemin 'addons' et sur les dépôts de modules :" #. module: base #: model:ir.model,name:base.model_res_country @@ -2134,9 +2189,9 @@ msgid "STOCK_GO_BACK" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 #: code:osv/orm.py:0 +#, python-format msgid "AccessError" msgstr "Erreur d'Accès" @@ -2184,8 +2239,8 @@ msgid "unknown" msgstr "inconnu" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The create method is not implemented on this object !" msgstr "La méthode 'create' n'est pas implémentée dans cet objet !" @@ -2220,7 +2275,7 @@ msgstr "" #. module: base #: view:ir.attachment:0 msgid "Data" -msgstr "" +msgstr "Données" #. module: base #: selection:ir.translation,type:0 @@ -2374,11 +2429,11 @@ msgstr "" #. module: base #: field:ir.attachment,create_uid:0 msgid "Creator" -msgstr "Créateur" +msgstr "" #. module: base -#, python-format #: code:osv/fields.py:0 +#, python-format msgid "Not implemented get_memory method !" msgstr "Méthode non implémentée: 'get_memory' !" @@ -2390,8 +2445,8 @@ msgid "Python Code" msgstr "Code Python" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Bad query." msgstr "Requête incorrecte." @@ -2401,8 +2456,8 @@ msgid "Field Label" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "You try to bypass an access rule (Document type: %s)." msgstr "Vous essayez d'outrepasser une règle d'accès (Type de Document: %s)" @@ -2513,7 +2568,7 @@ msgstr "" #. module: base #: field:ir.actions.configuration.wizard,item_id:0 msgid "Next Configuration Wizard" -msgstr "" +msgstr "Prochain Assistant de Configuration" #. module: base #: field:workflow.workitem,inst_id:0 @@ -2537,8 +2592,8 @@ msgid "raw" msgstr "brut" #. module: base -#, python-format #: code:addons/base/res/partner/partner.py:0 +#, python-format msgid "Partners: " msgstr "Partenaires : " @@ -2559,8 +2614,8 @@ msgid "Role Name" msgstr "Nom du rôle" #. module: base -#, python-format #: code:addons/base/res/res_user.py:0 +#, python-format msgid "Can not remove root user!" msgstr "Impossible d'effacer l'utilisateur 'root' !" @@ -2608,8 +2663,11 @@ msgstr "Rapport XML" #. module: base #: help:res.partner,user_id:0 -msgid "The internal user that is in charge of communicating with this partner if any." -msgstr "L'utilisateur interne en charge de communiqué avec le partenaire éventuel." +msgid "" +"The internal user that is in charge of communicating with this partner if " +"any." +msgstr "" +"L'utilisateur interne en charge de communiqué avec le partenaire éventuel." #. module: base #: selection:ir.translation,type:0 @@ -2622,8 +2680,8 @@ msgid "Cancel Upgrade" msgstr "Annuler la Mise à Jour" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The search method is not implemented on this object !" msgstr "La méthode 'search' n'est pas implémentée dans cet objet !" @@ -2653,8 +2711,8 @@ msgid "res.lang" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Pie charts need exactly two fields" msgstr "Les graphiques en camembert ont besoin d'exactement deux champs" @@ -2739,8 +2797,8 @@ msgid "STOCK_MEDIA_PAUSE" msgstr "" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_module_import.py:0 +#, python-format msgid "Error !" msgstr "Erreur !" @@ -2757,11 +2815,14 @@ msgstr "GPL-2" #. module: base #: help:ir.module.repository,filter:0 -msgid "Regexp to search module on the repository webpage:\n" +msgid "" +"Regexp to search module on the repository webpage:\n" "- The first parenthesis must match the name of the module.\n" "- The second parenthesis must match all the version number.\n" "- The last parenthesis must match the extension of the module." -msgstr "Expression Rationelle utilisée pour rechercher le module sur la page Web du dépôt:\n" +msgstr "" +"Expression Rationelle utilisée pour rechercher le module sur la page Web du " +"dépôt:\n" "- la première parenthèse doit 'matcher' le nom du module;\n" "- la seconde parenthèse doit 'matcher' le numéro de version;\n" "- la dernière parenthèse doit 'matcher' l'extension du module;" @@ -2842,8 +2903,8 @@ msgid "ir.actions.act_window.view" msgstr "" #. module: base -#, python-format #: code:tools/translate.py:0 +#, python-format msgid "Bad file format" msgstr "Format de fichier incorrect" @@ -2879,7 +2940,9 @@ msgstr "" #. module: base #: wizard_view:module.lang.import,init:0 -msgid "You have to import a .CSV file wich is encoded in UTF-8. Please check that the first line of your file is one of the following:" +msgid "" +"You have to import a .CSV file wich is encoded in UTF-8. Please check that " +"the first line of your file is one of the following:" msgstr "" #. module: base @@ -2894,8 +2957,8 @@ msgid "Readonly" msgstr "Lecture seule" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not remove the field '%s' !" msgstr "Vous ne pouvez pas effacer le champ '%s' !" @@ -2947,10 +3010,16 @@ msgid "STOCK_STOP" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 -msgid "\"%s\" contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id" -msgstr "\"%s\" contiens trop de caractère 'point'. Les identifiants XML ne doivent pas contenir de points ! Ceux ci sont utilisés pour effectuer des références vers d'autres données de module, comme par exemple dans \"module.reference_id\"" +#, python-format +msgid "" +"\"%s\" contains too many dots. XML ids should not contain dots ! These are " +"used to refer to other modules data, as in module.reference_id" +msgstr "" +"\"%s\" contiens trop de caractère 'point'. Les identifiants XML ne doivent " +"pas contenir de points ! Ceux ci sont utilisés pour effectuer des références " +"vers d'autres données de module, comme par exemple dans " +"\"module.reference_id\"" #. module: base #: field:res.partner.bank,acc_number:0 @@ -2989,8 +3058,8 @@ msgid "Day: %(day)s" msgstr "Jour: %(day)s" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not read this document! (%s)" msgstr "Vous ne pouvez pas lire ce document ! (%s)" @@ -3114,9 +3183,11 @@ msgid "Help" msgstr "Aide" #. module: base -#, python-format #: code:addons/base/module/module.py:0 -msgid "Some installed modules depends on the module you plan to desinstall :\n %s" +#, python-format +msgid "" +"Some installed modules depends on the module you plan to desinstall :\n" +" %s" msgstr "" #. module: base @@ -3208,8 +3279,8 @@ msgid "Create" msgstr "" #. module: base -#, python-format #: code:addons/base/res/res_user.py:0 +#, python-format msgid "The name of the group can not start with \"-\"" msgstr "Le nom du groupe ne peut pas commencer par \"-\"" @@ -3300,9 +3371,11 @@ msgid "Resource Name" msgstr "Nom de la Ressource" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_export_lang.py:0 -msgid "Save this document to a .tgz file. This archive containt UTF-8 %s files and may be uploaded to launchpad." +#, python-format +msgid "" +"Save this document to a .tgz file. This archive containt UTF-8 %s files and " +"may be uploaded to launchpad." msgstr "" #. module: base @@ -3353,8 +3426,8 @@ msgid "References" msgstr "Références" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "This record was modified in the meanwhile" msgstr "Cet enregistrement a été modifié entre temps" @@ -3380,14 +3453,14 @@ msgid "Kind" msgstr "Genre" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "This method does not exist anymore" msgstr "Cette méthode n'existe plus" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Tree can only be used in tabular reports" msgstr "Les Arbres peuvent uniquement utilisés dans les rapports tabulaires" @@ -3421,7 +3494,8 @@ msgstr "" #. module: base #: help:res.users,password:0 -msgid "Keep empty if you don't want the user to be able to connect on the system." +msgid "" +"Keep empty if you don't want the user to be able to connect on the system." msgstr "" #. module: base @@ -3450,14 +3524,14 @@ msgid "Relation Field" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Bar charts need at least two fields" msgstr "Les graphiques en barres ont besoin d'au moins deux champs" #. module: base -#, python-format #: code:osv/fields.py:0 +#, python-format msgid "Not implemented search_memory method !" msgstr "Utilisation d'une méthode non implémentée: 'search_memory' !" @@ -3557,7 +3631,10 @@ msgstr "" #. module: base #: view:wizard.module.lang.export:0 -msgid "The official translations pack of all OpenERP/OpenObjects module are managed through launchpad. We use their online interface to synchronize all translations efforts." +msgid "" +"The official translations pack of all OpenERP/OpenObjects module are managed " +"through launchpad. We use their online interface to synchronize all " +"translations efforts." msgstr "" #. module: base @@ -3583,8 +3660,8 @@ msgid "New Window" msgstr "Nouvelle fenêtre" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Second field should be figures" msgstr "" @@ -3599,10 +3676,13 @@ msgid "Parent Action" msgstr "Action Parente" #. module: base -#, python-format #: code:addons/base/res/partner/partner.py:0 -msgid "Couldn't generate the next id because some partners have an alphabetic id !" -msgstr "Impossible de générer le prochain identifiant car certains partenaires ont un identifiant alphabétique !" +#, python-format +msgid "" +"Couldn't generate the next id because some partners have an alphabetic id !" +msgstr "" +"Impossible de générer le prochain identifiant car certains partenaires ont " +"un identifiant alphabétique !" #. module: base #: selection:ir.report.custom,state:0 @@ -3622,7 +3702,7 @@ msgstr "" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Skip Step" -msgstr "" +msgstr "Passer l'Étape" #. module: base #: model:ir.actions.act_window,name:base.act_res_partner_event @@ -3655,14 +3735,14 @@ msgid "Active Partner Events" msgstr "Évènements Actifs des Partenaires" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Wrong ID for the browse record, got %r, expected an integer." msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Error occured while validating the field(s) %s: %s" msgstr "" @@ -3700,7 +3780,9 @@ msgstr "" #. module: base #: help:ir.actions.wizard,multi:0 -msgid "If set to true, the wizard will not be displayed on the right toolbar of a form views." +msgid "" +"If set to true, the wizard will not be displayed on the right toolbar of a " +"form views." msgstr "" #. module: base @@ -3911,7 +3993,7 @@ msgstr "" #. module: base #: selection:ir.actions.todo,state:0 msgid "Done" -msgstr "" +msgstr "Terminé" #. module: base #: field:ir.actions.server,trigger_obj_id:0 @@ -3927,7 +4009,9 @@ msgstr "Facture" #: help:ir.actions.report.custom,multi:0 #: help:ir.actions.report.xml,multi:0 #: help:ir.actions.act_window.view,multi:0 -msgid "If set to true, the action will not be displayed on the right toolbar of a form views." +msgid "" +"If set to true, the action will not be displayed on the right toolbar of a " +"form views." msgstr "" #. module: base @@ -3976,8 +4060,11 @@ msgstr "" #. module: base #: constraint:ir.model:0 -msgid "The Object name must start with x_ and not contain any special character !" -msgstr "Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères spéciaux !" +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères " +"spéciaux !" #. module: base #: rml:ir.module.reference:0 @@ -3987,7 +4074,7 @@ msgstr "Module :" #. module: base #: field:ir.actions.configuration.wizard,name:0 msgid "Next Wizard" -msgstr "" +msgstr "Assistant Suivant" #. module: base #: selection:ir.rule,operator:0 @@ -4019,7 +4106,9 @@ msgstr "" #. module: base #: wizard_view:module.lang.install,start:0 -msgid "The selected language has been successfully installed. You must change the preferences of the user and open a new menu to view changes." +msgid "" +"The selected language has been successfully installed. You must change the " +"preferences of the user and open a new menu to view changes." msgstr "" #. module: base @@ -4082,8 +4171,8 @@ msgid "STOCK_HOME" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Enter at least one field !" msgstr "Entrez au moins un champ !" @@ -4268,8 +4357,8 @@ msgid "Field Mappings" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The copy method is not implemented on this object !" msgstr "La méthode 'copy' n'est pas implémentée dans cet objet !" @@ -4290,8 +4379,8 @@ msgid "center" msgstr "centre" #. module: base -#, python-format #: code:addons/base/module/wizard/wizard_module_import.py:0 +#, python-format msgid "Can not create the module file: %s !" msgstr "" @@ -4408,7 +4497,7 @@ msgstr "Fichier" #. module: base #: field:ir.model,access_ids:0 msgid "Access" -msgstr "" +msgstr "Accès" #. module: base #: selection:ir.ui.menu,icon:0 @@ -4459,8 +4548,8 @@ msgid "STOCK_PRINT_PREVIEW" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The perm_read method is not implemented on this object !" msgstr "La méthode 'perm_read' n'est pas implémentée dans cet objet !" @@ -4523,8 +4612,8 @@ msgid "Repeat missed" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Couldn't find tag '%s' in parent view !" msgstr "" @@ -4598,8 +4687,8 @@ msgid "Installed modules" msgstr "" #. module: base -#, python-format #: code:addons/base/res/partner/partner.py:0 +#, python-format msgid "Warning" msgstr "" @@ -4614,8 +4703,8 @@ msgid "Operator" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "ValidateError" msgstr "" @@ -4667,8 +4756,8 @@ msgid "Report Footer 1" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_model.py:0 +#, python-format msgid "You can not delete this document! (%s)" msgstr "" @@ -4716,14 +4805,14 @@ msgid "Printed:" msgstr "" #. module: base -#, python-format #: code:addons/base/module/module.py:0 +#, python-format msgid "Can not upgrade module '%s'. It is not installed." msgstr "" #. module: base -#, python-format #: code:osv/fields.py:0 +#, python-format msgid "Not implemented set_memory method !" msgstr "" @@ -4764,7 +4853,7 @@ msgstr "" #: view:ir.sequence:0 #: view:res.company:0 msgid "Configuration" -msgstr "Configuration" +msgstr "" #. module: base #: field:ir.model.fields,ttype:0 @@ -4819,8 +4908,8 @@ msgid "Cascade" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Field %d should be a figure" msgstr "" @@ -4832,8 +4921,8 @@ msgid "Gantt" msgstr "" #. module: base -#, python-format #: code:osv/fields.py:0 +#, python-format msgid "Not Implemented" msgstr "" @@ -4861,7 +4950,7 @@ msgstr "" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Next Configuration Step" -msgstr "" +msgstr "Prochaine Étape de la Configuration" #. module: base #: selection:ir.ui.menu,icon:0 @@ -4882,7 +4971,10 @@ msgstr "" #. module: base #: view:res.config.view:0 -msgid "Choose the simplified interface if you are testing OpenERP for the first time. Less used options or fields are automatically hidden. You will be able to change this, later, through the Administration menu." +msgid "" +"Choose the simplified interface if you are testing OpenERP for the first " +"time. Less used options or fields are automatically hidden. You will be able " +"to change this, later, through the Administration menu." msgstr "" #. module: base @@ -4897,7 +4989,9 @@ msgstr "" #. module: base #: help:ir.actions.report.xml,attachment:0 -msgid "This is the prefix of the file name the print will be saved as attachement. Keep empty to not save the printed reports" +msgid "" +"This is the prefix of the file name the print will be saved as attachement. " +"Keep empty to not save the printed reports" msgstr "" #. module: base @@ -4944,26 +5038,32 @@ msgid "ir.actions.report.xml" msgstr "" #. module: base -#, python-format #: code:addons/base/maintenance/maintenance.py:0 +#, python-format msgid "Maintenance Error !" msgstr "" #. module: base #: view:wizard.module.lang.export:0 -msgid "To improve some terms of the official translations of OpenERP, you should modify the terms directly on the launchpad interface. If you made lots of translations for your own module, you can also publish all your translation at once." +msgid "" +"To improve some terms of the official translations of OpenERP, you should " +"modify the terms directly on the launchpad interface. If you made lots of " +"translations for your own module, you can also publish all your translation " +"at once." msgstr "" #. module: base #: view:res.users:0 -msgid "Please note that you will have to logout and relog if you change your password." +msgid "" +"Please note that you will have to logout and relog if you change your " +"password." msgstr "" #. module: base #: field:res.partner,address:0 #: view:res.partner.address:0 msgid "Contacts" -msgstr "Contacts" +msgstr "" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -5003,8 +5103,8 @@ msgid "Module dependency" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The name_get method is not implemented on this object !" msgstr "" @@ -5132,8 +5232,8 @@ msgid "Import a Translation File" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_actions.py:0 +#, python-format msgid "Please specify the Partner Email address !" msgstr "" @@ -5152,7 +5252,9 @@ msgstr "" #. module: base #: view:ir.actions.server:0 -msgid "If you use a formula type, use a python expression using the variable 'object'." +msgid "" +"If you use a formula type, use a python expression using the variable " +"'object'." msgstr "" #. module: base @@ -5171,8 +5273,8 @@ msgid "VAT" msgstr "TVA" #. module: base -#, python-format #: code:addons/base/maintenance/maintenance.py:0 +#, python-format msgid "Valid Maintenance Contract !" msgstr "" @@ -5197,13 +5299,13 @@ msgid "res.partner.som" msgstr "" #. module: base -#, python-format #: code:report/custom.py:0 #: code:addons/base/ir/ir_actions.py:0 #: code:addons/base/ir/ir_model.py:0 #: code:addons/base/res/res_user.py:0 #: code:addons/base/res/res_currency.py:0 #: code:addons/base/module/module.py:0 +#, python-format msgid "Error" msgstr "" @@ -5337,7 +5439,7 @@ msgstr "" #. module: base #: constraint:res.partner:0 msgid "The VAT doesn't seem to be correct." -msgstr "Le numéro de TVA ne semble pas correct." +msgstr "" #. module: base #: view:ir.sequence:0 @@ -5434,8 +5536,8 @@ msgid "Description" msgstr "" #. module: base -#, python-format #: code:addons/base/ir/ir_report_custom.py:0 +#, python-format msgid "Invalid operation" msgstr "" @@ -5471,8 +5573,8 @@ msgid "ir.attachment" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "The value \"%s\" for the field \"%s\" is not in the selection" msgstr "" @@ -5649,12 +5751,15 @@ msgstr "" #. module: base #: help:res.partner.address,type:0 -msgid "Used to select automatically the right address according to the context in sales and purchases documents." +msgid "" +"Used to select automatically the right address according to the context in " +"sales and purchases documents." msgstr "" #. module: base #: help:ir.cron,numbercall:0 -msgid "Number of time the function is called,\n" +msgid "" +"Number of time the function is called,\n" "a negative number indicates that the function will always be called" msgstr "" @@ -5689,8 +5794,8 @@ msgid "Cancel Install" msgstr "" #. module: base -#, python-format #: code:osv/orm.py:0 +#, python-format msgid "Please check that all your lines have %d columns." msgstr "" @@ -5703,4 +5808,3 @@ msgstr "" #: field:ir.model.data,name:0 msgid "XML Identifier" msgstr "" - From 9d857cea72fe6b7d609bdc9440e4057d6b1343d2 Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 16:57:02 +0100 Subject: [PATCH 13/29] Merged the Launchpad translations with the Bazaar po files bzr revid: olt@tinyerp.com-20081216155702-014dib95v6dnkafd --- addons/account/i18n/fr_FR.po | 414 +++++++++++++++++++++++++---------- addons/board/i18n/fr_FR.po | 9 +- 2 files changed, 304 insertions(+), 119 deletions(-) diff --git a/addons/account/i18n/fr_FR.po b/addons/account/i18n/fr_FR.po index 9be79118f8c..8f2141f970b 100644 --- a/addons/account/i18n/fr_FR.po +++ b/addons/account/i18n/fr_FR.po @@ -12,8 +12,9 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2008-12-16 10:59+0000\n" +"X-Generator: Launchpad (build Unknown)\n" #. module: account #, python-format @@ -39,8 +40,13 @@ msgstr "Code du compte taxe" #. module: account #: help:account.tax,domain:0 -msgid "This field is only used if you develop your own module allowing developpers to create specific taxes in a custom domain." -msgstr "Ce champ est uniquement utilisé si vous développez votre module afin de permettre aux développeur de créer des taxes spécifiques dans un domaine personnalisé." +msgid "" +"This field is only used if you develop your own module allowing developpers " +"to create specific taxes in a custom domain." +msgstr "" +"Ce champ est uniquement utilisé si vous développez votre module afin de " +"permettre aux développeur de créer des taxes spécifiques dans un domaine " +"personnalisé." #. module: account #: selection:account.subscription,period_type:0 @@ -439,7 +445,7 @@ msgstr "Rem. (%)" #. module: account #: selection:account.account.type,sign:0 msgid "Negative" -msgstr "" +msgstr "Négatif" #. module: account #: field:account.analytic.line,move_id:0 @@ -448,8 +454,14 @@ msgstr "Ligne de mouvement" #. module: account #: rml:account.overdue:0 -msgid "Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting departement at +32 81 81 37 00." -msgstr "Dans le cas où votre paiement aurait été effectués après l'envoi de ce mail, veuillez considérer la présente comme nulle et non avenue. N'hésitez pas à contacter notre département comptabilité au +32 81 81 37 00." +msgid "" +"Would your payment have been carried out after this mail was sent, please " +"consider the present one as void. Do not hesitate to contact our accounting " +"departement at +32 81 81 37 00." +msgstr "" +"Dans le cas où votre paiement aurait été effectués après l'envoi de ce mail, " +"veuillez considérer la présente comme nulle et non avenue. N'hésitez pas à " +"contacter notre département comptabilité au +32 81 81 37 00." #. module: account #: selection:account.move,type:0 @@ -570,8 +582,12 @@ msgstr "Méthode de report à nouveau" #. module: account #: help:res.partner,property_payment_term:0 -msgid "This payment term will be used, instead of the default one, for the current partner" -msgstr "Cette condition de paiement sera utilisée, au lieu de celle par défaut, pour le partenaire courant" +msgid "" +"This payment term will be used, instead of the default one, for the current " +"partner" +msgstr "" +"Cette condition de paiement sera utilisée, au lieu de celle par défaut, pour " +"le partenaire courant" #. module: account #: field:account.tax,ref_base_code_id:0 @@ -586,8 +602,14 @@ msgstr "Ligne" #. module: account #: help:account.analytic.journal,type:0 -msgid "Gives the type of the analytic journal. When a document (eg: an invoice) needs to create analytic entries, Tiny ERP will look for a matching journal of the same type." -msgstr "Donne the type de journal analytique. Quand un document (ex. une facture) a besoin de créer une entrée analytique, Tiny ERP regardera aprés un journal du même type." +msgid "" +"Gives the type of the analytic journal. When a document (eg: an invoice) " +"needs to create analytic entries, Tiny ERP will look for a matching journal " +"of the same type." +msgstr "" +"Donne the type de journal analytique. Quand un document (ex. une facture) a " +"besoin de créer une entrée analytique, Tiny ERP regardera aprés un journal " +"du même type." #. module: account #: selection:account.tax,applicable_type:0 @@ -695,8 +717,9 @@ msgstr "" #. module: account #, python-format -#: code:addons/account/account_move_line.py:0 -msgid "You can not do this modification on a reconciled entry ! Please note that you can just change some non important fields !" +msgid "" +"You can not do this modification on a reconciled entry ! Please note that " +"you can just change some non important fields !" msgstr "" #. module: account @@ -728,8 +751,12 @@ msgstr "Enfant" #. module: account #: help:product.category,property_account_expense_categ:0 -msgid "This account will be used, instead of the default one, to value outgoing stock for the current product category" -msgstr "Ce compte sera utilisé, au lieu de celui par defaut, pour valoriser les sorties de marchandises pour la catégorie de produit courante" +msgid "" +"This account will be used, instead of the default one, to value outgoing " +"stock for the current product category" +msgstr "" +"Ce compte sera utilisé, au lieu de celui par defaut, pour valoriser les " +"sorties de marchandises pour la catégorie de produit courante" #. module: account #: wizard_button:populate_statement_from_inv,init,customer:0 @@ -799,13 +826,21 @@ msgstr "Journal des Traitements de fin d'année" #. module: account #: help:res.partner,property_account_payable:0 -msgid "This account will be used, instead of the default one, as the payable account for the current partner" -msgstr "Ce compte sera utilisé, au lieu de celui par defaut, comme le compte de paiement pour le partenaire courant" +msgid "" +"This account will be used, instead of the default one, as the payable " +"account for the current partner" +msgstr "" +"Ce compte sera utilisé, au lieu de celui par defaut, comme le compte de " +"paiement pour le partenaire courant" #. module: account #: help:account.move.line,amount_currency:0 -msgid "The amount expressed in an optionnal other currency if it is a multi-currency entry." -msgstr "Le montant exprimé dans une autre devise optionnelle si c'est une entrée multi-devise." +msgid "" +"The amount expressed in an optionnal other currency if it is a multi-" +"currency entry." +msgstr "" +"Le montant exprimé dans une autre devise optionnelle si c'est une entrée " +"multi-devise." #. module: account #: model:ir.actions.act_window,name:account.action_tax_code_list @@ -859,7 +894,7 @@ msgstr "Générer les entrée avant:" #: model:ir.actions.report.xml,name:account.account_analytic_account_cost_ledger #: model:ir.actions.wizard,name:account.account_analytic_account_cost_ledger_report msgid "Cost Ledger" -msgstr "Livre de coûts" +msgstr "Grand livre analytique" #. module: account #: wizard_view:account.account.balance.report,checktype:0 @@ -924,7 +959,7 @@ msgstr "Comptes analytiques" #: model:ir.actions.wizard,name:account.wizard_print_journal #: model:ir.ui.menu,name:account.menu_print_journal msgid "Print Journal" -msgstr "" +msgstr "Journal détaillé par écriture" #. module: account #: model:ir.model,name:account.model_account_bank_accounts_wizard @@ -1062,8 +1097,16 @@ msgstr "" #. module: account #: help:account.journal,view_id:0 -msgid "Gives the view used when writing or browsing entries in this journal. The view tell Tiny ERP which fields should be visible, required or readonly and in which order. You can create your own view for a faster encoding in each journal." -msgstr "Donne la vue utilisée lors de l'écriture ou la navigation dans ce journal. La vue dit à Tiny ERP quels champs devront être visible, requis ou en lecture seul et dans quel ordre. Vous pouvez créer votre propre vue pour un encodage plus rapide dans chaque journal." +msgid "" +"Gives the view used when writing or browsing entries in this journal. The " +"view tell Tiny ERP which fields should be visible, required or readonly and " +"in which order. You can create your own view for a faster encoding in each " +"journal." +msgstr "" +"Donne la vue utilisée lors de l'écriture ou la navigation dans ce journal. " +"La vue dit à Tiny ERP quels champs devront être visible, requis ou en " +"lecture seul et dans quel ordre. Vous pouvez créer votre propre vue pour un " +"encodage plus rapide dans chaque journal." #. module: account #: model:ir.model,name:account.model_account_fiscal_position @@ -1153,13 +1196,17 @@ msgstr "" #. module: account #: help:account.payment.term.line,sequence:0 -msgid "The sequence field is used to order the payment term lines from the lowest sequences to the higher ones" -msgstr "Le champ sequence est utilisé pour classer les lignes de termes de paiement des plus basses séquences vers les plus hautes." +msgid "" +"The sequence field is used to order the payment term lines from the lowest " +"sequences to the higher ones" +msgstr "" +"Le champ sequence est utilisé pour classer les lignes de termes de paiement " +"des plus basses séquences vers les plus hautes." #. module: account #: field:account.chart.template,property_account_income_categ:0 msgid "Income Category Account" -msgstr "" +msgstr "Catégorie de Compte de Revenu" #. module: account #: model:ir.actions.act_window,name:account.analytic_account_form @@ -1245,12 +1292,21 @@ msgstr "Devise société" #. module: account #: help:account.journal,entry_posted:0 -msgid "Check this box if you don't want that new account moves pass through the 'draft' state and goes direclty to the 'posted state' without any manual validation." -msgstr "Cochez cette case si vous ne voulez pas que les nouveaux mouvements de comptes passent par l'état 'Brouillon' et se retrouvent directement dans l'état 'Transféré' sans validation manuelle." +msgid "" +"Check this box if you don't want that new account moves pass through the " +"'draft' state and goes direclty to the 'posted state' without any manual " +"validation." +msgstr "" +"Cochez cette case si vous ne voulez pas que les nouveaux mouvements de " +"comptes passent par l'état 'Brouillon' et se retrouvent directement dans " +"l'état 'Transféré' sans validation manuelle." #. module: account #: help:account.payment.term.line,days2:0 -msgid "Day of the month, set -1 for the last day of the current month. If it's positive, it gives the day of the next month. Set 0 for net days (otherwise it's based on the end of the month)." +msgid "" +"Day of the month, set -1 for the last day of the current month. If it's " +"positive, it gives the day of the next month. Set 0 for net days (otherwise " +"it's based on the end of the month)." msgstr "" #. module: account @@ -1378,8 +1434,12 @@ msgstr "" #. module: account #: wizard_view:account.reconcile.unreconcile,init:0 #: wizard_view:account.move.line.unreconcile,init:0 -msgid "If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable" -msgstr "Si vous déreconciliez des transactions, vous devez aussi vérifier toutes les actions qui sont liées à ces transactions car elles ne seront pas déactivées" +msgid "" +"If you unreconciliate transactions, you must also verify all the actions " +"that are linked to those transactions because they will not be disable" +msgstr "" +"Si vous déreconciliez des transactions, vous devez aussi vérifier toutes les " +"actions qui sont liées à ces transactions car elles ne seront pas déactivées" #. module: account #: field:wizard.multi.charts.accounts,bank_accounts_id:0 @@ -1771,7 +1831,7 @@ msgstr "Grand Livre par période" #. module: account #: wizard_field:account.analytic.line,init,from_date:0 msgid "From" -msgstr "" +msgstr "Période du" #. module: account #: model:process.node,note:account.process_node_reconciliation0 @@ -1782,7 +1842,7 @@ msgstr "" #. module: account #: wizard_view:account.central.journal.report,init:0 msgid "Print Central Journal" -msgstr "" +msgstr "Journal regroupé par compte" #. module: account #: field:account.analytic.account,code:0 @@ -2015,8 +2075,12 @@ msgstr "Notes de Crédit Client" #. module: account #: help:product.category,property_account_income_categ:0 -msgid "This account will be used, instead of the default one, to value incoming stock for the current product category" -msgstr "Ce compte sera utilisé, au lieu de celui par défaut, pour valoriser le stock sortant pour la catégorie de produit courante" +msgid "" +"This account will be used, instead of the default one, to value incoming " +"stock for the current product category" +msgstr "" +"Ce compte sera utilisé, au lieu de celui par défaut, pour valoriser le stock " +"sortant pour la catégorie de produit courante" #. module: account #: rml:account.analytic.account.quantity_cost_ledger:0 @@ -2079,8 +2143,14 @@ msgstr "Jours" #. module: account #: help:account.tax.template,sequence:0 -msgid "The sequence field is used to order the taxes lines from the lowest sequences to the higher ones. The order is important if you have a tax that have several tax children. In this case, the evaluation order is important." -msgstr "Le Champ 'Séquence' est utilisé pour trier les lignes de taxes du plus petit numéro de séquence au plus grand. L'ordre est important si vous avez plusieurs taxes enfant. Dans ce cas, l'ordre d'évaluation est important." +msgid "" +"The sequence field is used to order the taxes lines from the lowest " +"sequences to the higher ones. The order is important if you have a tax that " +"have several tax children. In this case, the evaluation order is important." +msgstr "" +"Le Champ 'Séquence' est utilisé pour trier les lignes de taxes du plus petit " +"numéro de séquence au plus grand. L'ordre est important si vous avez " +"plusieurs taxes enfant. Dans ce cas, l'ordre d'évaluation est important." #. module: account #: rml:account.general.ledger:0 @@ -2204,8 +2274,14 @@ msgstr "" #. module: account #: rml:account.overdue:0 -msgid "Exception made of a mistake of our side, it seems that the following bills stay unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days." -msgstr "Sauf erreur de notre part, il semble que les factures suivantes demeurent impayées. Nous vous prions de prendre les mesures nécessaires afin de procéder au payement dans les 8 jours." +msgid "" +"Exception made of a mistake of our side, it seems that the following bills " +"stay unpaid. Please, take appropriate measures in order to carry out this " +"payment in the next 8 days." +msgstr "" +"Sauf erreur de notre part, il semble que les factures suivantes demeurent " +"impayées. Nous vous prions de prendre les mesures nécessaires afin de " +"procéder au payement dans les 8 jours." #. module: account #: rml:account.invoice:0 @@ -2263,7 +2339,7 @@ msgstr "" #: selection:account.account.template,type:0 #: selection:account.account,type:0 msgid "Consolidation" -msgstr "" +msgstr "Consolidation" #. module: account #: field:account.invoice,date_invoice:0 @@ -2491,7 +2567,7 @@ msgstr "Informations supplémentaires" #. module: account #: field:account.config.wizard,date2:0 msgid "Ending Date" -msgstr "" +msgstr "Date de Clôture" #. module: account #: wizard_field:account.account.balance.report,checktype,fiscalyear:0 @@ -2572,7 +2648,7 @@ msgstr "Intitulé" #: selection:account.account.template,type:0 #: selection:account.account,type:0 msgid "Receivable" -msgstr "" +msgstr "Recevable" #. module: account #: wizard_view:account.move.validate,init:0 @@ -2613,8 +2689,15 @@ msgstr "L'utilisateur résponsable de ce journal" #. module: account #: help:account.tax,sequence:0 -msgid "The sequence field is used to order the taxes lines from the lowest sequences to the higher ones. The order is important if you have a tax that have several tax childs. In this case, the evaluation order is important." -msgstr "Le champ sequence est utilisé pour classer les lignes de taxes des plus basses séquences vers les plus hautes. l'ordre est important si vous avez une taxe qui a plusieurs taxes enfants. Dans ce cas, l'ordre d'évaluation est important." +msgid "" +"The sequence field is used to order the taxes lines from the lowest " +"sequences to the higher ones. The order is important if you have a tax that " +"have several tax childs. In this case, the evaluation order is important." +msgstr "" +"Le champ sequence est utilisé pour classer les lignes de taxes des plus " +"basses séquences vers les plus hautes. l'ordre est important si vous avez " +"une taxe qui a plusieurs taxes enfants. Dans ce cas, l'ordre d'évaluation " +"est important." #. module: account #, python-format @@ -2802,7 +2885,9 @@ msgstr "Total crédit" #. module: account #: rml:account.overdue:0 msgid "Best regards." -msgstr "Nous vous prions d'agréer, Madame, Monsieur, l'expression de nos sentiments distingués." +msgstr "" +"Nous vous prions d'agréer, Madame, Monsieur, l'expression de nos sentiments " +"distingués." #. module: account #: wizard_button:account.subscription.generate,init,generate:0 @@ -2831,7 +2916,12 @@ msgstr "Contrôle des ecritures" #. module: account #: help:account.account,currency_mode:0 -msgid "This will select how is computed the current currency rate for outgoing transactions. In most countries the legal method is \"average\" but only a few softwares are able to manage this. So if you import from another software, you may have to use the rate at date. Incoming transactions, always use the rate at date." +msgid "" +"This will select how is computed the current currency rate for outgoing " +"transactions. In most countries the legal method is \"average\" but only a " +"few softwares are able to manage this. So if you import from another " +"software, you may have to use the rate at date. Incoming transactions, " +"always use the rate at date." msgstr "" #. module: account @@ -2972,8 +3062,14 @@ msgstr "Lecture seule" #. module: account #: help:account.model.line,date_maturity:0 -msgid "The maturity date of the generated entries for this model. You can chosse between the date of the creation action or the the date of the creation of the entries plus the partner payment terms." -msgstr "La date d'échéance de l'entrée générée pour ce modèle. Vous pouvez choisir entre la date de création de l'action ou la date de création des entrées plus les conditions de payement du partenaire." +msgid "" +"The maturity date of the generated entries for this model. You can chosse " +"between the date of the creation action or the the date of the creation of " +"the entries plus the partner payment terms." +msgstr "" +"La date d'échéance de l'entrée générée pour ce modèle. Vous pouvez choisir " +"entre la date de création de l'action ou la date de création des entrées " +"plus les conditions de payement du partenaire." #. module: account #: constraint:account.fiscalyear:0 @@ -2982,8 +3078,12 @@ msgstr "" #. module: account #: help:product.template,property_account_income:0 -msgid "This account will be used, instead of the default one, to value incoming stock for the current product" -msgstr "Ce compte sera utilisé , au lieu de celui par défaut, pour valoriser le stock d'entrée pour le produit courant" +msgid "" +"This account will be used, instead of the default one, to value incoming " +"stock for the current product" +msgstr "" +"Ce compte sera utilisé , au lieu de celui par défaut, pour valoriser le " +"stock d'entrée pour le produit courant" #. module: account #: rml:account.invoice:0 @@ -3078,7 +3178,7 @@ msgstr "" #: selection:account.account.template,type:0 #: selection:account.account,type:0 msgid "Payable" -msgstr "" +msgstr "Payable" #. module: account #: model:ir.actions.report.xml,name:account.account_vat_declaration @@ -3087,7 +3187,9 @@ msgstr "" #. module: account #: help:account.account,merge_invoice:0 -msgid "Check this box if you want that all lines of a customer or supplier invoice using this account are created in one line only" +msgid "" +"Check this box if you want that all lines of a customer or supplier invoice " +"using this account are created in one line only" msgstr "" #. module: account @@ -3104,7 +3206,7 @@ msgstr "" #. module: account #: field:account.chart.template,property_account_expense_categ:0 msgid "Expense Category Account" -msgstr "" +msgstr "Catégorie de Compte de Dépenses" #. module: account #: wizard_button:account.move.validate,init,validate:0 @@ -3291,9 +3393,11 @@ msgid "Total debit" msgstr "Total débit" #. module: account -#, python-format #: code:addons/account/wizard/wizard_bank_reconcile.py:0 -msgid "You have to define the bank account\nin the journal definition for reconciliation." +#, python-format +msgid "" +"You have to define the bank account\n" +"in the journal definition for reconciliation." msgstr "" #. module: account @@ -3340,13 +3444,21 @@ msgstr "Comptes partenaires" #. module: account #: help:account.tax,tax_group:0 #: help:account.tax.template,tax_group:0 -msgid "If a default tax if given in the partner it only override taxes from account (or product) of the same group." -msgstr "Si une taxe par défaut est précisée pour le partenaire cela ne surcharge seulement que les taxes pour le compte (ou le produit) du même groupe." +msgid "" +"If a default tax if given in the partner it only override taxes from account " +"(or product) of the same group." +msgstr "" +"Si une taxe par défaut est précisée pour le partenaire cela ne surcharge " +"seulement que les taxes pour le compte (ou le produit) du même groupe." #. module: account #: help:account.model.line,sequence:0 -msgid "The sequence field is used to order the resources from the lowest sequences to the higher ones" -msgstr "Le champ séquence est utilisé pour ordonner les documents de la plus petit vers la plus grand" +msgid "" +"The sequence field is used to order the resources from the lowest sequences " +"to the higher ones" +msgstr "" +"Le champ séquence est utilisé pour ordonner les documents de la plus petit " +"vers la plus grand" #. module: account #: view:account.bank.statement:0 @@ -3383,8 +3495,13 @@ msgstr "Raccourci" #. module: account #: wizard_view:account.move.validate,init:0 -msgid "All draft account entries in this journal and period will be validated. It means you won't be able to modify their accouting fields." -msgstr "Toutes les entrées de comptes brouillon dans ce journal et cette période seront validées. Cela veut dire que vous ne pourrez plus modifier leurs champs de compte." +msgid "" +"All draft account entries in this journal and period will be validated. It " +"means you won't be able to modify their accouting fields." +msgstr "" +"Toutes les entrées de comptes brouillon dans ce journal et cette période " +"seront validées. Cela veut dire que vous ne pourrez plus modifier leurs " +"champs de compte." #. module: account #: selection:account.model.line,date:0 @@ -3394,8 +3511,13 @@ msgstr "Date du jour" #. module: account #: help:account.journal,centralisation:0 -msgid "Check this box if you want that each entry doesn't create a counterpart but share the same counterpart for each entry of this journal." -msgstr "Cochez cette boîte si vous voulez que chaque entrée ne crée pas de contrepartie mais partage la même contrepartie pour chaque entré de ce journal." +msgid "" +"Check this box if you want that each entry doesn't create a counterpart but " +"share the same counterpart for each entry of this journal." +msgstr "" +"Cochez cette boîte si vous voulez que chaque entrée ne crée pas de " +"contrepartie mais partage la même contrepartie pour chaque entré de ce " +"journal." #. module: account #: field:account.tax,parent_id:0 @@ -3437,7 +3559,7 @@ msgstr "Payer et réconcilier" #. module: account #: model:ir.actions.report.xml,name:account.account_central_journal msgid "Central Journal" -msgstr "" +msgstr "Journal centralisé" #. module: account #, python-format @@ -3505,7 +3627,7 @@ msgstr "Journal" #: selection:account.account.template,type:0 #: selection:account.account,type:0 msgid "Closed" -msgstr "" +msgstr "Fermé" #. module: account #: view:account.analytic.line:0 @@ -3571,7 +3693,9 @@ msgstr "Entrées standard" #. module: account #: help:account.account,check_history:0 -msgid "Check this box if you want to print all entries when printing the General Ledger, otherwise it will only print its balance." +msgid "" +"Check this box if you want to print all entries when printing the General " +"Ledger, otherwise it will only print its balance." msgstr "" #. module: account @@ -3641,9 +3765,11 @@ msgid "The journal must have centralised counterpart" msgstr "" #. module: account -#, python-format #: code:addons/account/account.py:0 -msgid "You can not modify a posted entry of this journal !\nYou should mark the journal to allow canceling entries." +#, python-format +msgid "" +"You can not modify a posted entry of this journal !\n" +"You should mark the journal to allow canceling entries." msgstr "" #. module: account @@ -3830,7 +3956,7 @@ msgstr "" #. module: account #: field:account.chart.template,property_account_payable:0 msgid "Payable Account" -msgstr "" +msgstr "Compte Payable" #. module: account #: field:account.account,currency_id:0 @@ -3858,8 +3984,12 @@ msgstr "Crédit" #. module: account #: help:account.tax,child_depend:0 #: help:account.tax.template,child_depend:0 -msgid "Indicate if the tax computation is based on the value computed for the computation of child taxes or based on the total amount." -msgstr "Indique si le calcul de taxe est basé sur la valeur calculée pour la calculation des taxes de l'enfant ou basée sur le montatn total" +msgid "" +"Indicate if the tax computation is based on the value computed for the " +"computation of child taxes or based on the total amount." +msgstr "" +"Indique si le calcul de taxe est basé sur la valeur calculée pour la " +"calculation des taxes de l'enfant ou basée sur le montatn total" #. module: account #: field:account.tax,account_paid_id:0 @@ -3891,7 +4021,9 @@ msgstr "Montant Taxé" #. module: account #: help:account.invoice,reconciled:0 -msgid "The account moves of the invoice have been reconciled with account moves of the payment(s)." +msgid "" +"The account moves of the invoice have been reconciled with account moves of " +"the payment(s)." msgstr "" #. module: account @@ -3911,7 +4043,9 @@ msgstr "Compte général" #. module: account #: help:account.move.line,quantity:0 -msgid "The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very usefull for some reports." +msgid "" +"The optional quantity expressed by this line, eg: number of product sold. " +"The quantity is not a legal requirement but is very usefull for some reports." msgstr "" #. module: account @@ -3921,8 +4055,12 @@ msgstr "" #. module: account #: help:account.move.line,blocked:0 -msgid "You can check this box to mark the entry line as a litigation with the associated partner" -msgstr "Vous pouvez cocher cette boîte pour marquer la ligne d'entrée comme un litige avec le partenaire associé" +msgid "" +"You can check this box to mark the entry line as a litigation with the " +"associated partner" +msgstr "" +"Vous pouvez cocher cette boîte pour marquer la ligne d'entrée comme un " +"litige avec le partenaire associé" #. module: account #: wizard_field:account.automatic.reconcile,init,account_ids:0 @@ -4031,8 +4169,11 @@ msgstr "Taxes par défaut" #. module: account #: constraint:ir.model:0 -msgid "The Object name must start with x_ and not contain any special character !" -msgstr "Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères spéciaux !" +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères " +"spéciaux !" #. module: account #: help:account.config.wizard,code:0 @@ -4041,8 +4182,12 @@ msgstr "" #. module: account #: help:account.move.line,date_maturity:0 -msgid "This field is used for payable and receivable entries. You can put the limit date for the payment of this entry line." -msgstr "Ce champ est utilisé pour les entrée à payer et à recevoir. Vous pouvez mettre la date limite pour le payement de cette ligne d'entrée." +msgid "" +"This field is used for payable and receivable entries. You can put the limit " +"date for the payment of this entry line." +msgstr "" +"Ce champ est utilisé pour les entrée à payer et à recevoir. Vous pouvez " +"mettre la date limite pour le payement de cette ligne d'entrée." #. module: account #: field:account.account,parent_left:0 @@ -4280,7 +4425,7 @@ msgstr "États" #: model:process.node,name:account.process_node_accountingentries0 #: model:process.node,name:account.process_node_supplieraccountingentries0 msgid "Accounting Entries" -msgstr "" +msgstr "Écritures comptables" #. module: account #: model:ir.actions.act_window,name:account.act_account_partner_account_move_unreconciled @@ -4365,7 +4510,9 @@ msgstr "Facture client Pro-Forma" #. module: account #: view:wizard.multi.charts.accounts:0 -msgid "This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template" +msgid "" +"This will automatically configure your chart of accounts, bank accounts, " +"taxes and journals according to the selected template" msgstr "" #. module: account @@ -4444,8 +4591,12 @@ msgstr "Case de la déclaration fiscale" #. module: account #: help:account.tax,include_base_amount:0 -msgid "Indicate if the amount of tax must be included in the base amount for the computation of the next taxes" -msgstr "Indique si le montant de la taxe doit être inclue dans le montant de base pour le calcul des taxes suivantes" +msgid "" +"Indicate if the amount of tax must be included in the base amount for the " +"computation of the next taxes" +msgstr "" +"Indique si le montant de la taxe doit être inclue dans le montant de base " +"pour le calcul des taxes suivantes" #. module: account #: model:process.node,name:account.process_node_draftstatement0 @@ -4519,9 +4670,11 @@ msgid "General Credit" msgstr "" #. module: account -#, python-format #: code:addons/account/invoice.py:0 -msgid "Tax base different !\nClick on compute to update tax base" +#, python-format +msgid "" +"Tax base different !\n" +"Click on compute to update tax base" msgstr "" #. module: account @@ -4587,7 +4740,7 @@ msgstr "" #: model:ir.actions.wizard,name:account.wizard_balance_report #: model:ir.ui.menu,name:account.menu_account_balance_report msgid "Account Balance" -msgstr "" +msgstr "Solde du compte" #. module: account #: model:ir.actions.report.xml,name:account.account_analytic_account_analytic_check @@ -4630,7 +4783,9 @@ msgstr "Taxes à la Vente" #. module: account #: help:account.tax.template,include_base_amount:0 -msgid "Indicate if the amount of tax must be included in the base amount for the computation of the next taxes." +msgid "" +"Indicate if the amount of tax must be included in the base amount for the " +"computation of the next taxes." msgstr "" #. module: account @@ -4655,8 +4810,13 @@ msgstr "" #. module: account #: help:account.tax.template,domain:0 -msgid "This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain." -msgstr "Ce champ est uniquement utilisé si vous développez votre propre module, permettant ainsi aux développeurs de créer des taxes spécifiques dans un domaine spécifique." +msgid "" +"This field is only used if you develop your own module allowing developers " +"to create specific taxes in a custom domain." +msgstr "" +"Ce champ est uniquement utilisé si vous développez votre propre module, " +"permettant ainsi aux développeurs de créer des taxes spécifiques dans un " +"domaine spécifique." #. module: account #: field:account.bank.statement.reconcile,total_amount:0 @@ -4776,7 +4936,7 @@ msgstr "" #: rml:account.analytic.account.cost_ledger:0 #: rml:account.analytic.account.quantity_cost_ledger:0 msgid "/" -msgstr "" +msgstr "/" #. module: account #: model:process.node,note:account.process_node_invoiceinvoice0 @@ -4795,9 +4955,11 @@ msgid "Move line select" msgstr "Déplacer la ligne sélectionnée" #. module: account -#, python-format #: code:addons/account/invoice.py:0 -msgid "Please verify the price of the invoice !\nThe real total does not match the computed total." +#, python-format +msgid "" +"Please verify the price of the invoice !\n" +"The real total does not match the computed total." msgstr "" #. module: account @@ -4819,7 +4981,7 @@ msgstr "Clôturer l'année fiscale" #. module: account #: field:account.config.wizard,date1:0 msgid "Starting Date" -msgstr "" +msgstr "Date de début" #. module: account #: view:account.journal:0 @@ -4961,8 +5123,12 @@ msgstr "Annulées" #. module: account #: help:account.account,reconcile:0 -msgid "Check this account if the user can make a reconciliation of the entries in this account." -msgstr "Cochez ce compte si l'utilisateur peut faire une réconciliation des entrées dans ce compte." +msgid "" +"Check this account if the user can make a reconciliation of the entries in " +"this account." +msgstr "" +"Cochez ce compte si l'utilisateur peut faire une réconciliation des entrées " +"dans ce compte." #. module: account #: view:res.partner:0 @@ -5031,9 +5197,10 @@ msgid "Financial Management" msgstr "Finance/Comptabilité" #. module: account -#, python-format #: code:addons/account/wizard/wizard_validate_account_move.py:0 -msgid "Selected Move lines does not have any account move enties in draft state" +#, python-format +msgid "" +"Selected Move lines does not have any account move enties in draft state" msgstr "" #. module: account @@ -5164,8 +5331,12 @@ msgstr "" #. module: account #: help:account.account.template,reconcile:0 -msgid "Check this option if the user can make a reconciliation of the entries in this account." -msgstr "Cochez cette option si l'utilisateur a le droit de réconcilier les entrées de ce compte." +msgid "" +"Check this option if the user can make a reconciliation of the entries in " +"this account." +msgstr "" +"Cochez cette option si l'utilisateur a le droit de réconcilier les entrées " +"de ce compte." #. module: account #: view:account.invoice:0 @@ -5197,16 +5368,16 @@ msgid "Analytic account costs and revenues" msgstr "Compte analytique coûts et revenus" #. module: account -#, python-format #: code:addons/account/account_move_line.py:0 +#, python-format msgid "Bad account !" msgstr "" #. module: account -#, python-format #: code:addons/account/account_move_line.py:0 #: code:addons/account/account.py:0 #: code:addons/account/wizard/wizard_open_closed_fiscalyear.py:0 +#, python-format msgid "Error" msgstr "" @@ -5230,7 +5401,7 @@ msgstr "Détails de banque" #. module: account #: model:ir.actions.report.xml,name:account.account_general_journal msgid "General Journal" -msgstr "" +msgstr "Journal Général" #. module: account #: wizard_button:account.account.balance.report,account_selection,checktype:0 @@ -5239,8 +5410,8 @@ msgid "Next" msgstr "" #. module: account -#, python-format #: code:addons/account/invoice.py:0 +#, python-format msgid "Taxes missing !" msgstr "" @@ -5260,9 +5431,9 @@ msgid "Invoice Tax" msgstr "Taxe" #. module: account -#, python-format #: code:addons/account/invoice.py:0 #: code:addons/account/account_move_line.py:0 +#, python-format msgid "No piece number !" msgstr "" @@ -5305,8 +5476,8 @@ msgid "Total amount you have to pay to this supplier." msgstr "" #. module: account -#, python-format #: code:addons/account/account.py:0 +#, python-format msgid "No sequence defined in the journal !" msgstr "" @@ -5398,8 +5569,12 @@ msgstr "Année fiscale à clôturer" #. module: account #: help:product.template,property_account_expense:0 -msgid "This account will be used, instead of the default one, to value outgoing stock for the current product" -msgstr "Ce compte sera utilisé, au lieu de celui par defaut, pour valoriser le stock sortant pour le produit courant" +msgid "" +"This account will be used, instead of the default one, to value outgoing " +"stock for the current product" +msgstr "" +"Ce compte sera utilisé, au lieu de celui par defaut, pour valoriser le stock " +"sortant pour le produit courant" #. module: account #: field:account.model,name:0 @@ -5407,21 +5582,25 @@ msgid "Model Name" msgstr "Nom du modèle" #. module: account -#, python-format #: code:addons/account/invoice.py:0 +#, python-format msgid "Cannot delete invoice(s) which are already opened or paid !" msgstr "" #. module: account -#, python-format #: code:addons/account/invoice.py:0 +#, python-format msgid "Can not create invoice move on centralized journal" msgstr "" #. module: account #: help:res.partner,property_account_receivable:0 -msgid "This account will be used, instead of the default one, as the receivable account for the current partner" -msgstr "Ce compte sera utilisé, au lieu de celui par defaut, en tant que compte de créance pour le partenaire courant" +msgid "" +"This account will be used, instead of the default one, as the receivable " +"account for the current partner" +msgstr "" +"Ce compte sera utilisé, au lieu de celui par defaut, en tant que compte de " +"créance pour le partenaire courant" #. module: account #: model:ir.ui.menu,name:account.account_template_folder @@ -5526,10 +5705,14 @@ msgid "Ref." msgstr "Référence" #. module: account -#, python-format #: code:addons/account/invoice.py:0 #: code:addons/account/account_move_line.py:0 -msgid "Can not create an automatic sequence for this piece !\n\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece." +#, python-format +msgid "" +"Can not create an automatic sequence for this piece !\n" +"\n" +"Put a sequence in the journal definition for automatic numbering or create a " +"sequence manually for this piece." msgstr "" #. module: account @@ -5554,8 +5737,8 @@ msgid "Customer" msgstr "Client" #. module: account -#, python-format #: code:addons/account/wizard/wizard_pay_invoice.py:0 +#, python-format msgid "Can not pay draft invoice." msgstr "" @@ -5588,7 +5771,8 @@ msgstr "" #: help:account.account,currency_id:0 #: help:account.account.template,currency_id:0 msgid "Force all moves for this account to have this secondary currency." -msgstr "Force tout les mouvements pour ce compte à avoir cette devise secondaire." +msgstr "" +"Force tout les mouvements pour ce compte à avoir cette devise secondaire." #. module: account #: wizard_view:account.general.ledger.report,checktype:0 diff --git a/addons/board/i18n/fr_FR.po b/addons/board/i18n/fr_FR.po index 67df6b2ad3b..bba9d53e664 100644 --- a/addons/board/i18n/fr_FR.po +++ b/addons/board/i18n/fr_FR.po @@ -10,10 +10,12 @@ msgstr "" "PO-Revision-Date: 2008-11-28 16:57:27+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Last-Translator: Olivier Laurent \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2008-12-16 11:02+0000\n" +"X-Generator: Launchpad (build Unknown)\n" #. module: board #: constraint:ir.model:0 @@ -95,7 +97,7 @@ msgstr "Créer un Menu pour le Tableau de Bord" #. module: board #: constraint:ir.ui.view:0 msgid "Invalid XML for View Architecture!" -msgstr "XML non valide pour l'architecture de la vue" +msgstr "XML non valide pour l'architecture de la vue!" #. module: board #: wizard_field:board.board.menu.create,init,menu_parent_id:0 @@ -204,4 +206,3 @@ msgstr "Créer le menu" #: field:board.note,name:0 msgid "Subject" msgstr "Sujet" - From 2b2c7e256b4b6c6d77333ae833838bc6aa4609f7 Mon Sep 17 00:00:00 2001 From: Olivier Laurent Date: Tue, 16 Dec 2008 17:23:57 +0100 Subject: [PATCH 14/29] Too much arguments to 'sale.order.write' bzr revid: olt@tinyerp.com-20081216162357-zylisiph3c21blfv --- addons/point_of_sale/report/pos_invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_of_sale/report/pos_invoice.py b/addons/point_of_sale/report/pos_invoice.py index e7c39ba9ef0..6c9dc757545 100644 --- a/addons/point_of_sale/report/pos_invoice.py +++ b/addons/point_of_sale/report/pos_invoice.py @@ -39,7 +39,7 @@ class pos_invoice(report_sxw.rml_parse): nids = [] for order in objects: - order.write(self.cr, self.uid, [order.id], {'nb_print': order.nb_print + 1}) + order.write({'nb_print': order.nb_print + 1}) if order.invoice_id and order.invoice_id not in iids: if not order.invoice_id: From 02694646b6146abfbee2e64a5750189550ec12ce Mon Sep 17 00:00:00 2001 From: qdp Date: Tue, 16 Dec 2008 18:20:15 +0100 Subject: [PATCH 15/29] *improvements of base_module_quality: *defined generic framework, use of inheritance, ... *restructured *added config file of pylint *added speed_test (to be continued) *removed unecessary files bzr revid: qdp@tinyerp.com-20081216172015-4o856cgffpytl9ru --- addons/base_module_quality/README.txt | 11 + addons/base_module_quality/__terp__.py | 10 +- .../base_module_quality.py | 11 +- .../pylint_test/__init__.py | 2 +- .../pylint_test/pylint_test.py | 34 +- .../pylint_test/pylint_test_config.txt | 308 ++++++++++++++++++ .../pylint_test => speed_test}/__init__.py | 3 +- .../speed_test/speed_test.py | 48 +++ .../wizard/module_quality_check.py | 65 ++-- .../wizard/pylint_test/pylint_test.py | 83 ----- 10 files changed, 410 insertions(+), 165 deletions(-) create mode 100644 addons/base_module_quality/README.txt create mode 100644 addons/base_module_quality/pylint_test/pylint_test_config.txt rename addons/base_module_quality/{wizard/pylint_test => speed_test}/__init__.py (98%) create mode 100644 addons/base_module_quality/speed_test/speed_test.py delete mode 100644 addons/base_module_quality/wizard/pylint_test/pylint_test.py diff --git a/addons/base_module_quality/README.txt b/addons/base_module_quality/README.txt new file mode 100644 index 00000000000..3819448c9c1 --- /dev/null +++ b/addons/base_module_quality/README.txt @@ -0,0 +1,11 @@ +This module provide a generic framework to define your own quality test. + + +All you have to do is to: +* create a folder with your test in 'base_module_quality' (e.g: mkdir base_module_quality\mytest) +* create a .py file in it with same name as the folder you just created (e.g: touch base_module_quality\mytest\mytest.py) +* edit your file and define a class 'quality_check' that + * inherits the class 'abstract_quality_test' (defined in base_module_quality.py) + * implements the __init__() method accordingly to what you want to test. + + diff --git a/addons/base_module_quality/__terp__.py b/addons/base_module_quality/__terp__.py index f80077e2b94..4a4d5b9fc60 100644 --- a/addons/base_module_quality/__terp__.py +++ b/addons/base_module_quality/__terp__.py @@ -24,7 +24,15 @@ "author" : "Tiny", "version" : "1.0", "depends" : ["base",], - "description": "Sample module to check the quality", + "description": """" +This module's aim is to check the quality of other modules. + + It defines a wizard on the list of modules in OpenERP, which allow you to evaluate them on different critera such as: the respect of OpenERP coding standards, the speed efficency... + + + This module also provide generic framework to define your own quality test. For further info, coders may take a look into base_module_quality\README.txt + +""", "init_xml" : [], "update_xml" : ["base_module_quality_wizard.xml"], "category" : "Tiny Specific Modules/Base module quality", diff --git a/addons/base_module_quality/base_module_quality.py b/addons/base_module_quality/base_module_quality.py index 2a49f301b87..13b9de20ce4 100644 --- a/addons/base_module_quality/base_module_quality.py +++ b/addons/base_module_quality/base_module_quality.py @@ -23,7 +23,7 @@ import netsvc from osv import fields, osv -class quality_check(object): +class abstract_quality_check(object): ''' This Class provide... ''' @@ -38,15 +38,6 @@ class quality_check(object): ''' raise 'Not Implemented' - #~ def __get_result__(self, cr, uid, module_ids): - #~ ''' - #~ ''' - #~ return _result - - #~ def __get_detailed_result__(self, cr, uid, module_ids): - #~ ''' - #~ ''' - #~ return _result_details # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_module_quality/pylint_test/__init__.py b/addons/base_module_quality/pylint_test/__init__.py index 00dce4b7e0b..10b090b0edd 100644 --- a/addons/base_module_quality/pylint_test/__init__.py +++ b/addons/base_module_quality/pylint_test/__init__.py @@ -20,7 +20,7 @@ # ############################################################################## -import pylint_test +#import pylint_test # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_module_quality/pylint_test/pylint_test.py b/addons/base_module_quality/pylint_test/pylint_test.py index c31a5c6599d..1d46830f646 100644 --- a/addons/base_module_quality/pylint_test/pylint_test.py +++ b/addons/base_module_quality/pylint_test/pylint_test.py @@ -23,36 +23,12 @@ import netsvc from osv import fields, osv import os +from tools import config + from base_module_quality import base_module_quality -#~ class _test_pylint(quality_check): - #~ def __init__(self, url, add_folder=None): - #~ print "dans le test" - #~ list_files = os.listdir(url) - #~ new_list = [] - #~ subfolder = {} - #~ for i in list_files: - #~ if os.path.isdir(i): - #~ path = os.path.join(url, i) - #~ new_list.append(os.listdir(path)) - #~ res = _test_pylint(self, path, add_folder=i) - #~ subfolder.update(res) - #~ dict_files = {} - #~ for file in list_files: - #~ if file.split('.')[-1] == 'py' and not file.startswith('__init__'): - #~ file_path = os.path.join(url, file) - #~ res = os.popen('pylint '+file_path+' | tail -4').read() - #~ if res.startswith('Global'): - #~ if add_folder: - #~ dict_files[add_folder + '/' + file] = res - #~ else: - #~ dict_files[file] = res - #~ dict_files.update(subfolder) - #~ print "dict_files", dict_files - #~ return dict_files - -class _test_pylint(base_module_quality.quality_check): +class quality_test(base_module_quality.abstract_quality_check): def __init__(self, module_path): self._result = """ @@ -63,6 +39,7 @@ Pylint Test: """ + config_file_path = config['addons_path']+'/base_module_quality/pylint_test/pylint_test_config.txt' list_files = os.listdir(module_path) new_list = [] subfolder = {} @@ -78,9 +55,8 @@ Pylint Test: print list_files for file in list_files: if file.split('.')[-1] == 'py' and not file.endswith('__init__.py') and not file.endswith('__terp__.py'): -#--rcfile= Specify a configuration file. file_path = os.path.join(module_path, file) - res = os.popen('pylint --persistent=n '+file_path).read() + res = os.popen('pylint --rcfile='+config_file_path+' '+file_path).read() n += 1 leftchar = -1 while res[leftchar:leftchar+1] != ' ' and leftchar-1 <= 0: diff --git a/addons/base_module_quality/pylint_test/pylint_test_config.txt b/addons/base_module_quality/pylint_test/pylint_test_config.txt new file mode 100644 index 00000000000..db975430f08 --- /dev/null +++ b/addons/base_module_quality/pylint_test/pylint_test_config.txt @@ -0,0 +1,308 @@ +# lint Python modules using external checkers. +# +# This is the main checker controling the other ones and the reports +# generation. It is itself both a raw checker and an astng checker in order +# to: +# * handle message activation / deactivation at the module level +# * handle some basic but necessary stats'data (number of classes, methods...) +# +[MASTER] + +# Specify a configuration file. +#rcfile= + +# Profiled execution. +profile=no + +# Add to the black list. It should be a base name, not a +# path. You may set this option multiple times. +ignore=CVS + +# Pickle collected data for later comparisons. +persistent=no + +# Set the cache size for astng objects. +cache-size=500 + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +load-plugins= + + +[COMMANDS] + +# Display a help message for the given message id and exit. The value may be a +# comma separated list of message ids. +#help-msg= + + +[MESSAGES CONTROL] + +# Enable only checker(s) with the given id(s). This option conflict with the +# disable-checker option +#enable-checker= + +# Enable all checker(s) except those with the given id(s). This option conflict +# with the disable-checker option +#disable-checker= + +# Enable all messages in the listed categories. +#enable-msg-cat= + +# Disable all messages in the listed categories. +#disable-msg-cat= + +# Enable the message(s) with the given id(s). +#enable-msg= + +# Disable the message(s) with the given id(s). +#disable-msg= + + +[REPORTS] + +# set the output format. Available formats are text, parseable, colorized and +# html +output-format=text + +# Include message's id in output +include-ids=no + +# Put messages in a separate file for each module / package specified on the +# command line instead of printing them on stdout. Reports (if any) will be +# written in a file name "pylint_global.[txt|html]". +files-output=no + +# Tells wether to display a full report or only the messages +reports=yes + +# Python expression which should return a note less than 10 (10 is the highest +# note).You have access to the variables errors warning, statement which +# respectivly contain the number of errors / warnings messages and the total +# number of statements analyzed. This is used by the global evaluation report +# (R0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Add a comment according to your evaluation note. This is used by the global +# evaluation report (R0004). +comment=no + +# Enable the report(s) with the given id(s). +#enable-report= + +# Disable the report(s) with the given id(s). +#disable-report= + + +# checks for +# * unused variables / imports +# * undefined variables +# * redefinition of variable from builtins or from an outer scope +# * use of variable before assigment +# +[VARIABLES] + +# Tells wether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching names used for dummy variables (i.e. not used). +dummy-variables-rgx=_|dummy + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid to define new builtins when possible. +additional-builtins= + + +# try to find bugs in the code using type inference +# +[TYPECHECK] + +# Tells wether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# When zope mode is activated, consider the acquired-members option to ignore +# access to some undefined attributes. +zope=no + +# List of members which are usually get through zope's acquisition mecanism and +# so shouldn't trigger E0201 when accessed (need zope=yes to be considered). +acquired-members=REQUEST,acl_users,aq_parent + + +# checks for : +# * doc strings +# * modules / classes / functions / methods / arguments / variables name +# * number of arguments, local variables, branchs, returns and statements in +# functions, methods +# * required module attributes +# * dangerous default values as arguments +# * redefinition of function / method / class +# * uses of the global statement +# +[BASIC] + +# Required attributes for module, separated by a comma +required-attributes= + +# Regular expression which should only match functions or classes name which do +# not require a docstring +no-docstring-rgx=__.*__ + +# Regular expression which should only match correct module names +module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Regular expression which should only match correct module level names +const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__))$ + +# Regular expression which should only match correct class names +class-rgx=[A-Z_][a-zA-Z0-9]+$ + +# Regular expression which should only match correct function names +function-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct method names +method-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct instance attribute names +attr-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct argument names +argument-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct variable names +variable-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct list comprehension / +# generator expression variable names +inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma +good-names=i,j,k,ex,Run,_ + +# Bad variable names which should always be refused, separated by a comma +bad-names=foo,bar,baz,toto,tutu,tata + +# List of builtins function names that should not be used, separated by a comma +bad-functions=map,filter,apply,input + + +# checks for +# * external modules dependencies +# * relative / wildcard imports +# * cyclic imports +# * uses of deprecated modules +# +[IMPORTS] + +# Deprecated modules which should not be used, separated by a comma +deprecated-modules=regsub,string,TERMIOS,Bastion,rexec + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report R0402 must not be disabled) +import-graph= + +# Create a graph of external dependencies in the given file (report R0402 must +# not be disabled) +ext-import-graph= + +# Create a graph of internal dependencies in the given file (report R0402 must +# not be disabled) +int-import-graph= + + +# checks for : +# * methods without self as first argument +# * overridden methods signature +# * access only to existant members via self +# * attributes not defined in the __init__ method +# * supported interfaces implementation +# * unreachable code +# +[CLASSES] + +# List of interface methods to ignore, separated by a comma. This is used for +# instance to not check methods defines in Zope's Interface base class. +ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__,__new__,setUp + + +# checks for sign of poor/misdesign: +# * number of methods, attributes, local variables... +# * size, complexity of functions, methods +# +[DESIGN] + +# Maximum number of arguments for function / method +max-args=5 + +# Maximum number of locals for function / method body +max-locals=15 + +# Maximum number of return / yield for function / method body +max-returns=6 + +# Maximum number of branch for function / method body +max-branchs=12 + +# Maximum number of statements in function / method body +max-statements=50 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + + +# checks for : +# * unauthorized constructions +# * strict indentation +# * line length +# * use of <> instead of != +# +[FORMAT] + +# Maximum number of characters on a single line. +max-line-length=80 + +# Maximum number of lines in a module +max-module-lines=1000 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + + +# checks for similarities and duplicated code. This computation may be +# memory / CPU intensive, so you should disable it if you experiments some +# problems. +# +[SIMILARITIES] + +# Minimum lines number of a similarity. +min-similarity-lines=4 + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + + +# checks for: +# * warning notes in the code like FIXME, XXX +# * PEP 263: source code with non ascii character but no encoding declaration +# +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME,XXX,TODO diff --git a/addons/base_module_quality/wizard/pylint_test/__init__.py b/addons/base_module_quality/speed_test/__init__.py similarity index 98% rename from addons/base_module_quality/wizard/pylint_test/__init__.py rename to addons/base_module_quality/speed_test/__init__.py index 79bc02a75a6..79850888f41 100644 --- a/addons/base_module_quality/wizard/pylint_test/__init__.py +++ b/addons/base_module_quality/speed_test/__init__.py @@ -20,6 +20,5 @@ # ############################################################################## -import pylint_test -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_module_quality/speed_test/speed_test.py b/addons/base_module_quality/speed_test/speed_test.py new file mode 100644 index 00000000000..ca9a93b09f7 --- /dev/null +++ b/addons/base_module_quality/speed_test/speed_test.py @@ -0,0 +1,48 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +import netsvc +from osv import fields, osv +import os +from tools import config + +from base_module_quality import base_module_quality + + +class quality_test(base_module_quality.abstract_quality_check): + + def __init__(self, module_path): + self._result = """ +Speed Test: +------------ + + This test checks the speed of the module + + + to be continued... + +""" + return None + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: + diff --git a/addons/base_module_quality/wizard/module_quality_check.py b/addons/base_module_quality/wizard/module_quality_check.py index 0e606a70f8e..61cc031261a 100644 --- a/addons/base_module_quality/wizard/module_quality_check.py +++ b/addons/base_module_quality/wizard/module_quality_check.py @@ -27,21 +27,20 @@ import netsvc import sys import tools import os -import pylint -import base_module_quality -form_check = ''' -
- -''' -fields_check = { - 'test': { - 'string':'Tests', 'type':'selection', 'required':True, - 'selection': [('pylint', 'Pylint'), ('othertest','other')], - 'default': lambda *args: 'pylint' - }, - } +#~ form_check = ''' +#~
+ #~ +#~ ''' + +#~ fields_check = { + #~ 'test': { + #~ 'string':'Tests', 'type':'selection', 'required':True, + #~ 'selection': [('pylint', 'Pylint'), ('othertest','other')], + #~ 'default': lambda *args: 'pylint' + #~ }, + #~ } view_form = """
@@ -69,46 +68,34 @@ class wiz_quality_check(wizard.interface): from tools import config list_folders=os.listdir(config['addons_path']+'/base_module_quality/') for item in list_folders: - path = config['addons_path']+'/base_module_quality/wizard/'+item + path = config['addons_path']+'/base_module_quality/'+item if os.path.exists(path+'/'+item+'.py') and item not in ['report','wizard', 'security']: pool=pooler.get_pool(cr.dbname) module_data = pool.get('ir.module.module').browse(cr, uid, data['ids']) ad = tools.config['addons_path'] module_path = os.path.join(ad, module_data[0].name) - #import pylint_test - item='base_module_quality.'+item - x = __import__(item) - val = x.__init__(str(module_path)) - print "VALL",x._result + + from base_module_quality import base_module_quality + + item2='base_module_quality.'+item+'.'+item + x = __import__(item2) + x2 = getattr(x,item) + x3 = getattr(x2,item) + val = x3.quality_test(str(module_path)) + string_ret += val._result return {'general_info':string_ret} - #mra version - #~ result = pylint_test._test_pylint(self, url) - #~ string_ret = '' - #~ for i in result: - #~ string_ret = string_ret + i + ':\n' + result[i] - #~ string_ret = "" - #~ if data['form']['test'] == 'pylint': - #~ pool=pooler.get_pool(cr.dbname) - #~ module_data = pool.get('ir.module.module').browse(cr, uid, data['ids']) - #~ from pylint_test import pylint_test - #~ ad = tools.config['addons_path'] - #~ url = os.path.join(ad, module_data[0].name) - #~ result = pylint_test._test_pylint(self, url) - #~ string_ret = '' - #~ for i in result: - #~ string_ret = string_ret + i + ':\n' + result[i] states = { + #~ 'init': { + #~ 'actions': [], + #~ 'result': {'type':'form', 'arch':form_check, 'fields':fields_check, 'state':[('end','Cancel'),('do','Do Test')]} + #~ }, 'init': { - 'actions': [], - 'result': {'type':'form', 'arch':form_check, 'fields':fields_check, 'state':[('end','Cancel'),('do','Do Test')]} - }, - 'do': { 'actions': [_check], 'result': {'type':'form', 'arch':view_form, 'fields':view_field, 'state':[('end','Ok')]}, }, diff --git a/addons/base_module_quality/wizard/pylint_test/pylint_test.py b/addons/base_module_quality/wizard/pylint_test/pylint_test.py deleted file mode 100644 index 6e80e136865..00000000000 --- a/addons/base_module_quality/wizard/pylint_test/pylint_test.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved -# $Id$ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## - -import netsvc -from osv import fields, osv -import os - - - -class _test_pylint(quality_check): - - def __init__(self, url, add_folder=None): - print "dans le test" - list_files = os.listdir(url) - new_list = [] - subfolder = {} - for i in list_files: - if os.path.isdir(i): - path = os.path.join(url, i) - new_list.append(os.listdir(path)) - res = _test_pylint(self, path, add_folder=i) - subfolder.update(res) - dict_files = {} - for file in list_files: - if file.split('.')[-1] == 'py' and not file.startswith('__init__'): - file_path = os.path.join(url, file) - res = os.popen('pylint '+file_path+' | tail -4').read() - if res.startswith('Global'): - if add_folder: - dict_files[add_folder + '/' + file] = res - else: - dict_files[file] = res - dict_files.update(subfolder) - print "dict_files", dict_files - return dict_files - -_test_pylint() - - -#~ def _test_pylint(self, url, add_folder=None): - #~ list_files = os.listdir(url) - #~ new_list = [] - #~ subfolder = {} - #~ for i in list_files: - #~ if os.path.isdir(i): - #~ path = os.path.join(url, i) - #~ new_list.append(os.listdir(path)) - #~ res = _test_pylint(self, path, add_folder=i) - #~ subfolder.update(res) - #~ dict_files = {} - #~ for file in list_files: - #~ if file.split('.')[-1] == 'py' and not file.startswith('__init__'): - #~ file_path = os.path.join(url, file) - #~ res = os.popen('pylint '+file_path+' | tail -4').read() - #~ if res.startswith('Global'): - #~ if add_folder: - #~ dict_files[add_folder + '/' + file] = res - #~ else: - #~ dict_files[file] = res - #~ dict_files.update(subfolder) - #~ return dict_files - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - From 4f6843602a7852da55ccc40520fcc9fc8e923c58 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Tue, 16 Dec 2008 18:39:57 +0100 Subject: [PATCH 16/29] [FIX] %f -> %d lp bug: https://launchpad.net/bugs/308565 fixed bzr revid: christophe@cobalt-20081216173957-ihzvv05kgs1ons1h --- addons/project/project.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/project/project.py b/addons/project/project.py index 41e6750ecc3..b7779bb3520 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -410,17 +410,17 @@ class project_work(osv.osv): _order = "date desc" def create(self, cr, uid, vals, *args, **kwargs): if 'task_id' in vals: - cr.execute('update project_task set remaining_hours=remaining_hours+%.2f where id=%s', (-vals.get('hours',0.0), vals['task_id'])) + cr.execute('update project_task set remaining_hours=remaining_hours - %s where id=%s', (vals.get('hours',0.0), vals['task_id'])) return super(project_work,self).create(cr, uid, vals, *args, **kwargs) def write(self, cr, uid, ids,vals,context={}): for work in self.browse(cr, uid, ids, context): - cr.execute('update project_task set remaining_hours=remaining_hours+%.2f+(%.2f) where id=%s', (-vals.get('hours',0.0), work.hours, work.task_id.id)) + cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (vals.get('hours',0.0), work.hours, work.task_id.id)) return super(project_work,self).write(cr, uid, ids, vals, context) def unlink(self, cr, uid, ids, *args, **kwargs): for work in self.browse(cr, uid, ids): - cr.execute('update project_task set remaining_hours=remaining_hours+%.2f where id=%s', (work.hours, work.task_id.id)) + cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (work.hours, work.task_id.id)) return super(project_work,self).unlink(cr, uid, ids,*args, **kwargs) project_work() From 501b64709292acc51e814900b09595b4dffaeca9 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 18:56:16 +0100 Subject: [PATCH 17/29] bugfix bzr revid: fp@tinyerp.com-20081216175616-ccurcu9aochczo0d --- addons/account/account_view.xml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 319431615f7..357fcf7c566 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -902,10 +902,11 @@ - Entry lines + Entry Lines ir.actions.act_window account.move.line form + tree @@ -914,13 +915,6 @@ - - - form - - - - From 6d4c48770bc83a11ace426a71624d0ea439a5a17 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 16 Dec 2008 20:15:43 +0100 Subject: [PATCH 18/29] [FIX] SQL Query lp bug: https://launchpad.net/bugs/308643 fixed bzr revid: stephane@tinyerp.com-20081216191543-l4fq5ih5efyew521 --- addons/account_budget/crossovered_budget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account_budget/crossovered_budget.py b/addons/account_budget/crossovered_budget.py index c8ebaccf49b..752e8c82694 100644 --- a/addons/account_budget/crossovered_budget.py +++ b/addons/account_budget/crossovered_budget.py @@ -168,7 +168,7 @@ class crossovered_budget_lines(osv.osv): date_from = context['wizard_date_from'] if context.has_key('wizard_date_to'): date_to = context['wizard_date_to'] - cr.execute("select sum(amount) from account_analytic_line where account_id=%s and (date between to_date('%s','yyyy-mm-dd') and to_date('%s','yyyy-mm-dd')) and general_account_id in (%s)", (line.analytic_account_id.id,date_from,date_to,acc_ids)) + cr.execute('select sum(amount) from account_analytic_line where account_id=%s and (date between to_date(%s,'yyyy-mm-dd') and to_date(%s,'yyyy-mm-dd')) and general_account_id in (%s)', (line.analytic_account_id.id,date_from,date_to,acc_ids)) result=cr.fetchone()[0] if result==None: result=0.00 From 080ea6a4fde50250b10ad04b040c296b5ae50372 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 20:35:32 +0100 Subject: [PATCH 19/29] bugfix bzr revid: fp@tinyerp.com-20081216193532-rwx7p09vxb1776wm --- addons/purchase/purchase.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index c0c4e5c8dad..514dbba6e4f 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -453,9 +453,10 @@ class purchase_order_line(osv.osv): if partner_id: lang=self.pool.get('res.partner').read(cr, uid, partner_id)['lang'] context={'lang':lang} + context['partner_id'] = partner_id - prod = self.pool.get('product.product').read(cr, uid, product, ['supplier_taxes_id','name','seller_delay','uom_po_id','description_purchase'],context=context) - prod_uom_po = prod['uom_po_id'][0] + prod = self.pool.get('product.product').browse(cr, uid, product, context=context) + prod_uom_po = prod.uom_po_id.id if not uom: uom = prod_uom_po if not date_order: @@ -465,23 +466,32 @@ class purchase_order_line(osv.osv): 'uom': uom, 'date': date_order, })[pricelist] - dt = (DateTime.now() + DateTime.RelativeDateTime(days=prod['seller_delay'] or 0.0)).strftime('%Y-%m-%d %H:%M:%S') - context['partner_id'] = partner_id - prod_name = self.pool.get('product.product').browse(cr, uid,product, context=context).partner_ref + + qty = 1 + seller_delay = 0 + for s in prod.seller_ids: + seller_delay = s.delay + if s.name.id == partner_id: + seller_delay = s.delay + qty = s.qty + dt = (DateTime.now() + DateTime.RelativeDateTime(days=seller_delay or 0.0)).strftime('%Y-%m-%d %H:%M:%S') + prod_name = prod.partner_ref - res = {'value': {'price_unit': price, 'name':prod_name, 'taxes_id':prod['supplier_taxes_id'], 'date_planned': dt,'notes':prod['description_purchase'], 'product_uom': uom}} + res = {'value': {'price_unit': price, 'name':prod_name, 'taxes_id':map(lambda x: x.id, prod.supplier_taxes_id), + 'date_planned': dt,'notes':prod.description_purchase, + 'product_qty': qty, + 'product_uom': uom}} domain = {} partner = self.pool.get('res.partner').browse(cr, uid, partner_id) - taxes = self.pool.get('account.tax').browse(cr, uid,prod['supplier_taxes_id']) + taxes = self.pool.get('account.tax').browse(cr, uid,map(lambda x: x.id, prod.supplier_taxes_id)) res['value']['taxes_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner, taxes) - # res['value']['taxes_id'] = [x.id for x in taxes] res2 = self.pool.get('product.uom').read(cr, uid, [uom], ['category_id']) - res3 = self.pool.get('product.uom').read(cr, uid, [prod_uom_po], ['category_id']) + res3 = prod.uom_id.category_id.id domain = {'product_uom':[('category_id','=',res2[0]['category_id'][0])]} - if res2[0]['category_id'] != res3[0]['category_id']: + if res2[0]['category_id'][0] != res3: raise osv.except_osv(_('Wrong Product UOM !'), _('You have to select a product UOM in the same category than the purchase UOM of the product')) res['domain'] = domain From 61b3faf35867cb6fb03d3164ee4e5f304580fc61 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 20:53:59 +0100 Subject: [PATCH 20/29] bugfix bzr revid: fp@tinyerp.com-20081216195359-xio7v2umkfvfnzwm --- addons/account/account_move_line.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index be15a444ad7..a805f83f64b 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -849,7 +849,6 @@ class account_move_line(osv.osv): if journal.analytic_journal_id: vals['analytic_lines'] = [(0,0, { 'name': vals['name'], - 'currency_id': account.company_id.currency_id.id, 'date': vals.get('date', time.strftime('%Y-%m-%d')), 'account_id': vals['analytic_account_id'], 'unit_amount':'quantity' in vals and vals['quantity'] or 1.0, From 322ed5923216f14b2da06f35df1fb98776a1334c Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 21:20:41 +0100 Subject: [PATCH 21/29] improved_security bzr revid: fp@tinyerp.com-20081216202041-4ti9z2g22unconha --- addons/project/security/ir.model.access.csv | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv index 1fe6bb56123..29d201c4c02 100644 --- a/addons/project/security/ir.model.access.csv +++ b/addons/project/security/ir.model.access.csv @@ -1,9 +1,11 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1 -"access_project_project","project.project","model_project_project","project.group_project_user",1,1,1,1 +"access_project_project","project.project","model_project_project","project.group_project_user",1,0,0,0 "access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,0,0,1 "access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1 "access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1 "access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1 "access_project_task_work","project.task.work","model_project_task_work","project.group_project_user",1,1,1,1 -"access_config_compute_remaining","project.config.compute.remaining","model_config_compute_remaining","project.group_project_manager",1,1,1,1 +"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1 +"access_config_compute_remaining","project.config.compute.remaining","model_config_compute_remaining","project.group_project_user",1,1,1,1 +"access_config_compute_remaining_manager","project.config.compute.remaining.manager","model_config_compute_remaining","project.group_project_manager",1,1,1,1 From 57fffd48012cf44d6f55755b06e76e4703d212b8 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 21:47:32 +0100 Subject: [PATCH 22/29] improved_bugfix bzr revid: fp@tinyerp.com-20081216204732-h1mj7fghpuehb3j8 --- addons/project_timesheet/project_timesheet.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/addons/project_timesheet/project_timesheet.py b/addons/project_timesheet/project_timesheet.py index 7d24e4a1fc0..31db948afa2 100644 --- a/addons/project_timesheet/project_timesheet.py +++ b/addons/project_timesheet/project_timesheet.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -34,6 +34,27 @@ class project_work(osv.osv): vals_line={} obj_task = self.pool.get('project.task').browse(cr, uid, vals['task_id']) + emp_obj = self.pool.get('hr.employee') + emp_id = emp_obj.search(cr, uid, [('user_id', '=', vals.get('user_id',uid))]) + + if not emp_id: + raise osv.except_osv(_('Bad Configuration !'), + _('No employee defined for this user. You must create one.')) + emp = self.pool.get('hr.employee').browse(cr, uid, emp_id[0]) + if not emp.product_id: + raise osv.except_osv(_('Bad Configuration !'), + _('No product defined on the related employee.\nFill in the timesheet tab of the employee form.')) + + if not emp.journal_id: + raise osv.except_osv(_('Bad Configuration !'), + _('No journal defined on the related employee.\nFill in the timesheet tab of the employee form.')) + + a = emp.product_id.product_tmpl_id.property_account_expense.id + if not a: + a = emp.product_id.categ_id.property_account_expense_categ.id + vals_line['general_account_id'] = a + vals_line['journal_id'] = emp.journal_id.id + vals_line['name']=obj_task.name + ': ' + vals['name'] vals_line['user_id']=vals['user_id'] vals_line['date']=vals['date'][:10] @@ -57,7 +78,7 @@ class project_work(osv.osv): if line_id in list_avail_ids: obj = self.pool.get('hr.analytic.timesheet') if 'name' in vals: - vals_line['name']=task.name+': '+vals['name'] + vals_line['name']=task.name+': '+vals['name'] if 'user_id' in vals: vals_line['user_id']=vals['user_id'] if 'date' in vals: From 8dd140674ae53b15648930cf9e99b480442964ab Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 21:57:08 +0100 Subject: [PATCH 23/29] improved_convig_wizard bzr revid: fp@tinyerp.com-20081216205708-djmdunduw5e52pqw --- addons/account/account_view.xml | 1 - addons/crm_configuration/crm_config_view.xml | 1 - addons/document/document_view.xml | 1 - addons/l10n_be/l10n_be_wizard.xml | 1 - addons/l10n_fr/fr_wizard.xml | 1 - addons/l10n_lu/l10n_lu_wizard.xml | 1 - addons/profile_accounting/profile_accounting.xml | 1 - addons/profile_association/profile_association.xml | 1 - addons/profile_manufacturing/profile_manufacturing.xml | 1 - addons/profile_service/profile_service.xml | 1 - addons/sale/sale_view.xml | 1 - 11 files changed, 11 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 357fcf7c566..02ad8648b95 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -1410,7 +1410,6 @@ Account Configure Wizard Define Fiscal Years and Select Charts of Account - open diff --git a/addons/crm_configuration/crm_config_view.xml b/addons/crm_configuration/crm_config_view.xml index 7801e341e0f..eda2fe3d2e3 100644 --- a/addons/crm_configuration/crm_config_view.xml +++ b/addons/crm_configuration/crm_config_view.xml @@ -47,7 +47,6 @@ Create Menu for CRM Case Section This Configuration step use to create Menu for Case Sections - open diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 7aba2d56431..3ee3489d81b 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -275,7 +275,6 @@ Auto Configure Directory This wizard will be configure directory for ressource model. - open diff --git a/addons/l10n_be/l10n_be_wizard.xml b/addons/l10n_be/l10n_be_wizard.xml index 36c8d4768b4..e4b5a6d6fd9 100644 --- a/addons/l10n_be/l10n_be_wizard.xml +++ b/addons/l10n_be/l10n_be_wizard.xml @@ -31,7 +31,6 @@ Generate Chart of Accounts from a Chart Template. You will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated. This is the same wizard that runs from Financial Managament/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. - open diff --git a/addons/l10n_fr/fr_wizard.xml b/addons/l10n_fr/fr_wizard.xml index 8af3bae7902..b656642deb9 100755 --- a/addons/l10n_fr/fr_wizard.xml +++ b/addons/l10n_fr/fr_wizard.xml @@ -11,7 +11,6 @@ Generate Chart of Accounts from a Chart Template. You will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated. This is the same wizard that runs from Financial Managament/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. - open diff --git a/addons/l10n_lu/l10n_lu_wizard.xml b/addons/l10n_lu/l10n_lu_wizard.xml index d8942ab65cc..bb7da6a631f 100644 --- a/addons/l10n_lu/l10n_lu_wizard.xml +++ b/addons/l10n_lu/l10n_lu_wizard.xml @@ -7,7 +7,6 @@ Generate Chart of Accounts from a Chart Template. You will be asked to select the company, the chart template, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated. This is the same wizard that runs from Financial Managament/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. - open Accounting Profile : Install Extra modules Install more modules. A few modules are proposed according to the Account Profile you selected. You will be able to install them based on our requirements. - open diff --git a/addons/profile_association/profile_association.xml b/addons/profile_association/profile_association.xml index 1a36c652559..6640f2a9f14 100644 --- a/addons/profile_association/profile_association.xml +++ b/addons/profile_association/profile_association.xml @@ -40,7 +40,6 @@ Association Profile : Install Extra modules Install more modules. A few modules are proposed according to the association profile you selected. You will be able to install them based on our requirements. - open diff --git a/addons/profile_manufacturing/profile_manufacturing.xml b/addons/profile_manufacturing/profile_manufacturing.xml index 4122b720695..b20d9fdfe96 100644 --- a/addons/profile_manufacturing/profile_manufacturing.xml +++ b/addons/profile_manufacturing/profile_manufacturing.xml @@ -46,7 +46,6 @@ Manufacturing Profile: Install Extra modules Install more modules. A few modules are proposed according to the manufacturing profile you selected. You will be able to install them based on our requirements. - open diff --git a/addons/profile_service/profile_service.xml b/addons/profile_service/profile_service.xml index f94d7cb3114..e1533ead011 100644 --- a/addons/profile_service/profile_service.xml +++ b/addons/profile_service/profile_service.xml @@ -48,7 +48,6 @@ Service Profile : Install Extra modules A few modules are proposed according to the 'service profile' you selected. You will be able to install them or more modules later through the Administration menu. - open diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 03f03ae99cf..4c4c5eebb39 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -491,7 +491,6 @@ Select the default picking policy for Sale Order This Configuration step use to set default picking policy when make sale order - open From 87fe997725f874b97d09a62e5d68c2052c924f04 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 16 Dec 2008 22:00:07 +0100 Subject: [PATCH 24/29] removed_report bzr revid: fp@tinyerp.com-20081216210007-cq9h1znzouw5scvf --- addons/project/project_report.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/project/project_report.xml b/addons/project/project_report.xml index 5aa92c011fd..c3b681cdd8b 100644 --- a/addons/project/project_report.xml +++ b/addons/project/project_report.xml @@ -4,6 +4,5 @@ - From dbd8f1478e6cf971b305d34e5a84ac0fe70b0b09 Mon Sep 17 00:00:00 2001 From: Jay Vora Date: Wed, 17 Dec 2008 11:14:27 +0530 Subject: [PATCH 25/29] bugfixed the Store_set problem on unlink: Ref Fabien Pinckaers bzr revid: jvo@tinyerp.com-20081217054427-d05z1t1970jc5hkw --- bin/osv/fields.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/osv/fields.py b/bin/osv/fields.py index d528c5ef90a..7920db763f2 100644 --- a/bin/osv/fields.py +++ b/bin/osv/fields.py @@ -426,7 +426,7 @@ class one2many(_column): context = {} if not values: return - print obj, id, field, values + _table = obj.pool.get(self._obj)._table obj = obj.pool.get(self._obj) for act in values: @@ -634,7 +634,6 @@ class function(_column): return res def set(self, cr, obj, id, name, value, user=None, context=None): - print obj,name,value if not context: context = {} if self._fnct_inv: @@ -693,9 +692,11 @@ class related(function): self._field_get2(cr, uid, obj, context) if not ids: return {} relation = obj._name - res = {} + res = {}.fromkeys(ids, False) objlst = obj.browse(cr, uid, ids) for data in objlst: + if not data: + continue t_data = data relation = obj._name for i in range(len(self.arg)): From 985b7f8c1d7e91bbd27317414dccd0b6a4d81931 Mon Sep 17 00:00:00 2001 From: Jay Vora Date: Wed, 17 Dec 2008 11:50:07 +0530 Subject: [PATCH 26/29] Bugfix:Drop DB bzr revid: jvo@tinyerp.com-20081217062007-ic0cbclkn602ewtt --- bin/sql_db.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/sql_db.py b/bin/sql_db.py index eef2a52e92b..3c348bcf010 100644 --- a/bin/sql_db.py +++ b/bin/sql_db.py @@ -222,6 +222,7 @@ class PoolManager(object): def close(db_name): if db_name in PoolManager._pools: + logger = netsvc.Logger() logger.notifyChannel('dbpool', netsvc.LOG_INFO, 'Closing all connections to %s' % (db_name,)) PoolManager._pools[db_name].closeall() del PoolManager._pools[db_name] From a3df22e53c08932be74bc369104d201644bf6f4e Mon Sep 17 00:00:00 2001 From: Jay Vora Date: Wed, 17 Dec 2008 14:33:22 +0530 Subject: [PATCH 27/29] Added VPANED tag acceptance in RelaxNG bzr revid: jvo@tinyerp.com-20081217090322-7aa33o0ydlgm795b --- bin/addons/base/rng/view.rng | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bin/addons/base/rng/view.rng b/bin/addons/base/rng/view.rng index 01a05bd47dc..ba3db149eaf 100644 --- a/bin/addons/base/rng/view.rng +++ b/bin/addons/base/rng/view.rng @@ -19,6 +19,7 @@ + @@ -101,6 +102,15 @@ + + + + + + + + + @@ -134,6 +144,8 @@ + + From 813cbfd451868a737e02624b467b7024cf926337 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 17 Dec 2008 10:42:22 +0100 Subject: [PATCH 28/29] [FIX] typo bzr revid: christophe@cobalt-20081217094222-rmufmadgzh9egpcl --- bin/addons/base/module/module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/addons/base/module/module.py b/bin/addons/base/module/module.py index 376e80450f9..e680eff0451 100644 --- a/bin/addons/base/module/module.py +++ b/bin/addons/base/module/module.py @@ -461,7 +461,7 @@ class module(osv.osv): for lang in filter_lang: f = os.path.join(tools.config['addons_path'], mod.name, 'i18n', lang + '.po') if os.path.exists(f): - logger.notifyChannel("init", netsvc.LOG_INFO, 'addon %s: loading translation file for language %s' % (mod.name, lang)) + logger.notifyChannel("init", netsvc.LOG_INFO, 'module %s: loading translation file for language %s' % (mod.name, lang)) tools.trans_load(cr.dbname, f, lang, verbose=False) module() From 71b1e392f4fdf47c6086fb3d47986682d6fede9d Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 17 Dec 2008 12:21:54 +0100 Subject: [PATCH 29/29] [FIX] Typo bzr revid: stephane@tinyerp.com-20081217112154-m3ncd3ig4jp2n98o --- bin/tools/convert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/tools/convert.py b/bin/tools/convert.py index d76e6ac7a43..e1d5f313d15 100644 --- a/bin/tools/convert.py +++ b/bin/tools/convert.py @@ -488,7 +488,7 @@ form: module.record_id""" % (xml_id,) try: npid = self.pool.get('ir.model.data')._update_dummy(cr, self.uid, 'ir.ui.menu', self.module, xml_id, idx==len(m_l)-1) except: - self.logger.notifyChannel('init', netsvc.LOG_ERROR, "addon: %s xml_id: %s" % (self.module, xml_id)) + self.logger.notifyChannel('init', netsvc.LOG_ERROR, "module: %s xml_id: %s" % (self.module, xml_id)) else: # the menuitem does't exist but we are in branch (not a leaf) self.logger.notifyChannel("init", netsvc.LOG_WARNING, 'Warning no ID for submenu %s of menu %s !' % (menu_elem, str(m_l)))