Display block rate instead of absolute value

The rate provides a better picture of the unsubscription of the marketing
scenario.
This commit is contained in:
Cédric Krier committed 2023-10-17 18:42:41 +02:00
1 parent 42b5ba1377
commit f671cb8532
5 files changed
+34 -2

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* Display block rate instead of absolute value
* Display email rates instead of absolute value
Version 7.0.0 - 2023-10-30
@@ -74,6 +74,9 @@ class Scenario(Workflow, ModelSQL, ModelView):
fields.Integer("Records"), 'get_record_count')
record_count_blocked = fields.Function(
fields.Integer("Records Blocked"), 'get_record_count')
block_rate = fields.Function(
fields.Float("Block Rate"),
'get_rate')
unsubscribable = fields.Boolean(
"Unsubscribable",
help="If checked parties are also unsubscribed from the scenario.")
@@ -169,6 +172,15 @@ class Scenario(Workflow, ModelSQL, ModelView):
pass
return count
@classmethod
def get_rate(cls, scenarios, names):
rates = {name: defaultdict(float) for name in names}
for scenario in scenarios:
if 'block_rate' in names and scenario.record_count:
rates['block_rate'][scenario.id] = round(
scenario.record_count_blocked / scenario.record_count, 2)
return rates
@classmethod
def validate_fields(cls, scenarios, field_names):
super().validate_fields(scenarios, field_names)
@@ -111,6 +111,8 @@ Trigger scenario::
1
>>> scenario.record_count_blocked
0
>>> scenario.block_rate
0.0
Check email sent::
@@ -83,6 +83,14 @@ Trigger scenario::
>>> record, = Record.find([])
>>> assertEqual(record.record, sale)
>>> scenario.reload()
>>> scenario.record_count
1
>>> scenario.record_count_blocked
0
>>> scenario.block_rate
0.0
Block and unsubscribe::
>>> record.click('block')
@@ -91,6 +99,14 @@ Block and unsubscribe::
>>> party.reload()
>>> assertEqual(party.marketing_scenario_unsubscribed, [scenario])
>>> scenario.reload()
>>> scenario.record_count
1
>>> scenario.record_count_blocked
1
>>> scenario.block_rate
1.0
Create a new sale::
>>> sale = Sale(party=party)
@@ -5,7 +5,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="name" expand="2"/>
<field name="model" expand="1"/>
<field name="unsubscribable" optional="0"/>
<field name="record_count"/>
<field name="record_count_blocked"/>
<field name="block_rate" factor="100">
<suffix string="%" name="block_rate"/>
</field>
<field name="state"/>
</tree>