From 7111a3fe13b7dce43cab863a833a5108b8af77cf Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:06:43 +0200 Subject: [PATCH 01/21] [FIX] default expression value may now contains single quotes (but not 3 consecutive ones) bzr revid: jth@openerp.com-20100927140643-a2qm2mlsc0f42z94 --- addons/email_template/email_template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index f87c4bf750e..cbedc57d6e2 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -351,7 +351,7 @@ This is useful for CRM leads for example"), if sub_model_object_field: copy_val += "." + sub_model_object_field if null_value: - copy_val += " or '" + null_value + "'" + copy_val += " or '''%s'''" % null_value if model_object_field: copy_val += "}" elif template_language == 'django': @@ -360,7 +360,7 @@ This is useful for CRM leads for example"), if sub_model_object_field: copy_val += "." + sub_model_object_field if null_value: - copy_val = copy_val + '|default:"' + null_value + '"' + copy_val = copy_val + "|default:'''%s'''" % null_value copy_val = copy_val + "}}" return copy_val From 7bf6844f10fc9278901f8e2a61e83df166f8241c Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:11:16 +0200 Subject: [PATCH 02/21] [FIX] Fixed wrong indentation. bzr revid: jth@openerp.com-20100927141116-wu6vznh4dqzu9i5j --- addons/email_template/email_template.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index cbedc57d6e2..d6b73a0ece1 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -348,20 +348,19 @@ This is useful for CRM leads for example"), if template_language == 'mako': if model_object_field: copy_val = "${object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field - if null_value: - copy_val += " or '''%s'''" % null_value - if model_object_field: + if sub_model_object_field: + copy_val += "." + sub_model_object_field + if null_value: + copy_val += " or '''%s'''" % null_value copy_val += "}" elif template_language == 'django': if model_object_field: copy_val = "{{object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field - if null_value: - copy_val = copy_val + "|default:'''%s'''" % null_value - copy_val = copy_val + "}}" + if sub_model_object_field: + copy_val += "." + sub_model_object_field + if null_value: + copy_val = copy_val + "|default:'''%s'''" % null_value + copy_val = copy_val + "}}" return copy_val def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None): From ab55bfd6afbddc0583830dd76da24b02fc8b27bc Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:17:58 +0200 Subject: [PATCH 03/21] [REF] Renamed variable to match conventions. bzr revid: jth@openerp.com-20100927141758-i5dpu1l7ctk39j1e --- addons/email_template/email_template.py | 45 ++++++++++++------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index d6b73a0ece1..49e99de5bf5 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -331,37 +331,34 @@ This is useful for CRM leads for example"), default.update({'name':new_name}) return super(email_template, self).copy(cr, uid, id, default, context) - def compute_pl(self, - model_object_field, - sub_model_object_field, - null_value, template_language='mako'): + def compute_pl(self, field_name, sub_field_name, null_value, template_language='mako'): """ - Returns the expression based on data provided - @param model_object_field: First level field - @param sub_model_object_field: Second level drilled down field (M2O) - @param null_value: What has to be returned if the value is empty - @param template_language: The language used for templating + Returns a template expression based on data provided + @param field_name: field name + @param sub_field_name: sub field name (M2O) + @param null_value: default value if the target value is empty + @param template_language: name of template engine @return: computed expression """ - #Configure for MAKO - copy_val = '' + + expression = '' if template_language == 'mako': - if model_object_field: - copy_val = "${object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field + if field_name: + expression = "${object." + field_name + if sub_field_name: + expression += "." + sub_field_name if null_value: - copy_val += " or '''%s'''" % null_value - copy_val += "}" + expression += " or '''%s'''" % null_value + expression += "}" elif template_language == 'django': - if model_object_field: - copy_val = "{{object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field + if field_name: + expression = "{{object." + field_name + if sub_field_name: + expression += "." + sub_field_name if null_value: - copy_val = copy_val + "|default:'''%s'''" % null_value - copy_val = copy_val + "}}" - return copy_val + expression += "|default: '''%s'''" % null_value + expression += "}}" + return expression def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None): if not model_object_field: From 8b241bb07b78daeba54b6e7473531fa3cbe8ab94 Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:22:54 +0200 Subject: [PATCH 04/21] [REF] Renamed method to match conventions. bzr revid: jth@openerp.com-20100927142254-aru8l7933o3x8cfr --- addons/email_template/email_template.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 49e99de5bf5..ee82c917351 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -331,7 +331,7 @@ This is useful for CRM leads for example"), default.update({'name':new_name}) return super(email_template, self).copy(cr, uid, id, default, context) - def compute_pl(self, field_name, sub_field_name, null_value, template_language='mako'): + def build_expression(self, field_name, sub_field_name, null_value, template_language='mako'): """ Returns a template expression based on data provided @param field_name: field name @@ -370,7 +370,7 @@ This is useful for CRM leads for example"), res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(False, + result['copyvalue'] = self.build_expression(False, False, False, template_language) @@ -379,7 +379,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, False, template_language @@ -398,7 +398,7 @@ This is useful for CRM leads for example"), sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, False, template_language @@ -408,7 +408,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, False, template_language @@ -427,7 +427,7 @@ This is useful for CRM leads for example"), sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, null_value, template_language @@ -437,7 +437,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, null_value, template_language From 4e66ad96cc73597f2e8e10c8e0b9aadeda2c7510 Mon Sep 17 00:00:00 2001 From: Yogesh Sakhreliya Date: Mon, 4 Oct 2010 19:38:41 +0530 Subject: [PATCH 05/21] [REM] remove role_id field in workflow.xml file. bzr revid: ysa@tinyerp.com-20101004140841-abyzp16b5qaau505 --- .../crossovered_budget_workflow.xml | 4 -- .../email_template_workflow.xml | 4 -- addons/hr_expense/hr_expense_workflow.xml | 6 -- addons/hr_holidays/hr_holidays_workflow.xml | 5 -- .../hr_timesheet_workflow.xml | 14 ++--- .../process/hr_timesheet_sheet_process.xml | 56 +++++++++---------- addons/sale/process/sale_process.xml | 8 --- 7 files changed, 32 insertions(+), 65 deletions(-) diff --git a/addons/account_budget/crossovered_budget_workflow.xml b/addons/account_budget/crossovered_budget_workflow.xml index f304775bcca..16997d694f2 100644 --- a/addons/account_budget/crossovered_budget_workflow.xml +++ b/addons/account_budget/crossovered_budget_workflow.xml @@ -65,28 +65,24 @@ validate - cancel - cancel - done - diff --git a/addons/email_template/email_template_workflow.xml b/addons/email_template/email_template_workflow.xml index 911b8bf49ff..1a6a73cca77 100644 --- a/addons/email_template/email_template_workflow.xml +++ b/addons/email_template/email_template_workflow.xml @@ -47,26 +47,22 @@ button_approval - button_suspended - get_reapprove - get_never - diff --git a/addons/hr_expense/hr_expense_workflow.xml b/addons/hr_expense/hr_expense_workflow.xml index cfeee8387ce..2bb0f51e26b 100644 --- a/addons/hr_expense/hr_expense_workflow.xml +++ b/addons/hr_expense/hr_expense_workflow.xml @@ -75,14 +75,12 @@ validate - refuse - @@ -95,21 +93,18 @@ refuse - draft - invoice - @@ -128,7 +123,6 @@ draft - diff --git a/addons/hr_holidays/hr_holidays_workflow.xml b/addons/hr_holidays/hr_holidays_workflow.xml index 6dcd55ff162..de2bd9f1131 100644 --- a/addons/hr_holidays/hr_holidays_workflow.xml +++ b/addons/hr_holidays/hr_holidays_workflow.xml @@ -77,28 +77,24 @@ validate (holiday_status_id.double_validation == False) - refuse - cancel - cancel - @@ -124,7 +120,6 @@ (holiday_status_id.double_validation == True) validate - diff --git a/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml b/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml index 11af4574a4a..b664fd79c96 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_workflow.xml @@ -1,21 +1,21 @@ - + - + Timesheets validation - + - + hr_timesheet_sheet.sheet hr_timesheet_sheet.sheet True - + new @@ -42,7 +42,7 @@ write({'state':'done'}) True - + @@ -56,13 +56,11 @@ done - cancel - diff --git a/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml b/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml index a2bf0aa24e5..22453dccfa4 100644 --- a/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml +++ b/addons/hr_timesheet_sheet/process/hr_timesheet_sheet_process.xml @@ -1,21 +1,21 @@ - - - + - - - + @@ -24,7 +24,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -91,19 +91,15 @@ - - - + - - - - - + @@ -112,7 +108,7 @@ - + @@ -121,7 +117,7 @@ - + @@ -131,7 +127,7 @@ - + @@ -140,7 +136,7 @@ - + @@ -149,7 +145,7 @@ - + @@ -157,32 +153,32 @@ - - - - + - + - + - + diff --git a/addons/sale/process/sale_process.xml b/addons/sale/process/sale_process.xml index b4a54d5afa5..4d6ca31d973 100644 --- a/addons/sale/process/sale_process.xml +++ b/addons/sale/process/sale_process.xml @@ -138,14 +138,6 @@ - - - - - - - - From 68f558eeed1d51eb52cbbb72a348e6904cfb71d2 Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Tue, 5 Oct 2010 09:10:57 +0200 Subject: [PATCH 06/21] [FIX] base_iban: no 'bank' field in res.partner.bank.type bzr revid: olt@tinyerp.com-20101005071057-zqw6a06i8pczozge --- addons/base_iban/base_iban_data.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/base_iban/base_iban_data.xml b/addons/base_iban/base_iban_data.xml index 4269bb83ac6..dae3999505e 100644 --- a/addons/base_iban/base_iban_data.xml +++ b/addons/base_iban/base_iban_data.xml @@ -3,12 +3,11 @@ + Default bank account description + --> IBAN Account iban - iban From 4a1157c0572d2f2e2feb43fd7e7dd7fa73f15ef0 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 5 Oct 2010 09:54:18 +0200 Subject: [PATCH 07/21] [IMP] useability improvements bzr revid: fp@tinyerp.com-20101005075418-0t33zy0trdmiwbfj --- addons/base_calendar/base_calendar_view.xml | 4 +++- addons/crm/crm_lead_data.xml | 3 ++- addons/crm/crm_meeting_view.xml | 3 ++- addons/crm/crm_opportunity.py | 9 ++++---- addons/crm/crm_opportunity_view.xml | 22 ++++++------------- addons/crm/crm_view.xml | 1 + addons/hr/hr_installer.xml | 2 +- addons/hr/installer.py | 3 +-- addons/mail_gateway/mail_gateway_view.xml | 21 +----------------- addons/marketing/marketing_view.xml | 3 +-- addons/marketing/marketing_wizard.py | 4 +--- addons/product/product_view.xml | 3 ++- addons/profile_tools/installer.py | 10 ++++----- addons/profile_tools/misc_tools_installer.xml | 5 ++--- addons/project/installer.py | 10 +++------ addons/project/project_installer.xml | 6 ++--- addons/project_timesheet/__openerp__.py | 2 +- addons/sale_crm/wizard/crm_make_sale.py | 3 ++- addons/sale_crm/wizard/crm_make_sale_view.xml | 9 ++++---- 19 files changed, 46 insertions(+), 77 deletions(-) diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index 2a0ed14080f..ba91c4b75dd 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -163,7 +163,8 @@ @@ -496,6 +497,7 @@ diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml index cb80a7d28e9..2a49e43e683 100644 --- a/addons/crm/crm_lead_data.xml +++ b/addons/crm/crm_lead_data.xml @@ -33,9 +33,10 @@ - Win + Won + diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml index 2821024bfbf..98b311592b7 100644 --- a/addons/crm/crm_meeting_view.xml +++ b/addons/crm/crm_meeting_view.xml @@ -13,7 +13,8 @@ {'object_id':'crm.meeting'} - diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py index 771212a171d..2b0062eb9d5 100644 --- a/addons/crm/crm_opportunity.py +++ b/addons/crm/crm_opportunity.py @@ -85,10 +85,11 @@ class crm_opportunity(osv.osv): """ res = super(crm_opportunity, self).case_close(cr, uid, ids, args) stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 0)]}) - if not stage_id: - raise osv.except_osv(_('Warning !'), _('There is no stage for lost opportunities defined for this Sale Team.')) - value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value'] - value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id}) + value = {} + if stage_id: + value = self.onchange_stage_id(cr, uid, ids, stage_id, context={}).get('value', {}) + value['stage_id'] = stage_id + value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}) res = self.write(cr, uid, ids, value) for (id, name) in self.name_get(cr, uid, ids): diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml index b52694d8b20..66b6f04553b 100644 --- a/addons/crm/crm_opportunity_view.xml +++ b/addons/crm/crm_opportunity_view.xml @@ -14,14 +14,14 @@