From a4bd3e0db11935cf64cb8b769331a7da4affdb20 Mon Sep 17 00:00:00 2001 From: Julien Banken Date: Thu, 26 Aug 2021 06:56:37 +0000 Subject: [PATCH] [IMP] website_event_track: improve track management through stage legend In order to make the kanban view more customizable, we will allow the administrators to give a custom legend on the event track stages. With the custom legends, the employees should be able to find their way more easily especially if the company uses its own internal processes. The custom description of the track stage will appear in a tooltip when the user hovers the corresponding kanban column and does not move for a few seconds. It can help people understand the role of each track stage. In order to ease track management, tags are now searchable directly from track view. task-2504216 COM PR: odoo/odoo#69585 UPG PR: odoo/upgrade#2408 --- .../website_event_track/models/event_track.py | 23 ++++++++++++++++++- .../models/event_track_stage.py | 10 ++++++-- .../views/event_track_stage_views.xml | 21 +++++++++++++++++ .../views/event_track_views.xml | 19 ++++++++++----- 4 files changed, 64 insertions(+), 9 deletions(-) diff --git a/addons/website_event_track/models/event_track.py b/addons/website_event_track/models/event_track.py index 5eaac977767..302090a1e1e 100644 --- a/addons/website_event_track/models/event_track.py +++ b/addons/website_event_track/models/event_track.py @@ -42,15 +42,24 @@ class Track(models.Model): group_expand='_read_group_stage_ids', required=True, tracking=True) is_accepted = fields.Boolean('Is Accepted', related='stage_id.is_accepted', readonly=True) + legend_blocked = fields.Char(related='stage_id.legend_blocked', + string='Kanban Blocked Explanation', readonly=True) + legend_done = fields.Char(related='stage_id.legend_done', + string='Kanban Valid Explanation', readonly=True) + legend_normal = fields.Char(related='stage_id.legend_normal', + string='Kanban Ongoing Explanation', readonly=True) kanban_state = fields.Selection([ ('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')], string='Kanban State', - copy=False, default='normal', required=True, tracking=True, + copy=False, default='normal', required=True, help="A track's kanban state indicates special situations affecting it:\n" " * Grey is the default situation\n" " * Red indicates something is preventing the progress of this track\n" " * Green indicates the track is ready to be pulled to the next stage") + kanban_state_label = fields.Char( + string='Kanban State Label', compute='_compute_kanban_state_label', store=True, + tracking=True) partner_id = fields.Many2one('res.partner', 'Contact', help="Contact of the track, may be different from speaker.") # speaker information partner_name = fields.Char( @@ -159,6 +168,18 @@ class Track(models.Model): if track.id: track.website_url = '/event/%s/track/%s' % (slug(track.event_id), slug(track)) + # STAGES + + @api.depends('stage_id', 'kanban_state') + def _compute_kanban_state_label(self): + for track in self: + if track.kanban_state == 'normal': + track.kanban_state_label = track.stage_id.legend_normal + elif track.kanban_state == 'blocked': + track.kanban_state_label = track.stage_id.legend_blocked + else: + track.kanban_state_label = track.stage_id.legend_done + # SPEAKER @api.depends('partner_id') diff --git a/addons/website_event_track/models/event_track_stage.py b/addons/website_event_track/models/event_track_stage.py index 9e1a177c0f3..c5c33cb5b88 100644 --- a/addons/website_event_track/models/event_track_stage.py +++ b/addons/website_event_track/models/event_track_stage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +from odoo import _, fields, models class TrackStage(models.Model): @@ -15,6 +15,13 @@ class TrackStage(models.Model): 'mail.template', string='Email Template', domain=[('model', '=', 'event.track')], help="If set an email will be sent to the customer when the track reaches this step.") + # legends + color = fields.Integer(string='Color') + description = fields.Text(string='Description', translate=True) + legend_blocked = fields.Char('Red Kanban Label', default=lambda s: _('Blocked'), translate=True) + legend_done = fields.Char('Green Kanban Label', default=lambda s: _('Ready for Next Stage'), translate=True) + legend_normal = fields.Char('Grey Kanban Label', default=lambda s: _('In Progress'), translate=True) + # pipe fold = fields.Boolean( string='Folded in Kanban', help='This stage is folded in the kanban view when there are no records in that stage to display.') @@ -26,4 +33,3 @@ class TrackStage(models.Model): help='Done tracks are automatically published so that they are available in frontend.') is_cancel = fields.Boolean(string='Canceled Stage') is_done = fields.Boolean() - color = fields.Integer(string='Color') diff --git a/addons/website_event_track/views/event_track_stage_views.xml b/addons/website_event_track/views/event_track_stage_views.xml index 9ee7adf3c2b..a326d6c5027 100644 --- a/addons/website_event_track/views/event_track_stage_views.xml +++ b/addons/website_event_track/views/event_track_stage_views.xml @@ -32,6 +32,27 @@ + +

+ Define labels explaining kanban state management. +

+
diff --git a/addons/website_event_track/views/event_track_views.xml b/addons/website_event_track/views/event_track_views.xml index 2977b61e477..e018de90ee0 100644 --- a/addons/website_event_track/views/event_track_views.xml +++ b/addons/website_event_track/views/event_track_views.xml @@ -17,13 +17,16 @@ event.track + + + + + + + + + - - - - - -
@@ -87,6 +90,7 @@ + @@ -139,6 +143,9 @@
+ + +