From 35bb9ffd52a8a192b5a6f2966a103912d6881a14 Mon Sep 17 00:00:00 2001 From: Aditya Sharma Date: Wed, 7 Jun 2023 17:09:39 +0530 Subject: [PATCH] [IMP] various: add minor UI improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PURPOSE Slightly modify various apps to improve the user experience. Changes include notably labels and views fine tuning, roundings, and small css fixes. SPECIFICATIONS - Remove the decorator from the event list view as it's a bit confusing - Ensure mailing KPIs are now shown with 2 decimal places - Re-order the mailing stat buttons - Improve the background / font colors of the cover block - Improve the labels of: - Title and confirm button of the /button and /link modals - Confirm button when archiving a record Task-3204554 closes odoo/odoo#128108 Related: odoo/enterprise#43937 Signed-off-by: Warnon Aurélien (awa) --- addons/event/views/event_event_views.xml | 3 +-- addons/mass_mailing/models/mailing.py | 21 ++++++++------- addons/mass_mailing/models/utm_campaign.py | 17 ++++++------ .../tests/test_mailing_ab_testing.py | 6 ++--- .../views/mailing_mailing_views.xml | 26 ++++++++++--------- .../mass_mailing/views/snippets/s_cover.xml | 5 ++-- .../models/mailing_mailing.py | 2 +- .../models/mailing_mailing.py | 4 +-- .../tests/test_mailing_statistics.py | 2 +- .../tests/test_mailing_statistics_sms.py | 2 +- .../static/src/views/kanban/kanban_header.js | 1 + .../static/src/js/wysiwyg/wysiwyg.js | 10 +++---- addons/web_editor/static/src/xml/wysiwyg.xml | 5 ++-- 13 files changed, 55 insertions(+), 49 deletions(-) diff --git a/addons/event/views/event_event_views.xml b/addons/event/views/event_event_views.xml index 1b26f398ba2..566bc9a90c7 100644 --- a/addons/event/views/event_event_views.xml +++ b/addons/event/views/event_event_views.xml @@ -15,7 +15,7 @@ type="action" class="oe_stat_button" icon="fa-line-chart">
- Registration statistics + Registration
@@ -117,7 +117,6 @@ event.event diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index d11ca8bfc0b..2fd89771c74 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -22,6 +22,7 @@ from odoo import api, fields, models, tools, _ from odoo.addons.base_import.models.base_import import ImportValidationError from odoo.exceptions import UserError, ValidationError from odoo.osv import expression +from odoo.tools.float_utils import float_round _logger = logging.getLogger(__name__) @@ -216,11 +217,11 @@ class MassMailing(models.Model): replied = fields.Integer(compute="_compute_statistics") bounced = fields.Integer(compute="_compute_statistics") failed = fields.Integer(compute="_compute_statistics") - received_ratio = fields.Integer(compute="_compute_statistics", string='Received Ratio') - opened_ratio = fields.Integer(compute="_compute_statistics", string='Opened Ratio') - replied_ratio = fields.Integer(compute="_compute_statistics", string='Replied Ratio') - bounced_ratio = fields.Integer(compute="_compute_statistics", string='Bounced Ratio') - clicks_ratio = fields.Integer(compute="_compute_clicks_ratio", string="Number of Clicks") + received_ratio = fields.Float(compute="_compute_statistics", string='Received Ratio') + opened_ratio = fields.Float(compute="_compute_statistics", string='Opened Ratio') + replied_ratio = fields.Float(compute="_compute_statistics", string='Replied Ratio') + bounced_ratio = fields.Float(compute="_compute_statistics", string='Bounced Ratio') + clicks_ratio = fields.Float(compute="_compute_clicks_ratio", string="Number of Clicks") next_departure = fields.Datetime(compute="_compute_next_departure", string='Scheduled date') # UX warning_message = fields.Char( @@ -287,7 +288,7 @@ class MassMailing(models.Model): GROUP BY stats.mass_mailing_id """, [tuple(self.ids) or (None,)]) mass_mailing_data = self.env.cr.dictfetchall() - mapped_data = dict([(m['id'], 100 * m['nb_clicks'] / m['nb_mails']) for m in mass_mailing_data]) + mapped_data = dict([(m['id'], float_round(100 * m['nb_clicks'] / m['nb_mails'], precision_digits=2)) for m in mass_mailing_data]) for mass_mailing in self: mass_mailing.clicks_ratio = mapped_data.get(mass_mailing.id, 0) @@ -329,10 +330,10 @@ class MassMailing(models.Model): """, (tuple(self.ids), )) for row in self.env.cr.dictfetchall(): total = (row['expected'] - row['canceled']) or 1 - row['received_ratio'] = 100.0 * row['delivered'] / total - row['opened_ratio'] = 100.0 * row['opened'] / total - row['replied_ratio'] = 100.0 * row['replied'] / total - row['bounced_ratio'] = 100.0 * row['bounced'] / total + row['received_ratio'] = float_round(100.0 * row['delivered'] / total, precision_digits=2) + row['opened_ratio'] = float_round(100.0 * row['opened'] / total, precision_digits=2) + row['replied_ratio'] = float_round(100.0 * row['replied'] / total, precision_digits=2) + row['bounced_ratio'] = float_round(100.0 * row['bounced'] / total, precision_digits=2) self.browse(row.pop('mailing_id')).update(row) def _compute_next_departure(self): diff --git a/addons/mass_mailing/models/utm_campaign.py b/addons/mass_mailing/models/utm_campaign.py index 9183b4f36b0..ceb6f20c2d5 100644 --- a/addons/mass_mailing/models/utm_campaign.py +++ b/addons/mass_mailing/models/utm_campaign.py @@ -6,6 +6,7 @@ from dateutil.relativedelta import relativedelta from odoo import api, fields, models, _ from odoo.exceptions import ValidationError +from odoo.tools.float_utils import float_round class UtmCampaign(models.Model): @@ -37,10 +38,10 @@ class UtmCampaign(models.Model): help="Selection to determine the winner mailing that will be sent.") # stat fields - received_ratio = fields.Integer(compute="_compute_statistics", string='Received Ratio') - opened_ratio = fields.Integer(compute="_compute_statistics", string='Opened Ratio') - replied_ratio = fields.Integer(compute="_compute_statistics", string='Replied Ratio') - bounced_ratio = fields.Integer(compute="_compute_statistics", string='Bounced Ratio') + received_ratio = fields.Float(compute="_compute_statistics", string='Received Ratio') + opened_ratio = fields.Float(compute="_compute_statistics", string='Opened Ratio') + replied_ratio = fields.Float(compute="_compute_statistics", string='Replied Ratio') + bounced_ratio = fields.Float(compute="_compute_statistics", string='Bounced Ratio') @api.depends('ab_testing_winner_mailing_id') def _compute_ab_testing_completed(self): @@ -110,10 +111,10 @@ class UtmCampaign(models.Model): total = (stats['expected'] - stats['cancel']) or 1 delivered = stats['sent'] - stats['bounce'] vals = { - 'received_ratio': 100.0 * delivered / total, - 'opened_ratio': 100.0 * stats['open'] / total, - 'replied_ratio': 100.0 * stats['reply'] / total, - 'bounced_ratio': 100.0 * stats['bounce'] / total + 'received_ratio': float_round(100.0 * delivered / total, precision_digits=2), + 'opened_ratio': float_round(100.0 * stats['open'] / total, precision_digits=2), + 'replied_ratio': float_round(100.0 * stats['reply'] / total, precision_digits=2), + 'bounced_ratio': float_round(100.0 * stats['bounce'] / total, precision_digits=2) } campaign.update(vals) diff --git a/addons/mass_mailing/tests/test_mailing_ab_testing.py b/addons/mass_mailing/tests/test_mailing_ab_testing.py index b951cb094d5..02569670535 100644 --- a/addons/mass_mailing/tests/test_mailing_ab_testing.py +++ b/addons/mass_mailing/tests/test_mailing_ab_testing.py @@ -50,7 +50,7 @@ class TestMailingABTesting(MassMailCommon): self.ab_testing_mailing_2.mailing_trace_ids[:15].set_opened() self.ab_testing_mailing_ids.invalidate_recordset() - self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66) + self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66.67) self.assertEqual(self.ab_testing_mailing_2.opened_ratio, 50) with self.mock_mail_gateway(): @@ -82,7 +82,7 @@ class TestMailingABTesting(MassMailCommon): self.ab_testing_mailing_2.mailing_trace_ids[:15].set_opened() self.ab_testing_mailing_ids.invalidate_recordset() - self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66) + self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66.67) self.assertEqual(self.ab_testing_mailing_2.opened_ratio, 50) with self.mock_mail_gateway(): @@ -165,7 +165,7 @@ class TestMailingABTesting(MassMailCommon): self.ab_testing_mailing_2.mailing_trace_ids[:15].set_opened() self.ab_testing_mailing_ids.invalidate_recordset() - self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66) + self.assertEqual(self.ab_testing_mailing_1.opened_ratio, 66.67) self.assertEqual(self.ab_testing_mailing_2.opened_ratio, 50) with self.mock_mail_gateway(): diff --git a/addons/mass_mailing/views/mailing_mailing_views.xml b/addons/mass_mailing/views/mailing_mailing_views.xml index 56c706f6af9..ef423c295a7 100644 --- a/addons/mass_mailing/views/mailing_mailing_views.xml +++ b/addons/mass_mailing/views/mailing_mailing_views.xml @@ -130,14 +130,6 @@
- + - + + +