From 29721236fc1346555a15b8eea322986d82cef46c Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 18 Jan 2011 18:49:50 +0200 Subject: [PATCH 01/75] document: fix matching of names with non-latin chars At a previous fix, the "res_name == name" condition was added, that didn't, however, consider the case where res_name was unicode and name in utf8. Conflicts: document/nodes.py bzr revid: p_christ@hol.gr-20110118164950-avtkxy8dc4u03fu4 --- addons/document/nodes.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/document/nodes.py b/addons/document/nodes.py index 1b7aebcd389..0c4194847c1 100644 --- a/addons/document/nodes.py +++ b/addons/document/nodes.py @@ -23,6 +23,7 @@ import pooler from tools.safe_eval import safe_eval +from tools.misc import ustr import errno # import os import time @@ -808,7 +809,7 @@ class node_res_dir(node_class): return res[0] return None - def _child_get(self, cr, name = None, domain=None): + def _child_get(self, cr, name=None, domain=None): """ return virtual children of resource, based on the foreign object. @@ -868,7 +869,7 @@ class node_res_dir(node_class): # Escape the name for characters not supported in filenames res_name = res_name.replace('/','_') # any other weird char? - if name and (res_name != name): + if name and (res_name != ustr(name)): # we have matched _ to any character, but we only meant to match # the special ones. # Eg. 'a_c' will find 'abc', 'a/c', 'a_c', may only @@ -1044,7 +1045,7 @@ class node_res_obj(node_class): if not res_name: continue res_name = res_name.replace('/', '_') - if name and (res_name != name): + if name and (res_name != ustr(name)): continue # TODO Revise klass = directory.get_node_class(directory, dynamic=True, context=ctx) From e9b56eafe2db066332d0065302ca10befa39f381 Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 18 Jan 2011 18:49:56 +0200 Subject: [PATCH 02/75] docuement: armor the ir.action.report.xml code It was a little careless, better have an assertion there, at least, for the cases we don't cover. Historically, it has been here since commit: efeed12bea5c008ed6 ;) bzr revid: p_christ@hol.gr-20110118164956-vboodk5j4g9eofix --- addons/document/directory_report.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/document/directory_report.py b/addons/document/directory_report.py index 6eb18dae850..1665a7abf68 100644 --- a/addons/document/directory_report.py +++ b/addons/document/directory_report.py @@ -42,8 +42,12 @@ class ir_action_report_xml(osv.osv): def _model_search(self, cr, uid, obj, name, args, context=None): if not len(args): return [] + assert len(args) == 1 and args[0][1] == '=', 'expression is not what we expect: %r' % args model_id= args[0][2] if not model_id: + # a deviation from standard behavior: when searching model_id = False + # we return *all* reports, not just ones with empty model. + # One reason is that 'model' is a required field so far return [] model = self.pool.get('ir.model').read(cr, uid, [model_id])[0]['model'] report_id = self.search(cr, uid, [('model','=',model)]) From d9b74f05e44600f85e0d4f823b36135ccc767462 Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 18 Jan 2011 18:49:59 +0200 Subject: [PATCH 03/75] document_ics: relax domain restriction, it broke PDF reports, too. This whole thing of inheriting the same model for different functionality is a bit problematic. Document ICS is a Frankenstein, too. At least, don't let it break the other document.directory.content entries. bzr revid: p_christ@hol.gr-20110118164959-ctp4l2uj0xvc4v4y --- addons/document_ics/document_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/document_ics/document_view.xml b/addons/document_ics/document_view.xml index 40174612539..39b6908dc76 100644 --- a/addons/document_ics/document_view.xml +++ b/addons/document_ics/document_view.xml @@ -24,7 +24,7 @@ - + From 6572531524011266b5ddc80c25795332073817e3 Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 18 Jan 2011 18:50:15 +0200 Subject: [PATCH 04/75] caldav: Let the ETag of calendar entries be refreshed Skipped earlier, because it is an expensive operation, the write_date of nodes (aka. calendar entries) was cached. That meant that changes from the Gtk client wouldn't be depicted in CalDAV/GroupDAV clients. Now, go for the expensive operation and let them sync. bzr revid: p_christ@hol.gr-20110118165015-vn7avq6zk4t9g2yg --- addons/caldav/caldav_node.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/addons/caldav/caldav_node.py b/addons/caldav/caldav_node.py index 70671507b01..5272d0fc1fd 100644 --- a/addons/caldav/caldav_node.py +++ b/addons/caldav/caldav_node.py @@ -494,6 +494,17 @@ class res_node_calendar(nodes.node_class): res = '%d' % (self.calendar_id) return res + def _get_wtag(self, cr): + uid = self.context.uid + context = self.context.context + if self.model and self.res_id: + mod_obj = self.context._dirobj.pool.get(self.model) + pr = mod_obj.perm_read(cr, uid, [self.res_id], context=context, details=False)[0] + self.write_date = pr.get('write_date') or pr.get('create_date') + + # Super will use self.write_date, so we should be fine. + return super(res_node_calendar, self)._get_wtag(cr) + def rm(self, cr): uid = self.context.uid res = False From 9b0993e74c77282bf0dbe6726421dc1e5450b7d7 Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Tue, 18 Jan 2011 18:50:21 +0200 Subject: [PATCH 05/75] webdav: ';' in name not handled correctly [Bug 704444] Reported by: Dr. Ferdinand Gassauer Locations that contain a semicolon are split by the urlparse.urlparse(), thus setting their 'path' and 'params' return fields (rather than just the 'path'). In our syntax, there is no params, so the part after the semicolon needs to be appended back to the patch. bzr revid: p_christ@hol.gr-20110118165021-4knt76njdqnt1eln --- addons/document_webdav/dav_fs.py | 4 ++++ addons/document_webdav/webdav.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/addons/document_webdav/dav_fs.py b/addons/document_webdav/dav_fs.py index 22f50cb8e9a..8c606e4cca0 100644 --- a/addons/document_webdav/dav_fs.py +++ b/addons/document_webdav/dav_fs.py @@ -414,6 +414,8 @@ class openerp_dav_handler(dav_interface): # relative part, because ul is relative, anyway uparts=urlparse.urlparse(turi) turi=uparts[2] + if uparts[3]: + turi += ';' + uparts[3] if turi.startswith(ul): result.append( turi[len(self.parent.davpath):]) else: @@ -440,6 +442,8 @@ class openerp_dav_handler(dav_interface): def uri2local(self, uri): uparts=urlparse.urlparse(uri) reluri=uparts[2] + if uparts[3]: + reluri += ';'+uparts[3] if reluri and reluri[-1]=="/": reluri=reluri[:-1] return reluri diff --git a/addons/document_webdav/webdav.py b/addons/document_webdav/webdav.py index 1b60ade698f..3a68fb04fed 100644 --- a/addons/document_webdav/webdav.py +++ b/addons/document_webdav/webdav.py @@ -167,6 +167,8 @@ def mk_prop_response(self, uri, good_props, bad_props, doc): # write href information uparts=urlparse.urlparse(uri) fileloc=uparts[2] + if uparts[3]: + fileloc += ';' + uparts[3] if isinstance(fileloc, unicode): fileloc = fileloc.encode('utf-8') href=doc.createElement("D:href") @@ -246,6 +248,8 @@ def mk_propname_response(self,uri,propnames,doc): # write href information uparts=urlparse.urlparse(uri) fileloc=uparts[2] + if uparts[3]: + fileloc += ';' + uparts[3] if isinstance(fileloc, unicode): fileloc = fileloc.encode('utf-8') href=doc.createElement("D:href") @@ -303,6 +307,8 @@ def mk_lock_response(self, uri, props): # write href information uparts=urlparse.urlparse(uri) fileloc=uparts[2] + if uparts[3]: + fileloc += ';' + uparts[3] if isinstance(fileloc, unicode): fileloc = fileloc.encode('utf-8') davpath = self.parent.get_davpath() From ad91862c11b1361e7a0aeaaca180cf222f2a2a09 Mon Sep 17 00:00:00 2001 From: "nicolas.bessi@camptocamp.com" <> Date: Wed, 19 Jan 2011 15:50:32 +0100 Subject: [PATCH 06/75] [FIX] bug 704870 webkit_locals bzr revid: nicolas.bessi@camptocamp.com-20110119145032-61kf5gqi281x0br7 --- addons/report_webkit/webkit_report.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/report_webkit/webkit_report.py b/addons/report_webkit/webkit_report.py index 2944b768643..47d3e58482d 100644 --- a/addons/report_webkit/webkit_report.py +++ b/addons/report_webkit/webkit_report.py @@ -123,17 +123,17 @@ class WebKitParser(report_sxw): command.append("--footer-html '%s'"%(foot_file.name)) if webkit_header.margin_top : - command.append('--margin-top %s'%(webkit_header.margin_top)) + command.append('--margin-top %s'%(str(webkit_header.margin_top).replace(',', '.'))) if webkit_header.margin_bottom : - command.append('--margin-bottom %s'%(webkit_header.margin_bottom)) + command.append('--margin-bottom %s'%(str(webkit_header.margin_bottom).replace(',', '.'))) if webkit_header.margin_left : - command.append('--margin-left %s'%(webkit_header.margin_left)) + command.append('--margin-left %s'%(str(webkit_header.margin_left).replace(',', '.'))) if webkit_header.margin_right : - command.append('--margin-right %s'%(webkit_header.margin_right)) + command.append('--margin-right %s'%(str(webkit_header.margin_right).replace(',', '.'))) if webkit_header.orientation : - command.append("--orientation '%s'"%(webkit_header.orientation)) + command.append("--orientation '%s'"%(str(webkit_header.orientation).replace(',', '.'))) if webkit_header.format : - command.append(" --page-size '%s'"%(webkit_header.format)) + command.append(" --page-size '%s'"%(str(webkit_header.format).replace(',', '.'))) count = 0 for html in html_list : html_file = file(os.path.join(tmp_dir, str(time.time()) + str(count) +'.body.html'), 'w') From 4832c55df9d08ae11f0e97ae9104d14ef4d54d09 Mon Sep 17 00:00:00 2001 From: Bogdan Stanciu Date: Wed, 26 Jan 2011 13:57:55 +0100 Subject: [PATCH 07/75] [FIX] COA correction (account_account_type data was missing) for BS and P&L reporting lp bug: https://launchpad.net/bugs/707314 fixed bzr revid: bogdanovidiu.stanciu@gmail.com-20110126125755-urjp29cl0yibs5ur --- addons/l10n_ch/sterchi_chart/account.xml | 30 ++++++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/addons/l10n_ch/sterchi_chart/account.xml b/addons/l10n_ch/sterchi_chart/account.xml index dbc99227c42..8c907653b4a 100644 --- a/addons/l10n_ch/sterchi_chart/account.xml +++ b/addons/l10n_ch/sterchi_chart/account.xml @@ -10,26 +10,31 @@ Bilan : Liquidites et titres cash balance + asset Bilan : Actif de regularisation adjusting_asset balance + asset Bilan : Capitaux propres equity balance + liability PP : Chiffre d'affaires income none + income Bilan : Passifs de regularisation adj_liability balance + liability Autre : Cloture @@ -40,103 +45,123 @@ PP : Amortissement depreciation none + expense PP : Resultat financier financial_result none + income Bilan : Immobilisations financieres financial_asset balance + asset Bilan : Immo corporelles immobilieres building_asset balance + asset Bilan : Actifs hors exploitation non_ope_asset balance + asset PP : Autres charges d'exploitation other_ope_expense none + expense Bilan : Dettes hors exploitation non_ope_debts balance + liability Bilan : Immo corporelles mobilieres fixed_asset balance + asset Bilan : Immo incorporelles intangible_asset balance + asset Bilan : Stocks inventory balance + asset Bilan : Dettes à LT lt_liability balance + liability PP : Resultat activites annexes non_oper_result none + income Bilan : Autres creanciers à CT other_payable balance + liability Bilan : Autres créances other_receivable balance + asset PP : Charge de personnel personnal_exp none + expense Bilan : Provisions et reserves provision_reserve balance + liability PP : Achat de marchandise purchase none + expense Bilan : Resultat reporte report_result balance + liability Bilan : Debiteurs receivable True unreconciled + asset Bilan : Fournisseurs payable True unreconciled + liability Autre : Consolidation @@ -148,11 +173,6 @@ other none - - Autre : Closed - closed - none - Plan comptable 0 From 3d618f2de49325f7b83c65493f6ae0619d3dc90f Mon Sep 17 00:00:00 2001 From: "nicolas.bessi@camptocamp.com" <> Date: Fri, 28 Jan 2011 09:48:01 +0100 Subject: [PATCH 08/75] [FIX] better coding standard bzr revid: nicolas.bessi@camptocamp.com-20110128084801-a2w9hvy2ipl1wzis --- addons/l10n_ch/account_move_line.py | 2 +- addons/l10n_ch/account_wizard.py | 3 ++- addons/l10n_ch/company.py | 9 ++++----- addons/l10n_ch/invoice.py | 1 - addons/l10n_ch/report/report_webkit_html.py | 19 ++++++++++--------- .../report/report_webkit_html_view.xml | 6 +++--- addons/l10n_ch/wizard/create_dta.py | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/addons/l10n_ch/account_move_line.py b/addons/l10n_ch/account_move_line.py index da9aab741a6..9cf2ea26b6b 100644 --- a/addons/l10n_ch/account_move_line.py +++ b/addons/l10n_ch/account_move_line.py @@ -60,7 +60,7 @@ class AccountMoveLine(osv.osv): _inherit = 'account.move.line' - def line2bank(self, cr, uid, ids, payment_type='manual', context=None): + def __line2bank(self, cr, uid, ids, payment_type='manual', context=None): """add a link to account.move.line in order to link supplier invoice line and bank. The original link was defined in account_payment""" diff --git a/addons/l10n_ch/account_wizard.py b/addons/l10n_ch/account_wizard.py index b2e1ab00924..08c969dd654 100644 --- a/addons/l10n_ch/account_wizard.py +++ b/addons/l10n_ch/account_wizard.py @@ -21,6 +21,7 @@ import tools from osv import osv import addons +import os class WizardMultiChartsAccounts(osv.osv_memory): @@ -35,7 +36,7 @@ class WizardMultiChartsAccounts(osv.osv_memory): def execute(self, cr, uid, ids, context=None): """Override of code in order to be able to link journal with account in XML""" res = super(WizardMultiChartsAccounts, self).execute(cr, uid, ids, context) - path = addons.get_module_resource('l10n_ch/sterchi_chart/account_journal_rel.xml') + path = addons.get_module_resource(os.path.join('l10n_ch','sterchi_chart','account_journal_rel.xml')) tools.convert_xml_import(cr, 'l10n_ch', path, idref=None, mode='init', noupdate=True, report=None) return res diff --git a/addons/l10n_ch/company.py b/addons/l10n_ch/company.py index da8f7b53cc6..20f6b6168ec 100644 --- a/addons/l10n_ch/company.py +++ b/addons/l10n_ch/company.py @@ -27,13 +27,12 @@ class res_company(osv.osv): _inherit = "res.company" _columns = { - ### horiz. delta in mm 1.2 will print the bvz 1.2mm lefter 'bvr_delta_horz': fields.float('BVR Horz. Delta (mm)', - help='horiz. delta in mm 1.2 will print the bvz 1.2mm lefter'), - ### vert. delta in mm 1.2 will print the bvz 1.2mm lefter + help='horiz. delta in mm 1.2 will print the bvr 1.2mm lefter, negative value is possible'), + 'bvr_delta_vert': fields.float('BVR Vert. Delta (mm)', - help='vert. delta in mm 1.2 will print the bvz 1.2mm lefter'), - ### print bvr background image for standard paper or e-mail + help='vert. delta in mm 1.2 will print the bvr 1.2mm lower, negative value is possible'), + 'bvr_background': fields.boolean('Insert BVR background ?'), 'bvr_only': fields.boolean('Separated BVR only ?', diff --git a/addons/l10n_ch/invoice.py b/addons/l10n_ch/invoice.py index aa59a742722..07c62d43d51 100644 --- a/addons/l10n_ch/invoice.py +++ b/addons/l10n_ch/invoice.py @@ -191,7 +191,6 @@ class account_tax_code(osv.osv): _name = 'account.tax.code' _inherit = "account.tax.code" _columns = { - ### The case code of the tax code 'code': fields.char('Case Code', size=512), } diff --git a/addons/l10n_ch/report/report_webkit_html.py b/addons/l10n_ch/report/report_webkit_html.py index 449bcb15051..5e0a1f22995 100644 --- a/addons/l10n_ch/report/report_webkit_html.py +++ b/addons/l10n_ch/report/report_webkit_html.py @@ -33,6 +33,7 @@ import addons import pooler from tools.config import config from mako.template import Template +from tools.translate import _ class l10n_ch_report_webkit_html(report_sxw.rml_parse): @@ -60,12 +61,12 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse): def police_absolute_path(self, inner_path) : """Will get the ocrb police absolute path""" - path = addons.get_module_resource('l10n_ch/report/'+inner_path) + path = addons.get_module_resource(os.path.join('l10n_ch','report',inner_path)) return path def bvr_absolute_path(self) : """Will get the ocrb police absolute path""" - path = addons.get_module_resource('l10n_ch/report/bvr1.jpg') + path = addons.get_module_resource(os.path.join('l10n_ch','report','bvr1.jpg')) return path def headheight(self): @@ -113,18 +114,18 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse): ids = [x.id for x in invoices] for invoice in invoice_obj.browse(cursor, self.uid, ids): if not invoice.partner_bank_id: - raise wizard.except_wizard('UserError', - 'No bank specified on invoice:\n' + \ + raise wizard.except_wizard(_('UserError'), + _('No bank specified on invoice:\n' + \ invoice_obj.name_get(cursor, self.uid, [invoice.id], - context={})[0][1]) + context={})[0][1])) if not self._compile_check_bvr.match( invoice.partner_bank_id.bvr_number or ''): - raise wizard.except_wizard('UserError', - "Your bank BVR number should be of the form 0X-XXX-X! " + + raise wizard.except_wizard(_('UserError'), + _("Your bank BVR number should be of the form 0X-XXX-X! " + 'Please check your company ' + 'information for the invoice:\n' + invoice_obj.name_get(cursor, self.uid, [invoice.id], - context={})[0][1]) + context={})[0][1])) if invoice.partner_bank_id.bvr_adherent_num \ and not self._compile_check_bvr_add_num.match( invoice.partner_bank_id.bvr_adherent_num): @@ -198,7 +199,7 @@ class BVRWebKitParser(webkit_report.WebKitParser): #default_filters=['unicode', 'entity'] can be used to set global filter body_mako_tpl = Template(parse_template ,input_encoding='utf-8') #BVR specific - bvr_path = addons.get_module_resource('l10n_ch/report/bvr.mako') + bvr_path = addons.get_module_resource(os.path.join('l10n_ch','report','bvr.mako')) body_bvr_tpl = Template(file(bvr_path).read(), input_encoding='utf-8') helper = report_helper.WebKitHelper(cursor, uid, report_xml.id, context) diff --git a/addons/l10n_ch/report/report_webkit_html_view.xml b/addons/l10n_ch/report/report_webkit_html_view.xml index 8c66b1038c8..c03db709162 100644 --- a/addons/l10n_ch/report/report_webkit_html_view.xml +++ b/addons/l10n_ch/report/report_webkit_html_view.xml @@ -2,8 +2,8 @@ - - + Portrait + A4 - -