From 2c4bb388351595af246cd92cd5983f116d04042b Mon Sep 17 00:00:00 2001 From: Florian Charlier Date: Thu, 25 Aug 2022 13:16:16 +0000 Subject: [PATCH] [ADD] onboarding, base: manage onboardings This technical module can be used to configure onboarding panels flows at company or global level (required for new Appointment onboarding, see ENT PR). This implementation, which should be able to support the migration of the other onboardings, separates the closed state from the completion state (allowing to know that steps are not completed even though the panel is closed). Basic tree and form view are included. Adding an onboarding with this module requires to provide records data for the models: - `onboarding.onboarding` + action to close the panel - `onboarding.onboarding.step` + actions for the 'opening' and 'saving' of each step. See related ENT PR for the `appointment` example, in particular `onboarding_data.xml` and `onboarding_onboarding.py` Several python tests are also included. Misc. In base, we slightly refresh the wording/style of the modal closing the onboarding panel. Task-2852375 Part of Task-2900763 Part-of: odoo/odoo#97105 --- addons/onboarding/__init__.py | 5 + addons/onboarding/__manifest__.py | 22 +++ addons/onboarding/controllers/__init__.py | 4 + addons/onboarding/controllers/onboarding.py | 22 +++ addons/onboarding/data/onboarding_data.xml | 26 ++++ addons/onboarding/models/__init__.py | 7 + .../models/onboarding_onboarding.py | 105 ++++++++++++++ .../onboarding/models/onboarding_progress.py | 73 ++++++++++ .../models/onboarding_progress_step.py | 34 +++++ addons/onboarding/models/onboarding_step.py | 82 +++++++++++ .../onboarding/security/ir.model.access.csv | 13 ++ .../static/src/img/onboarding_bg.png | Bin 0 -> 99181 bytes addons/onboarding/tests/__init__.py | 4 + addons/onboarding/tests/common.py | 86 ++++++++++++ addons/onboarding/tests/test_onboarding.py | 132 ++++++++++++++++++ addons/onboarding/views/onboarding_menus.xml | 14 ++ addons/onboarding/views/onboarding_views.xml | 100 +++++++++++++ odoo/addons/base/views/onboarding_views.xml | 10 +- 18 files changed, 734 insertions(+), 5 deletions(-) create mode 100644 addons/onboarding/__init__.py create mode 100644 addons/onboarding/__manifest__.py create mode 100644 addons/onboarding/controllers/__init__.py create mode 100644 addons/onboarding/controllers/onboarding.py create mode 100644 addons/onboarding/data/onboarding_data.xml create mode 100644 addons/onboarding/models/__init__.py create mode 100644 addons/onboarding/models/onboarding_onboarding.py create mode 100644 addons/onboarding/models/onboarding_progress.py create mode 100644 addons/onboarding/models/onboarding_progress_step.py create mode 100644 addons/onboarding/models/onboarding_step.py create mode 100644 addons/onboarding/security/ir.model.access.csv create mode 100644 addons/onboarding/static/src/img/onboarding_bg.png create mode 100644 addons/onboarding/tests/__init__.py create mode 100644 addons/onboarding/tests/common.py create mode 100644 addons/onboarding/tests/test_onboarding.py create mode 100644 addons/onboarding/views/onboarding_menus.xml create mode 100644 addons/onboarding/views/onboarding_views.xml diff --git a/addons/onboarding/__init__.py b/addons/onboarding/__init__.py new file mode 100644 index 00000000000..7d34c7c054a --- /dev/null +++ b/addons/onboarding/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import controllers +from . import models diff --git a/addons/onboarding/__manifest__.py b/addons/onboarding/__manifest__.py new file mode 100644 index 00000000000..05402a416de --- /dev/null +++ b/addons/onboarding/__manifest__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Onboarding toolbox', + 'version': '1.0', + 'category': 'Hidden', + 'sequence': 9001, + 'description': """ +This module allows to manage onboardings and their progress +================================================================================ + """, + 'depends': ['base'], + 'installable': True, + 'data': [ + 'data/onboarding_data.xml', + 'views/onboarding_views.xml', + 'views/onboarding_menus.xml', + 'security/ir.model.access.csv', + ], + 'license': 'LGPL-3', +} diff --git a/addons/onboarding/controllers/__init__.py b/addons/onboarding/controllers/__init__.py new file mode 100644 index 00000000000..fd2842f8696 --- /dev/null +++ b/addons/onboarding/controllers/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import onboarding diff --git a/addons/onboarding/controllers/onboarding.py b/addons/onboarding/controllers/onboarding.py new file mode 100644 index 00000000000..30c0f189459 --- /dev/null +++ b/addons/onboarding/controllers/onboarding.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import http +from odoo.http import request + + +class OnboardingController(http.Controller): + @http.route('/onboarding/', auth='user', type='json') + def get_onboarding_data(self, route_name=None): + if not request.env.is_admin(): + return {} + + onboarding = request.env['onboarding.onboarding'].search([('route_name', '=', route_name)]) + if onboarding and not onboarding._search_or_create_progress().is_onboarding_closed: + # JS implementation of the onboarding panel expects this data structure + return { + 'html': request.env['ir.qweb']._render( + 'onboarding.onboarding_panel', onboarding._prepare_rendering_values()) + } + + return {} diff --git a/addons/onboarding/data/onboarding_data.xml b/addons/onboarding/data/onboarding_data.xml new file mode 100644 index 00000000000..5e30c744697 --- /dev/null +++ b/addons/onboarding/data/onboarding_data.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/addons/onboarding/models/__init__.py b/addons/onboarding/models/__init__.py new file mode 100644 index 00000000000..8fd1fc0e1d6 --- /dev/null +++ b/addons/onboarding/models/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import onboarding_onboarding +from . import onboarding_step +from . import onboarding_progress +from . import onboarding_progress_step diff --git a/addons/onboarding/models/onboarding_onboarding.py b/addons/onboarding/models/onboarding_onboarding.py new file mode 100644 index 00000000000..c6e786d70f1 --- /dev/null +++ b/addons/onboarding/models/onboarding_onboarding.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models +from odoo.addons.onboarding.models.onboarding_progress import ONBOARDING_PROGRESS_STATES + + +class Onboarding(models.Model): + _name = 'onboarding.onboarding' + _description = 'Onboarding' + _order = 'sequence asc, id desc' + + name = fields.Char('Name of the onboarding', translate=True) + # One word identifier used to define the onboarding panel's route: `/onboarding/{route_name}`. + route_name = fields.Char('One word name', required=True) + step_ids = fields.One2many('onboarding.onboarding.step', 'onboarding_id', 'Onboarding steps') + + is_per_company = fields.Boolean('Should be done per company?', default=True) + + panel_background_color = fields.Selection( + [('orange', 'Orange'), ('blue', 'Blue'), ('violet', 'Violet'), ('none', 'None')], + string="Panel's Background color", default='orange', + help="Color gradient added to the panel's background.") + panel_background_image = fields.Binary("Panel's background image") + panel_close_action_name = fields.Char( + 'Closing action', help='Name of the onboarding model action to execute when closing the panel.') + + current_progress_id = fields.Many2one( + 'onboarding.progress', 'Onboarding Progress', compute='_compute_current_progress', + help='Onboarding Progress for the current context (company).') + current_onboarding_state = fields.Selection( + ONBOARDING_PROGRESS_STATES, string='Completion State', compute='_compute_current_progress', readonly=True) + is_onboarding_closed = fields.Boolean(string='Was panel closed?', compute='_compute_current_progress') + + progress_ids = fields.One2many( + 'onboarding.progress', 'onboarding_id', string='Onboarding Progress Records', readonly=True, + help='All Onboarding Progress Records (across companies).') + + sequence = fields.Integer(default=10) + _sql_constraints = [ + ('route_name_uniq', 'UNIQUE (route_name)', 'Onboarding alias must be unique.'), + ] + + @api.depends_context('company') + @api.depends('progress_ids', 'progress_ids.is_onboarding_closed', 'progress_ids.onboarding_state') + def _compute_current_progress(self): + for onboarding in self: + current_progress_id = onboarding.progress_ids.filtered( + lambda progress: progress.company_id.id in {False, self.env.company.id}) + if current_progress_id: + onboarding.current_onboarding_state = current_progress_id.onboarding_state + onboarding.current_progress_id = current_progress_id + onboarding.is_onboarding_closed = current_progress_id.is_onboarding_closed + else: + onboarding.current_onboarding_state = 'not_done' + onboarding.current_progress_id = False + onboarding.is_onboarding_closed = False + + def action_close(self): + """Close the onboarding panel.""" + self.current_progress_id.action_close() + + def action_toggle_visibility(self): + self.current_progress_id.action_toggle_visibility() + + def write(self, values): + if 'is_per_company' in values: + onboardings_per_company_update = self.filtered( + lambda onboarding: onboarding.is_per_company != values['is_per_company']) + + res = super().write(values) + + if 'is_per_company' in values: + # When changing this parameter, all progress (onboarding and steps) is reset. + onboardings_per_company_update.progress_ids.unlink() + return res + + def _search_or_create_progress(self): + """Create Progress record(s) as necessary for the context. + """ + onboardings_without_progress = self.filtered(lambda onboarding: not onboarding.current_progress_id) + onboardings_without_progress._create_progress() + return self.current_progress_id + + def _create_progress(self): + return self.env['onboarding.progress'].create([ + { + 'company_id': self.env.company.id if onboarding.is_per_company else False, + 'onboarding_id': onboarding.id + } for onboarding in self + ]) + + def _prepare_rendering_values(self): + self.ensure_one() + values = { + 'bg_image': f'/web/image/onboarding.onboarding/{self.id}/panel_background_image', + 'close_method': self.panel_close_action_name, + 'close_model': 'onboarding.onboarding', + 'steps': self.step_ids, + 'state': self.current_progress_id._get_and_update_onboarding_state(), + } + if self.panel_background_color != 'none': + values.update(classes=f'o_onboarding_{self.panel_background_color}') + + return values diff --git a/addons/onboarding/models/onboarding_progress.py b/addons/onboarding/models/onboarding_progress.py new file mode 100644 index 00000000000..c5a5dcc7da8 --- /dev/null +++ b/addons/onboarding/models/onboarding_progress.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +ONBOARDING_PROGRESS_STATES = [ + ('not_done', 'Not done'), + ('just_done', 'Just done'), + ('done', 'Done'), +] + + +class OnboardingProgress(models.Model): + _name = 'onboarding.progress' + _description = 'Onboarding Progress Tracker' + _rec_name = 'onboarding_id' + + onboarding_state = fields.Selection( + ONBOARDING_PROGRESS_STATES, string='Onboarding progress', compute='_compute_onboarding_state', store=True) + is_onboarding_closed = fields.Boolean('Was panel closed?') + company_id = fields.Many2one('res.company') + onboarding_id = fields.Many2one( + 'onboarding.onboarding', 'Related onboarding tracked', required=True, ondelete='cascade') + progress_step_ids = fields.One2many('onboarding.progress.step', 'progress_id', 'Progress Steps Trackers') + _sql_constraints = [ + ('onboarding_company_uniq', 'unique (onboarding_id,company_id)', + 'There cannot be multiple records of the same onboarding completion for the same company.'), + ] + + @api.depends('onboarding_id.step_ids', 'progress_step_ids', 'progress_step_ids.step_state') + def _compute_onboarding_state(self): + progress_steps_data = self.env['onboarding.progress.step'].read_group( + [('progress_id', 'in', self.ids), ('step_state', 'in', ['just_done', 'done'])], + ['progress_id'], ['progress_id'] + ) + result = dict((data['progress_id'][0], data['progress_id_count']) for data in progress_steps_data) + for progress in self: + progress.onboarding_state = ( + 'not_done' if result.get(progress.id, 0) != len(progress.onboarding_id.step_ids) + else 'done') + + def action_close(self): + self.is_onboarding_closed = True + + def action_toggle_visibility(self): + for progress in self: + progress.is_onboarding_closed = not progress.is_onboarding_closed + + def _get_and_update_onboarding_state(self): + """Used to fetch the progress of an onboarding for rendering its panel and is expected to + be called by the onboarding controller. It also has the responsibility of updating the + 'just_done' states into 'done' so that the 'just_done' states are only rendered once. + """ + self.ensure_one() + onboarding_states_values = {} + progress_steps_to_consolidate = self.env['onboarding.progress.step'] + + # Iterate over onboarding step_ids and not self.progress_step_ids because 'not_done' steps + # may not have a progress_step record. + for step in self.onboarding_id.step_ids: + step_state = step.current_step_state + if step_state == 'just_done': + progress_steps_to_consolidate |= step.current_progress_step_id + onboarding_states_values[step.id] = step_state + + progress_steps_to_consolidate.action_consolidate_just_done() + + if self.is_onboarding_closed: + onboarding_states_values['onboarding_state'] = 'closed' + elif self.onboarding_state == 'done': + onboarding_states_values['onboarding_state'] = 'just_done' if progress_steps_to_consolidate else 'done' + return onboarding_states_values diff --git a/addons/onboarding/models/onboarding_progress_step.py b/addons/onboarding/models/onboarding_progress_step.py new file mode 100644 index 00000000000..04c3538ff44 --- /dev/null +++ b/addons/onboarding/models/onboarding_progress_step.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models +from odoo.addons.onboarding.models.onboarding_progress import ONBOARDING_PROGRESS_STATES + + +class OnboardingProgressStep(models.Model): + _name = 'onboarding.progress.step' + _description = 'Onboarding Progress Step Tracker' + _rec_name = 'step_id' + + progress_id = fields.Many2one( + 'onboarding.progress', 'Related Onboarding Progress Tracker', required=True, ondelete='cascade') + step_state = fields.Selection( + ONBOARDING_PROGRESS_STATES, string='Onboarding Step Progress', default='not_done') + onboarding_id = fields.Many2one(related='progress_id.onboarding_id', string='Onboarding') + step_id = fields.Many2one( + 'onboarding.onboarding.step', string='Onboarding Step', required=True, ondelete='cascade') + + _sql_constraints = [ + ('progress_step_uniq', 'unique (progress_id, step_id)', + 'There cannot be multiple records of the same onboarding step completion for the same Progress record.'), + ] + + def action_consolidate_just_done(self): + was_just_done = self.filtered(lambda progress: progress.step_state == 'just_done') + was_just_done.step_state = 'done' + return was_just_done + + def action_set_just_done(self): + not_done = self.filtered_domain([('step_state', '=', 'not_done')]) + not_done.step_state = 'just_done' + return not_done diff --git a/addons/onboarding/models/onboarding_step.py b/addons/onboarding/models/onboarding_step.py new file mode 100644 index 00000000000..d98d771cf0a --- /dev/null +++ b/addons/onboarding/models/onboarding_step.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import _, api, fields, models +from odoo.addons.onboarding.models.onboarding_progress import ONBOARDING_PROGRESS_STATES + + +class OnboardingStep(models.Model): + _name = 'onboarding.onboarding.step' + _description = 'Onboarding Step' + _order = 'sequence asc, id asc' + _rec_name = 'title' + + onboarding_id = fields.Many2one( + 'onboarding.onboarding', string='Onboarding', readonly=True, required=True, ondelete='cascade') + + title = fields.Char('Title', translate=True) + description = fields.Char('Description', translate=True) + button_text = fields.Char( + 'Button text', required=True, default=_("Let's do it"), translate=True, + help="Text on the panel's button to start this step") + done_icon = fields.Char('Font Awesome Icon when completed', default='fa-star') + done_text = fields.Char( + 'Text to show when step is completed', default=_('Step Completed! - Click to review'), translate=True) + panel_step_open_action_name = fields.Char( + string='Opening action', required=True, + help='Name of the onboarding step model action to execute when opening the step, ' + 'e.g. action_open_onboarding_1_step_1') + + current_progress_step_id = fields.Many2one( + 'onboarding.progress.step', string='Step Progress', + compute='_compute_current_progress', help='Onboarding Progress Step for the current context (company).') + current_step_state = fields.Selection( + ONBOARDING_PROGRESS_STATES, string='Completion State', compute='_compute_current_progress') + progress_ids = fields.One2many( + 'onboarding.progress.step', 'step_id', string='Onboarding Progress Step Records', readonly=True, + help='All related Onboarding Progress Step Records (across companies)') + + sequence = fields.Integer(default=10) + + @api.depends_context('company') + @api.depends('progress_ids', 'progress_ids.step_state') + def _compute_current_progress(self): + existing_progress_steps = self.progress_ids.filtered_domain([ + ('step_id', 'in', self.ids), + ('progress_id.company_id', 'in', [False, self.env.company.id]), + ]) + for step in self: + if step in existing_progress_steps.step_id: + current_progress_step_id = existing_progress_steps.filtered( + lambda progress_step: progress_step.step_id == step) + step.current_progress_step_id = current_progress_step_id + step.current_step_state = current_progress_step_id.step_state + else: + step.current_progress_step_id = False + step.current_step_state = 'not_done' + + def action_set_just_done(self): + # Make sure progress records exist for the current context (company) + steps_without_progress = self.filtered(lambda step: not step.current_progress_step_id) + steps_without_progress._create_progress_steps() + return self.current_progress_step_id.action_set_just_done() + + def _create_progress_steps(self): + onboarding_progress_records = self.env['onboarding.progress'].search([ + ('onboarding_id', 'in', self.onboarding_id.ids), + ('company_id', 'in', [False, self.env.company.id]) + ]) + progress_step_values = [] + for onboarding_progress_record in onboarding_progress_records: + progress_step_values += [ + { + 'onboarding_id': onboarding_progress_record.onboarding_id.id, + 'progress_id': onboarding_progress_record.id, + 'step_id': step_id.id, + } + for step_id + in self.filtered(lambda step: self.onboarding_id == onboarding_progress_record.onboarding_id) + if step_id not in onboarding_progress_record.progress_step_ids.step_id + ] + + return self.env['onboarding.progress.step'].create(progress_step_values) diff --git a/addons/onboarding/security/ir.model.access.csv b/addons/onboarding/security/ir.model.access.csv new file mode 100644 index 00000000000..f99bf429ceb --- /dev/null +++ b/addons/onboarding/security/ir.model.access.csv @@ -0,0 +1,13 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_onboarding_all,onboarding.onboarding.all,model_onboarding_onboarding,,0,0,0,0 +access_onboarding_user,onboarding.onboarding.user,model_onboarding_onboarding,base.group_user,0,0,0,0 +access_onboarding_manager,onboarding.onboarding.manager,model_onboarding_onboarding,base.group_system,1,1,1,1 +access_onboarding_step_all,onboarding.onboarding.step.all,model_onboarding_onboarding_step,,0,0,0,0 +access_onboarding_step_user,onboarding.onboarding.step.user,model_onboarding_onboarding_step,base.group_user,0,0,0,0 +access_onboarding_step_manager,onboarding.onboarding.step.manager,model_onboarding_onboarding_step,base.group_system,1,1,1,1 +access_onboarding_progress_all,onboarding.progress.all,model_onboarding_progress,,0,0,0,0 +access_onboarding_progress_user,onboarding.progress.user,model_onboarding_progress,base.group_user,0,0,0,0 +access_onboarding_progress_manager,onboarding.progress.manager,model_onboarding_progress,base.group_system,1,1,1,1 +access_onboarding_progress_step_all,onboarding.progress.step.all,model_onboarding_progress_step,,0,0,0,0 +access_onboarding_progress_step_user,onboarding.progress.step.user,model_onboarding_progress_step,base.group_user,0,0,0,0 +access_onboarding_progress_step_manager,onboarding.progress.step.manager,model_onboarding_progress_step,base.group_system,1,1,1,1 diff --git a/addons/onboarding/static/src/img/onboarding_bg.png b/addons/onboarding/static/src/img/onboarding_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..de7cf0fec9712e0af22e4342faafe7d326e7d2bc GIT binary patch literal 99181 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

