summaryrefslogtreecommitdiff
path: root/addons/mass_mailing_sms/views
diff options
context:
space:
mode:
authorTiffany Chang (tic) <tic@odoo.com>2020-02-13 12:59:34 +0000
committerTiffany Chang (tic) <tic@odoo.com>2020-03-26 10:15:18 +0000
commitf9ff21a200b0c5553ba6d1314e4d9f54d3ebdd7d (patch)
treeaf7ff5f3eb86d2a0ee79a23aac6397d75820f524 /addons/mass_mailing_sms/views
parent3a112c7b78d04479e7f8d27adaeb0753bdb0111c (diff)
[IMP] mass_mailing_(sms): Add unblacklisting button
Previously a blacklisted phone number or email address could only be removed from their respective blacklist by going to the corresponding blacklist view [in mass_mailing_(sms)] and manually archiving/deactiviting the entry. All users could see that an email was blacklisted via an fa-ban icon added next to their corresponding field in the modules: crm, mass_mailing, mass_mailing_sms, and contacts (via extension). This commit adds additional fa-ban icons next to blacklisted phone numbers and makes all instances of these icons clickable to remove them from their corresponding blacklist using a wizard. There are several limitations to this implementation including: 1. If both a mobile and phone number field appear within a crm lead instance, then only the mobile field will indicate if it is blacklisted (due to current implementation of PhoneMixin which only checks 1 phone value against the blacklist and "sms" which returns mobile numbers first). I.e. if a phone field value is blacklisted, but a value is typed into the mobile field, then the phone field will never indicate that it is blacklisted. 2. If someone clicks on a unblacklisting icon after changing the corresponding field value without clicking off the field input, then the latest typed in value will be the one submitted for unblacklisting, which may not actually be blacklisted (due to "is_blacklisted" flag being a computed field and it not having a chance to re-compute to hide the button). 3. If someone changes values in the blacklist, then someone who already has a form open will not see icon disappear until something triggers a re-compute of the "phone_sanitized_blacklisted" flag (this was already the case with the icon, but now a user may try to unblacklist a value that is already unblacklisted.) 4. Since the icon needs to be visible by everyone to indicate whether or not a phone/email is blacklisted, users without corresponding unblacklist permissions will be able to click on the icon. When they click on it, they will be informed they do not have permission to unblacklist. A wizard was determined to be the best way to implement this unblacklisting for the following reasons: - A "Unblacklisting Reason" is needed and will not be stored as a field. - A field widget is unable to do this due to security settings + inability to refresh view after unblacklisting with a "Unblacklisting Reason" without wiping unsaved changes. Additionally, to better align with GDPR, the corresponding form view for the phone/email blacklist has been updated to use the same wizard to track "Reason for unblacklisting". Unfortunately there is no straightforward way to prevent direct "Archive" action, so users are still able to bypass unblacklisting without being asked for a "reason for unblacklisting". Supports task: 2117635 Upgrade PR: odoo/upgrade#939 COM PR: odoo/odoo#45315
Diffstat (limited to 'addons/mass_mailing_sms/views')
-rw-r--r--addons/mass_mailing_sms/views/mailing_contact_views.xml14
1 files changed, 8 insertions, 6 deletions
diff --git a/addons/mass_mailing_sms/views/mailing_contact_views.xml b/addons/mass_mailing_sms/views/mailing_contact_views.xml
index 5c868c5d9cf..f861ed15d81 100644
--- a/addons/mass_mailing_sms/views/mailing_contact_views.xml
+++ b/addons/mass_mailing_sms/views/mailing_contact_views.xml
@@ -13,12 +13,12 @@
<separator/>
<filter string="Valid SMS Recipients"
name="filter_valid_sms_recipient"
- domain="[('opt_out', '=', False), ('phone_blacklisted', '=', False), ('phone_sanitized', '!=', False)]"
+ domain="[('opt_out', '=', False), ('phone_sanitized_blacklisted', '=', False), ('phone_sanitized', '!=', False)]"
invisible="not context.get('default_list_ids')"/>
<separator/>
<filter string="Exclude Blacklisted Phone"
name="filter_not_phone_bl"
- domain="[('phone_blacklisted', '=', False)]"/>
+ domain="[('phone_sanitized_blacklisted', '=', False)]"/>
</xpath>
</field>
</record>
@@ -32,7 +32,7 @@
<xpath expr="//field[@name='is_blacklisted']" position="after">
<field name="mobile"/>
<field name="phone_sanitized" invisible="1"/>
- <field name="phone_blacklisted"/>
+ <field name="phone_sanitized_blacklisted"/>
</xpath>
</field>
</record>
@@ -45,11 +45,13 @@
<xpath expr="//div[@name='email_details']" position="after">
<label for="mobile" class="oe_inline"/>
<div class="o_row o_row_readonly" name="phone_details">
- <i class="fa fa-ban" style="color: red;" role="img" title="This number is blacklisted for SMS Marketing"
- aria-label="Phone Blacklisted" attrs="{'invisible': [('phone_blacklisted', '=', False)]}" groups="base.group_user"></i>
+ <button name="phone_action_blacklist_remove" class="fa fa-ban text-danger"
+ title="This phone number is blacklisted for SMS Marketing. Click to unblacklist."
+ type="object" context="{'default_phone': mobile}" groups="base.group_user"
+ attrs="{'invisible': [('mobile_blacklisted', '=', False)]}"/>
<field name="mobile" widget="phone" options="{'enable_sms': True}"/>
<field name="phone_sanitized" invisible="1"/>
- <field name="phone_blacklisted" invisible="1"/>
+ <field name="mobile_blacklisted" invisible="1"/>
</div>
</xpath>
</field>