From b5833591dcf7e65cc829e080c289400b0926f2a1 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 27 May 2014 12:05:41 +0200 Subject: [PATCH 01/20] [IMP] website_sale: add vat field on checkout --- addons/website_sale/controllers/main.py | 2 +- addons/website_sale/views/templates.xml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ff4761a848c..20900110fcf 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -310,7 +310,7 @@ class website_sale(http.Controller): return values mandatory_billing_fields = ["name", "phone", "email", "street", "city", "country_id", "zip"] - optional_billing_fields = ["street2", "state_id"] + optional_billing_fields = ["street2", "state_id", "vat"] mandatory_shipping_fields = ["name", "phone", "street", "city", "country_id", "zip"] optional_shipping_fields = ["state_id"] diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 495e540c57a..95eb089a663 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -704,6 +704,11 @@ +
+
+ + +
From 59be055c3718aede3f1d2262483a5279f52c84ba Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 27 May 2014 12:49:16 +0200 Subject: [PATCH 02/20] [IMP] website_sale: if base_vat is installed, when the use try to validate checkout, the vat is checked (VAT Information Exchange System) --- addons/website_sale/controllers/main.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 20900110fcf..c645943917b 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -355,6 +355,11 @@ class website_sale(http.Controller): if not data.get(field_name): error[field_name] = 'missing' + if data.get("vat") and hasattr(registry["res.partner"], "check_vat"): + vat_country, vat_number = registry["res.partner"]._split_vat(data.get("vat")) + if not registry["res.partner"].vies_vat_check(cr, uid, vat_country, vat_number, context=None): # simple_vat_check + error["vat"] = 'error' + if data.get("shipping_different"): for field_name in self.mandatory_shipping_fields: field_name = 'shipping_' + field_name From 2efb07473326d6fb1eefae00e6ebaac40cce3f5f Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 27 May 2014 14:35:07 +0200 Subject: [PATCH 03/20] [IMP] website_sale: use company vat_check_vies field to select the method to check the vat id base_vat is installed --- addons/website_sale/controllers/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index c645943917b..2ef442a4e3b 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -356,8 +356,14 @@ class website_sale(http.Controller): error[field_name] = 'missing' if data.get("vat") and hasattr(registry["res.partner"], "check_vat"): + if request.website.company_id.vat_check_vies: + # force full VIES online check + check_func = registry["res.partner"].vies_vat_check + else: + # quick and partial off-line checksum validation + check_func = registry["res.partner"].simple_vat_check vat_country, vat_number = registry["res.partner"]._split_vat(data.get("vat")) - if not registry["res.partner"].vies_vat_check(cr, uid, vat_country, vat_number, context=None): # simple_vat_check + if not check_func(cr, uid, vat_country, vat_number, context=None): # simple_vat_check error["vat"] = 'error' if data.get("shipping_different"): From fe74741594cb653483fb37133e853595893a7a24 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Tue, 27 May 2014 15:13:44 +0200 Subject: [PATCH 04/20] [FIX] ir_qweb: contact field must add 'http://' if the website url value has not any protocol --- openerp/addons/base/ir/ir_qweb.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_qweb.xml b/openerp/addons/base/ir/ir_qweb.xml index d021d496fdc..c69dc17c851 100644 --- a/openerp/addons/base/ir/ir_qweb.xml +++ b/openerp/addons/base/ir/ir_qweb.xml @@ -20,7 +20,7 @@
- +
From cadf582d783a0bfb14dd2535f457bc2959185a9b Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Tue, 27 May 2014 18:39:00 +0200 Subject: [PATCH 05/20] [FIX] event_sale, website_event_sale: ACLs for event.event.ticket event.event.ticket were set in website_event_sale, while this model is set in event_sale module Manager acl moved from website_event_sale to event_sale Created a new acl for event user in event_sale Left the acl for everyone in website_event_sale, meaning that when this module is installed, everyone can read tickets, event those who aren't event user --- addons/event_sale/__openerp__.py | 1 + addons/event_sale/security/ir.model.access.csv | 3 +++ addons/website_event_sale/security/ir.model.access.csv | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 addons/event_sale/security/ir.model.access.csv diff --git a/addons/event_sale/__openerp__.py b/addons/event_sale/__openerp__.py index 88e27fd9a3d..35d2f51aacc 100644 --- a/addons/event_sale/__openerp__.py +++ b/addons/event_sale/__openerp__.py @@ -42,6 +42,7 @@ this event. 'data': [ 'event_sale_view.xml', 'event_sale_data.xml', + 'security/ir.model.access.csv', ], 'demo': ['event_demo.xml'], 'test': ['test/confirm.yml'], diff --git a/addons/event_sale/security/ir.model.access.csv b/addons/event_sale/security/ir.model.access.csv new file mode 100644 index 00000000000..410458d4b0f --- /dev/null +++ b/addons/event_sale/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_event_event_ticket_user,event.event.ticket.user,event_sale.model_event_event_ticket,event.group_event_user,1,0,0,0 +access_event_event_ticket_admin,event.event.ticket.admin,event_sale.model_event_event_ticket,event.group_event_manager,1,1,1,1 \ No newline at end of file diff --git a/addons/website_event_sale/security/ir.model.access.csv b/addons/website_event_sale/security/ir.model.access.csv index 0538dbe8cc3..ec5ea43cd7d 100644 --- a/addons/website_event_sale/security/ir.model.access.csv +++ b/addons/website_event_sale/security/ir.model.access.csv @@ -1,5 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_event_event_ticket_public,event.event.ticket.public,event_sale.model_event_event_ticket,,1,0,0,0 -access_event_event_ticket_admin,event.event.ticket.admin,event_sale.model_event_event_ticket,event.group_event_manager,1,1,1,1 access_event_product_product_public,event.product.product.public,product.model_product_product,base.group_public,1,0,0,0 access_event_product_template_public,event.product.template.public,product.model_product_template,base.group_public,1,0,0,0 \ No newline at end of file From 02018563b3e9b805eaee5d1d9672e6cc5eb240c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 May 2014 09:59:31 +0200 Subject: [PATCH 06/20] [FIX] website_mail: fixed is_follower controller, that could leak data about records. Added instead a controller to get alias data. This controller is called by the discussion group snippet to have the info about the alias. --- addons/website_mail/controllers/main.py | 21 +++++++++++-- .../static/src/js/website_mail.js | 30 ++++++++++++------- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 49caf20f7ff..8cdb73030a8 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -83,6 +83,7 @@ class WebsiteMail(http.Controller): 'is_user': uid != public_id, 'email': email, 'is_follower': False, + 'alias_name': False, } if not obj: @@ -97,8 +98,22 @@ class WebsiteMail(http.Controller): ('res_id', '=', obj_ids[0]), ('partner_id', '=', partner_id.id) ], context=context)) == 1 - if post.get('fields'): - record = obj.read(cr, SUPERUSER_ID, obj_ids[0], fields=post.get('fields'), context=context) - values.update(record) + + return values + + @http.route(['/website_mail/get_alias_info'], type='json', auth='public', website=True) + def get_alias_info(self, model, id, **post): + id = int(id) + cr, uid, context = request.cr, request.uid, request.context + obj = request.registry.get(model) + + values = {'alias_name': False} + + if not obj: + return values + obj_ids = obj.exists(cr, SUPERUSER_ID, [id], context=context) + if obj_ids and 'alias_id' in obj._all_columns: + alias_id = obj.browse(cr, SUPERUSER_ID, obj_ids[0], context=context).alias_id + values['alias_name'] = alias_id and alias_id.alias_domain and '%s@%s' % (alias_id.alias_name, alias_id.alias_domain) or False return values diff --git a/addons/website_mail/static/src/js/website_mail.js b/addons/website_mail/static/src/js/website_mail.js index d069f88ea45..2a79bccccc5 100644 --- a/addons/website_mail/static/src/js/website_mail.js +++ b/addons/website_mail/static/src/js/website_mail.js @@ -12,15 +12,12 @@ openerp.jsonRpc('/website_mail/is_follower', 'call', { model: this.$target.data('object'), id: this.$target.data('id'), - fields: ['name', 'alias_id'], + get_alias_info: true, }).always(function (data) { self.is_user = data.is_user; - self.$target.find('.js_mg_email').attr('href', 'mailto:' + data.alias_id[1]); - self.$target.find('.js_mg_link').attr('href', '/groups/' + data.id); - self.toggle_subscription(data.is_follower); - self.$target.find('input.js_follow_email') - .val(data.email ? data.email : "") - .attr("disabled", data.is_follower || (data.email.length && self.is_user) ? "disabled" : false); + self.email = data.email; + self.$target.find('.js_mg_link').attr('href', '/groups/' + self.$target.data('id')); + self.toggle_subscription(data.is_follower, data.email); self.$target.removeClass("hidden"); }); @@ -51,10 +48,11 @@ 'message_is_follower': this.$target.attr("data-follow") || "off", 'email': $email.length ? $email.val() : false, }).then(function (follow) { - self.toggle_subscription(follow); + self.toggle_subscription(follow, self.email); }); }, - toggle_subscription: function(follow) { + toggle_subscription: function(follow, email) { + var alias_done = this.get_alias_info(); if (follow) { this.$target.find(".js_mg_follow_form").addClass("hidden"); this.$target.find(".js_mg_details").removeClass("hidden"); @@ -63,9 +61,21 @@ this.$target.find(".js_mg_follow_form").removeClass("hidden"); this.$target.find(".js_mg_details").addClass("hidden"); } - this.$target.find('input.js_follow_email').attr("disabled", follow || this.is_user ? "disabled" : false); + this.$target.find('input.js_follow_email') + .val(email ? email : "") + .attr("disabled", follow || (email.length && this.is_user) ? "disabled" : false); this.$target.attr("data-follow", follow ? 'on' : 'off'); + return $.when(alias_done); }, + get_alias_info: function() { + var self = this; + return openerp.jsonRpc('/website_mail/get_alias_info', 'call', { + model: this.$target.data('object'), + id: this.$target.data('id'), + }).then(function (data) { + self.$target.find('.js_mg_email').attr('href', 'mailto:' + data.alias_name); + }); + } }); $(document).ready(function () { From 5f94504c0872f734a9c106c7dc63b4e06499cc07 Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Wed, 28 May 2014 10:06:42 +0200 Subject: [PATCH 07/20] [TYPO] in crm_partner_assign --- addons/crm_partner_assign/crm_partner_assign.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm_partner_assign/crm_partner_assign.py b/addons/crm_partner_assign/crm_partner_assign.py index 046babccf73..31a042d8685 100644 --- a/addons/crm_partner_assign/crm_partner_assign.py +++ b/addons/crm_partner_assign/crm_partner_assign.py @@ -65,7 +65,7 @@ class res_partner(osv.osv): 'date_review_next' : fields.date('Next Partner Review'), # customer implementation 'assigned_partner_id': fields.many2one( - 'res.partner', 'Implementedy by', + 'res.partner', 'Implemented by', ), 'implemented_partner_ids': fields.one2many( 'res.partner', 'assigned_partner_id', From 57e1cc4edd298cc6af94decabc72f98136be4d69 Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Wed, 28 May 2014 10:35:58 +0200 Subject: [PATCH 08/20] [ADD] website_crm_partner_assign: display demo data on website --- .../website_crm_partner_assign/__openerp__.py | 3 +++ .../data/res_partner_grade_demo.xml | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 addons/website_crm_partner_assign/data/res_partner_grade_demo.xml diff --git a/addons/website_crm_partner_assign/__openerp__.py b/addons/website_crm_partner_assign/__openerp__.py index 06b6dc9410e..649537ffb2e 100644 --- a/addons/website_crm_partner_assign/__openerp__.py +++ b/addons/website_crm_partner_assign/__openerp__.py @@ -13,6 +13,9 @@ Publish and Assign Partner 'views/partner_grade.xml', 'views/website_crm_partner_assign.xml', ], + 'demo': [ + 'data/res_partner_grade_demo.xml', + ], 'qweb': ['static/src/xml/*.xml'], 'installable': True, } diff --git a/addons/website_crm_partner_assign/data/res_partner_grade_demo.xml b/addons/website_crm_partner_assign/data/res_partner_grade_demo.xml new file mode 100644 index 00000000000..19c48c2d93d --- /dev/null +++ b/addons/website_crm_partner_assign/data/res_partner_grade_demo.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + From 0c89ca0f8f2d96e37353348fe33591da8142368b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 28 May 2014 11:12:33 +0200 Subject: [PATCH 09/20] [FIX] website_mail, websit_mail_group: moved discussion group snippet to the right module; it should not be available when the mailing list archives module is not installed. Also fixed get_alias_info route to be mail_group specific and to avoid allowing people to browse the database. --- addons/website_mail/controllers/main.py | 17 ------ addons/website_mail/views/snippets.xml | 48 ----------------- addons/website_mail/views/website_mail.xml | 2 - addons/website_mail_group/__openerp__.py | 3 +- addons/website_mail_group/controllers/main.py | 6 +++ .../src/js/website_mail_group.editor.js} | 0 .../src/js/website_mail_group.snippet.js} | 17 ++++-- addons/website_mail_group/views/snippets.xml | 53 +++++++++++++++++++ .../views/website_mail_group.xml | 17 ++++-- 9 files changed, 86 insertions(+), 77 deletions(-) rename addons/{website_mail/static/src/js/website_mail.editor.js => website_mail_group/static/src/js/website_mail_group.editor.js} (100%) rename addons/{website_mail/static/src/js/website_mail.js => website_mail_group/static/src/js/website_mail_group.snippet.js} (84%) create mode 100644 addons/website_mail_group/views/snippets.xml diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 8cdb73030a8..081ba93b8b4 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -100,20 +100,3 @@ class WebsiteMail(http.Controller): ], context=context)) == 1 return values - - @http.route(['/website_mail/get_alias_info'], type='json', auth='public', website=True) - def get_alias_info(self, model, id, **post): - id = int(id) - cr, uid, context = request.cr, request.uid, request.context - obj = request.registry.get(model) - - values = {'alias_name': False} - - if not obj: - return values - obj_ids = obj.exists(cr, SUPERUSER_ID, [id], context=context) - if obj_ids and 'alias_id' in obj._all_columns: - alias_id = obj.browse(cr, SUPERUSER_ID, obj_ids[0], context=context).alias_id - values['alias_name'] = alias_id and alias_id.alias_domain and '%s@%s' % (alias_id.alias_name, alias_id.alias_domain) or False - - return values diff --git a/addons/website_mail/views/snippets.xml b/addons/website_mail/views/snippets.xml index 8a737b98927..ebbcf6d4a70 100644 --- a/addons/website_mail/views/snippets.xml +++ b/addons/website_mail/views/snippets.xml @@ -493,53 +493,5 @@ - - - diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml index 2882125de67..6202e00342b 100644 --- a/addons/website_mail/views/website_mail.xml +++ b/addons/website_mail/views/website_mail.xml @@ -21,8 +21,6 @@ diff --git a/addons/website_mail_group/__openerp__.py b/addons/website_mail_group/__openerp__.py index f83fc38ce7c..768e7f27156 100644 --- a/addons/website_mail_group/__openerp__.py +++ b/addons/website_mail_group/__openerp__.py @@ -11,7 +11,8 @@ OpenERP Mail Group : Mailing List Archives 'author': 'OpenERP SA', 'depends': ['website_mail'], 'data': [ - 'views/website_mail_group.xml' + 'views/website_mail_group.xml', + 'views/snippets.xml', ], 'qweb': [], 'installable': True, diff --git a/addons/website_mail_group/controllers/main.py b/addons/website_mail_group/controllers/main.py index 7320ebc6548..a28b808d9f2 100644 --- a/addons/website_mail_group/controllers/main.py +++ b/addons/website_mail_group/controllers/main.py @@ -129,3 +129,9 @@ class MailGroup(http.Controller): 'replies_per_page': self._replies_per_page, } return request.registry['ir.ui.view'].render(request.cr, request.uid, 'website_mail_group.messages_short', values, engine='ir.qweb', context=request.context) + + @http.route("/groups//get_alias_info", type='json', auth='public', website=True) + def get_alias_info(self, group, **post): + return { + 'alias_name': group.alias_id and group.alias_id.alias_name and group.alias_id.alias_domain and '%s@%s' % (group.alias_id.alias_name, group.alias_id.alias_domain) or False + } diff --git a/addons/website_mail/static/src/js/website_mail.editor.js b/addons/website_mail_group/static/src/js/website_mail_group.editor.js similarity index 100% rename from addons/website_mail/static/src/js/website_mail.editor.js rename to addons/website_mail_group/static/src/js/website_mail_group.editor.js diff --git a/addons/website_mail/static/src/js/website_mail.js b/addons/website_mail_group/static/src/js/website_mail_group.snippet.js similarity index 84% rename from addons/website_mail/static/src/js/website_mail.js rename to addons/website_mail_group/static/src/js/website_mail_group.snippet.js index 2a79bccccc5..fc0e2bb864f 100644 --- a/addons/website_mail/static/src/js/website_mail.js +++ b/addons/website_mail_group/static/src/js/website_mail_group.snippet.js @@ -33,6 +33,7 @@ return; }, on_click: function () { + event.preventDefault(); var self = this; var $email = this.$target.find(".js_follow_email"); @@ -69,11 +70,17 @@ }, get_alias_info: function() { var self = this; - return openerp.jsonRpc('/website_mail/get_alias_info', 'call', { - model: this.$target.data('object'), - id: this.$target.data('id'), - }).then(function (data) { - self.$target.find('.js_mg_email').attr('href', 'mailto:' + data.alias_name); + if (! this.$target.data('id')) { + return $.Deferred().resolve(); + } + return openerp.jsonRpc('/groups/' + this.$target.data('id') + '/get_alias_info', 'call', {}).then(function (data) { + if (data.alias_name) { + self.$target.find('.js_mg_email').attr('href', 'mailto:' + data.alias_name); + self.$target.find('.js_mg_email').removeClass('hidden'); + } + else { + self.$target.find('.js_mg_email').addClass('hidden'); + } }); } }); diff --git a/addons/website_mail_group/views/snippets.xml b/addons/website_mail_group/views/snippets.xml new file mode 100644 index 00000000000..56ba81d81b3 --- /dev/null +++ b/addons/website_mail_group/views/snippets.xml @@ -0,0 +1,53 @@ + + + + + + + + \ No newline at end of file diff --git a/addons/website_mail_group/views/website_mail_group.xml b/addons/website_mail_group/views/website_mail_group.xml index 76edd524753..1c0ee08edd4 100644 --- a/addons/website_mail_group/views/website_mail_group.xml +++ b/addons/website_mail_group/views/website_mail_group.xml @@ -8,6 +8,13 @@ + + From 248107d11aa695cc4945fa2decb792562e0de7e2 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Thu, 29 May 2014 01:59:47 +0200 Subject: [PATCH 15/20] [FIX] website_mail*: fix + bundlify changes of 0c89ca: move subscription widget from website_mail to website_mail_group --- addons/website_mail/views/website_mail.xml | 5 ----- .../website_mail_group/views/website_mail_group.xml | 11 ++++++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml index 9cf5f998c83..2b2bbea7e5f 100644 --- a/addons/website_mail/views/website_mail.xml +++ b/addons/website_mail/views/website_mail.xml @@ -24,11 +24,6 @@ - diff --git a/addons/website_mail_group/views/website_mail_group.xml b/addons/website_mail_group/views/website_mail_group.xml index 1c0ee08edd4..d52c34513b8 100644 --- a/addons/website_mail_group/views/website_mail_group.xml +++ b/addons/website_mail_group/views/website_mail_group.xml @@ -8,13 +8,18 @@ -