On website app installation and on new website creation a configurator is launched. The purpose of this configurator is to generate a website that meet the user's needs. The configurator is composed of 4 steps: 1) Business description: the user is asked to describe its need with its website purpose (dropdown), its industry (autocomplete search) and its objective (dropdown). 2) Logo and palette selection: the user must select a color palette for its website. He can also upload its logo. In this case color palettes recommendations are generated based on the logo's colors. 3) Features selection: the user select the pages and applications he needs. 4) Theme selection: three themes are recommended to the user based on its industry. This screen display a preview of these three themes. task-id: 2451965 ENT PR: odoo/enterprise#16949 UPG PR: odoo/upgrade#2316 closes odoo/odoo#67537 Signed-off-by: Sébastien Mottet <smottet@users.noreply.github.com>
33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, _
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class WebsiteConfiguratorFeature(models.Model):
|
|
|
|
_name = 'website.configurator.feature'
|
|
_description = 'Website Configurator Feature'
|
|
_order = 'sequence'
|
|
|
|
sequence = fields.Integer()
|
|
name = fields.Char(translate=True)
|
|
description = fields.Char(translate=True)
|
|
icon = fields.Char()
|
|
iap_page_code = fields.Char(help='Page code used to tell IAP website_service for which page a snippet list should be generated')
|
|
website_types_preselection = fields.Char(help='Comma-separated list of website type for which this feature should be pre-selected')
|
|
type = fields.Selection([('page', "Page"), ('app', "App")], compute='_compute_type')
|
|
page_view_id = fields.Many2one('ir.ui.view', ondelete='cascade')
|
|
module_id = fields.Many2one('ir.module.module', ondelete='cascade')
|
|
|
|
@api.depends('module_id', 'page_view_id')
|
|
def _compute_type(self):
|
|
for record in self:
|
|
record.type = 'page' if record.page_view_id else 'app'
|
|
|
|
@api.constrains('module_id', 'page_view_id')
|
|
def _check_module_xor_page_view(self):
|
|
if bool(self.module_id) == bool(self.page_view_id):
|
|
raise ValidationError(_("One and only one of the two fields 'page_view_id' and 'module_id' should be set"))
|