diff options
| author | qmo-odoo <qmo@odoo.com> | 2019-09-06 06:51:56 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-09-20 14:21:25 +0000 |
| commit | af601da9bedf035d3248ac2d284ef19aa6c08bde (patch) | |
| tree | 34d1b8b7eb505899890e846aa829305e895c7f73 /addons | |
| parent | ad98c634006c8943a6c1647c11d08e3437f725a7 (diff) | |
[IMP] utm, mass_mailing: clean utm.campaign model, form view and stat buttons
This commit cleans up the utm.campaign form view:
* Don't display mailing related things if no mailings on the campaign or
if the campaigns were not activated in mass_mailing settings;
* Stat button for the mass mailings was wrong, it was displaying the number
of mails instead of the number of mailings;
* Remove unused global click ratio field all other fields/methods related
to its computation;
* Remove ab testing cta on campaign form;
* Add groups on mailing related fields to avoid access errors;
LINKS
Task ID 2074813 (FP request UTM refactor)
PR: #37185
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/link_tracker/models/utm.py | 13 | ||||
| -rw-r--r-- | addons/mass_mailing/models/utm.py | 35 | ||||
| -rw-r--r-- | addons/mass_mailing/views/mailing_mailing_views.xml | 23 | ||||
| -rw-r--r-- | addons/mass_mailing/views/utm_campaign_views.xml | 49 | ||||
| -rw-r--r-- | addons/utm/data/utm_data.xml | 2 |
5 files changed, 40 insertions, 82 deletions
diff --git a/addons/link_tracker/models/utm.py b/addons/link_tracker/models/utm.py index 6d356ad7d5a..ebb343472e7 100644 --- a/addons/link_tracker/models/utm.py +++ b/addons/link_tracker/models/utm.py @@ -8,9 +8,6 @@ class UtmCampaign(models.Model): _inherit = ['utm.campaign'] _description = 'UTM Campaign' - items_total = fields.Integer(string="Number of items that are part of the campaign", compute="_compute_items_total") - clicked_total = fields.Integer(string="Number of items that are part of the campaign who generated a click", compute="_compute_items_total") - clicks_ratio = fields.Integer(string="Global Clicks Ratio for the campaign", compute="_compute_clicks_ratio") click_count = fields.Integer(string="Number of clicks generated by the campaign", compute="_compute_clicks_count") def _compute_clicks_count(self): @@ -22,13 +19,3 @@ class UtmCampaign(models.Model): for campaign in self: campaign.click_count = mapped_data.get(campaign.id, 0) - - def _compute_items_total(self): - """Empty method that will be implemented by inheriting classes""" - self.clicked_total = 0 - self.items_total = 0 - - @api.depends('items_total', 'clicked_total') - def _compute_clicks_ratio(self): - for campaign in self: - campaign.clicks_ratio = campaign.clicked_total / campaign.items_total * 100 if campaign.items_total > 0 else 0 diff --git a/addons/mass_mailing/models/utm.py b/addons/mass_mailing/models/utm.py index 46651b0f1ea..fe98c9c0ee5 100644 --- a/addons/mass_mailing/models/utm.py +++ b/addons/mass_mailing/models/utm.py @@ -7,10 +7,12 @@ from odoo import api, fields, models class UtmCampaign(models.Model): _inherit = 'utm.campaign' - mailing_ids = fields.One2many( + mailing_mail_ids = fields.One2many( 'mailing.mailing', 'campaign_id', + domain=[('mailing_type', '=', 'mail')], string='Mass Mailings') - mailing_clicks_ratio = fields.Integer(default=0, compute="_compute_mailing_clicks_ratio", string="Number of clicks") + mailing_mail_count = fields.Integer('Number of Mass Mailing', compute="_compute_mailing_mail_count") + mailing_clicks_ratio = fields.Integer(compute="_compute_mailing_clicks_ratio", string="Number of clicks") mailing_items = fields.Integer(compute="_compute_mailing_items", string='Mailings') mailing_clicked = fields.Integer(compute="_compute_mailing_items", string='Mailings Clicked') # stat fields @@ -28,26 +30,21 @@ class UtmCampaign(models.Model): replied_ratio = fields.Integer(compute="_compute_statistics", string='Replied Ratio') bounced_ratio = fields.Integer(compute="_compute_statistics", string='Bounced Ratio') - @api.depends('mailing_items', 'mailing_clicked') - def _compute_items_total(self): + @api.depends('mailing_mail_ids') + def _compute_mailing_mail_count(self): for campaign in self: - campaign.items_total += campaign.mailing_items - campaign.clicked_total += campaign.mailing_clicked + campaign.mailing_mail_count = len(campaign.mailing_mail_ids) def _compute_mailing_items(self): - super(UtmCampaign, self)._compute_clicks_ratio() - mapped_data = {} - - if self.ids: - query = """SELECT trace.campaign_id AS campaign_id, COUNT(DISTINCT(trace.id)) AS items_total, COUNT(DISTINCT(click.mailing_trace_id)) AS clicked_total - FROM mailing_trace AS trace - LEFT OUTER JOIN link_tracker_click as click ON click.mailing_trace_id = trace.id - WHERE trace.campaign_id IN %s - GROUP BY trace.campaign_id """ - params = [tuple(self.ids)] - self.env.cr.execute(query, params) - clicked_data = self.env.cr.dictfetchall() - mapped_data = {datum['campaign_id']: {'clicked_total': datum['clicked_total'], 'items_total': datum['items_total']} for datum in clicked_data} + query = """SELECT trace.campaign_id AS campaign_id, COUNT(DISTINCT(trace.id)) AS items_total, COUNT(DISTINCT(click.mailing_trace_id)) AS clicked_total + FROM mailing_trace AS trace + LEFT OUTER JOIN link_tracker_click as click ON click.mailing_trace_id = trace.id + WHERE trace.campaign_id IN %s + GROUP BY trace.campaign_id """ + params = [tuple(self.ids)] + self.env.cr.execute(query, params) + clicked_data = self.env.cr.dictfetchall() + mapped_data = {datum['campaign_id']: {'clicked_total': datum['clicked_total'], 'items_total': datum['items_total']} for datum in clicked_data} for campaign in self: campaign_items_values = mapped_data.get(campaign.id, {}) diff --git a/addons/mass_mailing/views/mailing_mailing_views.xml b/addons/mass_mailing/views/mailing_mailing_views.xml index 727b295b9a0..d06c64db04f 100644 --- a/addons/mass_mailing/views/mailing_mailing_views.xml +++ b/addons/mass_mailing/views/mailing_mailing_views.xml @@ -385,6 +385,7 @@ 'default_user_id': uid, } </field> + <field name="domain">[('mailing_type', '=', 'mail')]</field> <field name="help" type="html"> <p class="o_view_nocontent_smiling_face"> Create a new mailing @@ -416,28 +417,6 @@ </field> </record> - <record id="action_create_ab_mass_mailings_from_campaign" model="ir.actions.act_window"> - <field name="name">Mailings</field> - <field name="res_model">mailing.mailing</field> - <field name="view_mode">form,kanban,tree</field> - <field name="context">{ - 'search_default_assigned_to_me': 1, - 'search_default_campaign_id': [active_id], - 'default_campaign_id': active_id, - 'default_contact_ab_pc': 10, - 'default_user_id': uid, - } - </field> - <field name="help" type="html"> - <p class="o_view_nocontent_smiling_face"> - Create a new mailing - </p><p> - You don't need to import your mailing lists, you can easily - send emails<br/> to any contact saved in other Odoo apps. - </p> - </field> - </record> - <menuitem name="Mailings" id="mass_mailing_menu" parent="mass_mailing_menu_root" sequence="1" diff --git a/addons/mass_mailing/views/utm_campaign_views.xml b/addons/mass_mailing/views/utm_campaign_views.xml index 997841ec679..87c9d64a27a 100644 --- a/addons/mass_mailing/views/utm_campaign_views.xml +++ b/addons/mass_mailing/views/utm_campaign_views.xml @@ -5,35 +5,30 @@ <field name="model">utm.campaign</field> <field name="inherit_id" ref="utm.utm_campaign_view_form"/> <field name="arch" type="xml"> - <xpath expr="//sheet" position="before"> - <header style="min-height:31px;"> - <button name="%(action_create_mass_mailings_from_campaign)d" type="action" class="oe_highlight" string="Create a mailing"/> - <button name="%(action_create_ab_mass_mailings_from_campaign)d" type="action" class="btn-secondary" string="Create an A/B Testing Mailing"/> - <span><field name="stage_id" widget="statusbar" options="{'clickable': '1'}"/></span> - </header> + <xpath expr="//header" position="inside"> + <button name="%(action_create_mass_mailings_from_campaign)d" type="action" class="oe_highlight" groups="mass_mailing.group_mass_mailing_campaign" string="Send new Mailing"/> </xpath> <xpath expr="//div[hasclass('oe_button_box')]" position="inside"> <button name="%(action_view_mass_mailings_from_campaign)d" - type="action" class="oe_stat_button order-11" icon="fa-envelope-o"> - <field name="mailing_items" widget="statinfo" string="Mailings"/> + type="action" class="oe_stat_button order-9" icon="fa-envelope-o" + attrs="{'invisible': [('mailing_mail_count', '=', 0)]}" groups="mass_mailing.group_mass_mailing_campaign"> + <field name="mailing_mail_count" widget="statinfo" string="Mailings"/> </button> </xpath> <xpath expr="//notebook" position="inside"> - <page string="Mailings" attrs="{}"> - <group groups="base.group_no_one"> - <field name="mailing_ids" readonly="1" nolabel="1"> - <tree> - <field name="name"/> - <field name="sent_date"/> - <field name="state"/> - <field name="delivered"/> - <field name="opened"/> - <field name="replied"/> - <field name="bounced"/> - <button name="action_duplicate" type="object" string="Duplicate"/> - </tree> - </field> - </group> + <page string="Mailings" attrs="{'invisible': [('mailing_mail_count', '=', 0)]}"> + <field name="mailing_mail_ids" readonly="1" nolabel="1"> + <tree> + <field name="name"/> + <field name="sent_date"/> + <field name="state"/> + <field name="delivered"/> + <field name="opened"/> + <field name="replied"/> + <field name="bounced"/> + <button name="action_duplicate" type="object" string="Duplicate"/> + </tree> + </field> <div class="o_utm_campaign_mass_mailing_substats d-flex justify-content-end align-items-center"> <div class="d-flex justify-content-end align-items-center flex-column"> <label for="received_ratio" string="Delivered" class="m-0"/> @@ -83,19 +78,19 @@ <field name="inherit_id" ref="utm.utm_campaign_view_kanban"/> <field name="arch" type="xml"> <xpath expr="//field[@name='user_id']" position="after"> - <field name="mailing_ids"/> + <field name="mailing_mail_ids"/> </xpath> <xpath expr="//div[hasclass('o_kanban_record_headings')]"> <a name="%(action_view_mass_mailings_from_campaign)d" type="action" class="oe_mailings o_kanban_record_subtitle d-inline-block"> - <t t-raw="record.mailing_ids.raw_value.length"/> Mailings + <t t-raw="record.mailing_mail_ids.raw_value.length"/> Mailings </a> </xpath> </field> </record> <record id="action_view_utm_campaigns" model="ir.actions.act_window"> - <field name="name">UTM Campaigns</field> + <field name="name">Campaigns</field> <field name="res_model">utm.campaign</field> <field name="view_mode">kanban,tree,form</field> <field name="help" type="html"> @@ -117,7 +112,7 @@ parent="mass_mailing_configuration" sequence="1" groups="mass_mailing.group_mass_mailing_campaign" action="utm.action_view_utm_stage"/> - + <menuitem id="mass_mailing_tag_menu" parent="mass_mailing_configuration" action="utm.action_view_utm_tag" diff --git a/addons/utm/data/utm_data.xml b/addons/utm/data/utm_data.xml index b8c77be0dc7..8e940fc0f88 100644 --- a/addons/utm/data/utm_data.xml +++ b/addons/utm/data/utm_data.xml @@ -2,7 +2,7 @@ <odoo> <!-- UTM Stage --> <record id="default_utm_stage" model="utm.stage"> - <field name="name">Default</field> + <field name="name">New</field> <field name="sequence">10</field> </record> <record id="campaign_stage_1" model="utm.stage"> |
