From 09cb4533c2bcbea7ccaca4e507ab2726b0f698fd Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Fri, 5 Jun 2020 11:13:25 +0000 Subject: [PATCH] [IMP] website_sale: allow to show extra field on product page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit You can in website's settings, add some extra fields to be shown on the product page. E.G. if you want to have the internal code, the barcode, or even a custom field In case of a binary field, 'Technical documentation' or 'Catalog', you will have a dowload link. closes odoo/odoo#55872 Signed-off-by: Jérémy Kersten (jke) --- addons/website_sale/models/website.py | 17 ++++++++ .../website_sale/security/ir.model.access.csv | 2 + addons/website_sale/views/templates.xml | 40 +++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/addons/website_sale/models/website.py b/addons/website_sale/models/website.py index 5f4d7de2a6c..a34f73dfcd8 100644 --- a/addons/website_sale/models/website.py +++ b/addons/website_sale/models/website.py @@ -48,6 +48,8 @@ class Website(models.Model): shop_ppg = fields.Integer(default=20, string="Number of products in the grid on the shop") shop_ppr = fields.Integer(default=4, string="Number of grid columns on the shop") + shop_extra_field_ids = fields.One2many('website.sale.extra.field', 'website_id', string='E-Commerce Extra Fields') + @api.depends('all_pricelist_ids') def _compute_pricelist_ids(self): Pricelist = self.env['product.pricelist'] @@ -369,3 +371,18 @@ class Website(models.Model): suggested_controllers = super(Website, self).get_suggested_controllers() suggested_controllers.append((_('eCommerce'), url_for('/shop'), 'website_sale')) return suggested_controllers + + +class WebsiteSaleExtraField(models.Model): + _name = 'website.sale.extra.field' + _description = 'E-Commerce Extra Info Shown on product page' + _order = 'sequence' + + website_id = fields.Many2one('website') + sequence = fields.Integer(default=10) + field_id = fields.Many2one( + 'ir.model.fields', + domain=[('model_id.model', '=', 'product.template')] + ) + label = fields.Char(related='field_id.field_description') + name = fields.Char(related='field_id.name') diff --git a/addons/website_sale/security/ir.model.access.csv b/addons/website_sale/security/ir.model.access.csv index 479a8838622..2e5d2523d30 100644 --- a/addons/website_sale/security/ir.model.access.csv +++ b/addons/website_sale/security/ir.model.access.csv @@ -21,3 +21,5 @@ access_product_image_public,product.image public,model_product_image,,1,0,0,0 access_product_image_publisher,product.image wbesite publisher,model_product_image,website.group_website_publisher,1,1,1,1 access_product_image_sale,product.image sale,model_product_image,sales_team.group_sale_manager,1,1,1,1 access_website_sale_payment_acquirer_onboarding_wizard,access.website.sale.payment.acquirer.onboarding.wizard,model_website_sale_payment_acquirer_onboarding_wizard,base.group_system,1,1,1,0 +access_ecom_extra_fields_public,access_ecom_extra_field public,model_website_sale_extra_field,,1,0,0,0 +access_ecom_extra_fields_publisher,access_ecom_extra_field publisher,model_website_sale_extra_field,website.group_website_publisher,1,1,1,1 diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index afc70444d1f..0749dceab81 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1772,4 +1772,44 @@ + + + + website_sale.website.form + website + + + + + + + + + + + + + + + + +