mLF_I`j{huASs(w5Qmn*7bx^XI#prM0djINZZI zPYn?smb~j!8#7ygU}wv20RH=5zdU54zSIJySn(1SfjdG9KbJBNLrT<9Jvh4(M|5YV z@@%``Ptle>3p7x%l+g*3a= zq^}t?2_pKp#~_WSR-1G}BWe?+GbME9VyZ@_po`=LNJ-A9u5mpcK6}%v0-CXzE@wUN zqakh17@{zsh+=~VVyw6vzW?gOj;n{e8-1?dLI<}V&m zR_S_mP!dBEni-(tjc`asp99^yY{D7(8k-_*{FS9e|KY0RWq!)N2K+r*aJdHe2{4t_X2T%j%)vDX9~J^HH+RBTL1 zWk}I{*}rG0VcBzvP8NQxH%X2@MLSOKXYHmU!0B>-JoIT1NXArermafY&~B{vT6I2_ zfQJ&p;qR}%xxX><{^|nVXH2f`oXR%Wlb0Cuyq8=rZ?eo&M=BzsPSW+0d7(D~DKMDn zOtIEzi8-bbq~<6!t5<0DSrbT^kT8b!nowlyK!IpDAzGtLewLIKrsJJ`UhbwrN{4&d zxRha>-TG!O4A()5Uj`8nY6za*+Vz}cIjDWOwt&3<)2T64>1K-3%ta6s4S1`iMoSem zP}Q>4shA|OvuW4m>J^=7+1ky-+{s$#c?2RPX)2W-{{S~8+>`B`t9JkZ002ovPDHLk FV1mDPf0h6M literal 0 HcmV?d00001 diff --git a/addons/onboarding/tests/__init__.py b/addons/onboarding/tests/__init__.py new file mode 100644 index 00000000000..cd240e870a0 --- /dev/null +++ b/addons/onboarding/tests/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import test_onboarding diff --git a/addons/onboarding/tests/common.py b/addons/onboarding/tests/common.py new file mode 100644 index 00000000000..9f4dba3f271 --- /dev/null +++ b/addons/onboarding/tests/common.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.tests.common import TransactionCase + + +class TestOnboardingCommon(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Create two companies including Mitchell + cls.user_admin = cls.env.ref('base.user_admin') + + cls.company_1 = cls.user_admin.company_id + cls.company_2 = cls.env['res.company'].create({ + 'currency_id': cls.env.ref('base.AUD').id, + 'name': 'New Test Company', + }) + cls.user_admin.company_ids |= cls.company_2 + + cls.onboarding_1 = cls.env['onboarding.onboarding'].create([ + { + 'name': 'Test Onboarding 1', + 'is_per_company': False, + 'route_name': 'onboarding1' + } + ]) + + # create a fake action for step opening + cls.action_fake_open_onboarding_step = cls.env['ir.actions.act_window'].create({ + 'name': 'action_fake_open_onboarding_step', + 'res_model': 'onboarding.onboarding', + }) + + # Add two steps + cls.onboarding_1_step_1, cls.onboarding_1_step_2 = cls.env['onboarding.onboarding.step'].create([ + { + 'title': f'Test Onboarding 1 - Step {step_n}', + 'onboarding_id': cls.onboarding_1.id, + 'panel_step_open_action_name': 'action_fake_open_onboarding_step', + } + for step_n in range(1, 3) + ]) + + # Create progress records as would happen through the controller + cls.onboarding_1.with_company(cls.company_1)._search_or_create_progress() + + def assert_step_is_done(self, step, also_with_company=None): + self.assertIn( + step.current_progress_step_id.step_state, {'done', 'just_done'}, + f'Expected done-like current state for step {step.id} for {step.env.company}') + self.assertEqual(step.current_progress_step_id.step_state, step.current_step_state) + if also_with_company: + self.assert_step_is_done(step.with_company(also_with_company)) + + def assert_step_is_not_done(self, step, also_with_company=None): + self.assertIn( + step.current_progress_step_id.step_state, {'not_done', False}, + f'Expected "not_done" current state for step {step.id} for {step.env.company}') + self.assertEqual(step.current_step_state, 'not_done') + if also_with_company: + self.assert_step_is_not_done(step.with_company(also_with_company)) + + def assert_onboarding_is_done(self, onboarding, also_with_company=None): + self.assertIn( + onboarding.current_progress_id.onboarding_state, {'done', 'just_done'}, + f'Expected done-like current state for onboarding {onboarding.name} ' + f'for {onboarding.env.company}') + self.assertEqual(onboarding.current_progress_id.onboarding_state, + onboarding.current_onboarding_state) + if also_with_company: + self.assert_onboarding_is_done(onboarding.with_company(also_with_company)) + + def assert_onboarding_is_not_done(self, onboarding, also_with_company=None): + self.assertEqual( + onboarding.current_progress_id.onboarding_state, 'not_done', + f'Expected "not_done" current state for onboarding {onboarding.name} ' + f'for {onboarding.env.company}') + self.assertEqual(onboarding.current_onboarding_state, 'not_done') + if also_with_company: + self.assert_onboarding_is_not_done(onboarding.with_company(also_with_company)) + + def activate_company(self, company): + self.onboarding_1_step_1 = self.onboarding_1_step_1.with_company(company) + self.onboarding_1_step_2 = self.onboarding_1_step_2.with_company(company) + self.onboarding_1 = self.onboarding_1.with_company(company) diff --git a/addons/onboarding/tests/test_onboarding.py b/addons/onboarding/tests/test_onboarding.py new file mode 100644 index 00000000000..92e82a17918 --- /dev/null +++ b/addons/onboarding/tests/test_onboarding.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.addons.onboarding.tests.common import TestOnboardingCommon + + +class TestOnboarding(TestOnboardingCommon): + def test_onboarding_completion_global(self): + # Completing onboarding as company_1 + self.assertEqual(self.env.company, self.company_1) + self.assertDictEqual( + self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), + {self.onboarding_1_step_1.id: 'not_done', self.onboarding_1_step_2.id: 'not_done'}) + + self.onboarding_1_step_1.action_set_just_done() + # Test completed step state consolidation from `just_done` to `done` + self.assertDictEqual( + self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), + {self.onboarding_1_step_1.id: 'just_done', self.onboarding_1_step_2.id: 'not_done'}) + self.assertDictEqual( + self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), + {self.onboarding_1_step_1.id: 'done', self.onboarding_1_step_2.id: 'not_done'}) + self.assert_step_is_done(self.onboarding_1_step_1, self.company_2) + self.assert_onboarding_is_not_done(self.onboarding_1, self.company_2) + + self.onboarding_1_step_2.action_set_just_done() + self.assert_step_is_done(self.onboarding_1_step_2, self.company_2) + self.assert_onboarding_is_done(self.onboarding_1, self.company_2) + + # Once onboarding is done, a key 'onboarding_state' is added to the rendering values + self.assertDictEqual( + self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), + {self.onboarding_1_step_1.id: 'done', self.onboarding_1_step_2.id: 'just_done', 'onboarding_state': 'just_done'}) + # Consolidate values + self.assertDictEqual( + self.onboarding_1.current_progress_id._get_and_update_onboarding_state(), + {self.onboarding_1_step_1.id: 'done', self.onboarding_1_step_2.id: 'done', 'onboarding_state': 'done'}) + + self.onboarding_1.current_progress_id.action_close() + self.assertTrue(self.onboarding_1.current_progress_id.is_onboarding_closed) + + # Adding new step resets onboarding state to 'not_done' even if closed + onboarding_1_step_3 = self.env['onboarding.onboarding.step'].create({ + 'title': 'Test Onboarding 1 - Step 3', + 'onboarding_id': self.onboarding_1.id, + 'panel_step_open_action_name': 'action_fake_open_onboarding_step', + }) + self.assert_step_is_not_done(onboarding_1_step_3) + self.assert_onboarding_is_not_done(self.onboarding_1) + + # Completing it sets onboarding state to done again + onboarding_1_step_3.action_set_just_done() + self.assert_onboarding_is_done(self.onboarding_1) + + # If a company is added, onboarding is 'done' + company_3 = self.env.company.create({ + 'currency_id': self.env.ref('base.EUR').id, + 'name': 'Another Test Company', + }) + self.assert_onboarding_is_done(self.onboarding_1.with_company(company_3)) + + # Adding new step resets onboarding state to 'not_done' + self.env['onboarding.onboarding.step'].create({ + 'title': 'Test Onboarding 1 - Step 4', + 'onboarding_id': self.onboarding_1.id, + 'panel_step_open_action_name': 'action_fake_open_onboarding_step', + }) + + # Closing the panel still allows to track if all steps are completed + self.onboarding_1.action_close() + self.assertTrue(self.onboarding_1.current_progress_id.is_onboarding_closed) + self.assert_onboarding_is_not_done(self.onboarding_1) + + def test_onboarding_completion_per_company(self): + """Checks the behavior of onboarding and step states in multi-company setting: + the onboarding state has to track the completion of each of its steps, global and + per-company, to determine if whether it is completed. + """ + # Completing onboarding as company_1 + self.assertEqual(self.env.company, self.company_1) + + # Updating onboarding to per-company + self.onboarding_1.is_per_company = True + # Required after progress reset (simulate role of controller) + self.onboarding_1._search_or_create_progress() + + self.onboarding_1_step_1.action_set_just_done() + self.assert_step_is_done(self.onboarding_1_step_1) + + self.onboarding_1_step_2.action_set_just_done() + self.assert_onboarding_is_done(self.onboarding_1) + + # Completing onboarding as existing company_2 + self.activate_company(self.company_2) + # First access from company_2 + self.onboarding_1._search_or_create_progress() + + # Blank state for company 2 + self.assert_step_is_not_done(self.onboarding_1_step_1) + self.assert_onboarding_is_not_done(self.onboarding_1) + + # But no change for company 1 + self.assert_step_is_done(self.onboarding_1_step_1.with_company(self.company_1)) + self.assert_onboarding_is_done(self.onboarding_1.with_company(self.company_1)) + + self.onboarding_1_step_1.action_set_just_done() + self.assert_step_is_done(self.onboarding_1_step_1) + self.assert_onboarding_is_not_done(self.onboarding_1) + self.onboarding_1_step_2.with_company(self.company_2).action_set_just_done() + self.assert_step_is_done(self.onboarding_1_step_2) + self.assert_onboarding_is_done(self.onboarding_1) + + # is_onboarding_closed status is also company-independent + self.onboarding_1.action_close() + self.assertTrue(self.onboarding_1.current_progress_id.is_onboarding_closed) + self.assertFalse(self.onboarding_1.with_company(self.company_1).current_progress_id.is_onboarding_closed) + + def test_onboarding_to_company_change(self): + """Checks that changing onboarding to per-company resets completions states. + """ + # Completing onboarding as company_1 + self.assertEqual(self.env.company, self.company_1) + self.onboarding_1_step_1.action_set_just_done() + self.onboarding_1_step_2.action_set_just_done() + self.assert_onboarding_is_done(self.onboarding_1) + + # Updating onboarding to per-company + self.onboarding_1.is_per_company = True + # Required after progress reset (simulate role of controller) + self.onboarding_1._search_or_create_progress() + + self.assert_onboarding_is_not_done(self.onboarding_1) diff --git a/addons/onboarding/views/onboarding_menus.xml b/addons/onboarding/views/onboarding_menus.xml new file mode 100644 index 00000000000..f036c70072c --- /dev/null +++ b/addons/onboarding/views/onboarding_menus.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/addons/onboarding/views/onboarding_views.xml b/addons/onboarding/views/onboarding_views.xml new file mode 100644 index 00000000000..87595825a37 --- /dev/null +++ b/addons/onboarding/views/onboarding_views.xml @@ -0,0 +1,100 @@ + + + + onboarding.onboarding.view.tree + onboarding.onboarding + + +

+
+ + + + + + + + + + + onboarding.onboarding.view.form + onboarding.onboarding + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+ + + onboarding.onboarding.step.view.tree + onboarding.onboarding.step + + + + + + + + + + + + onboarding.onboarding.step.view.form + onboarding.onboarding.step + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + Onboardings + onboarding.onboarding + tree,form + + + + Onboarding Steps + onboarding.onboarding.step + tree,form + + diff --git a/odoo/addons/base/views/onboarding_views.xml b/odoo/addons/base/views/onboarding_views.xml index b47b0282246..837199872a2 100644 --- a/odoo/addons/base/views/onboarding_views.xml +++ b/odoo/addons/base/views/onboarding_views.xml @@ -5,19 +5,19 @@