[REF] marketing_campaign: replace workflow by python code

guidelines of naming the methods action_* not followed,
this module is being reworked in enterprise and removed
from community anyway.
This commit is contained in:
Denis Vermylen (dve)
2016-09-02 10:16:48 +02:00
committed by Thibault Delavallée
parent 82408e09ab
commit 74538fbc4b
5 changed files with 23 additions and 158 deletions
-1
View File
@@ -36,7 +36,6 @@ input segments, workflow.
'security/ir.model.access.csv',
'views/marketing_campaign_views.xml',
'data/marketing_campaign_data.xml',
'data/marketing_campaign_workflow.xml',
'report/campaign_analysis_view.xml',
],
'demo': ['data/marketing_campaign_demo.xml'],
@@ -1,142 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Marketing Campaigns -->
<record id="wkf_marketing_campaign" model="workflow">
<field name="name">marketing.campaign.basic</field>
<field name="osv">marketing.campaign</field>
<field name="on_create">True</field>
</record>
<!-- Activity -->
<record id="act_marketing_campaign_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="flow_start">True</field>
<field name="name">draft</field>
<field name="kind">function</field>
<field name="action">write({'state':'draft'})</field>
</record>
<record id="act_marketing_campaign_running" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="name">running</field>
<field name="kind">function</field>
<field name="action">state_running_set()</field>
</record>
<record id="act_marketing_campaign_done" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="name">done</field>
<field name="kind">function</field>
<field name="action">state_done_set()</field>
</record>
<record id="act_marketing_campaign_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign"/>
<field name="name">cancel</field>
<field name="flow_stop" eval="False"/>
<field name="kind">function</field>
<field name="action">state_cancel_set()</field>
</record>
<!-- Transition -->
<record id="trans_marketing_campaign_draft_running" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_draft"/>
<field name="act_to" ref="act_marketing_campaign_running"/>
<field name="signal">state_running_set</field>
</record>
<record id="trans_campaign_running_done" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_running"/>
<field name="act_to" ref="act_marketing_campaign_done"/>
<field name="signal">state_done_set</field>
</record>
<record id="trans_campaign_running_cancel" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_running"/>
<field name="act_to" ref="act_marketing_campaign_cancel"/>
<field name="signal">state_cancel_set</field>
</record>
<record id="trans_campaign_done_draft" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_done"/>
<field name="act_to" ref="act_marketing_campaign_draft"/>
<field name="signal">state_draft_set</field>
</record>
<record id="trans_campaign_cancelled_draft" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_cancel"/>
<field name="act_to" ref="act_marketing_campaign_draft"/>
<field name="signal">state_draft_set</field>
</record>
<!-- Marketing Campaign Segment -->
<record id="wkf_marketing_campaign_segment" model="workflow">
<field name="name">marketing.campaign.segment.basic</field>
<field name="osv">marketing.campaign.segment</field>
<field name="on_create">True</field>
</record>
<!-- Activity -->
<record id="act_marketing_campaign_segment_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="flow_start">True</field>
<field name="name">draft</field>
<field name="kind">function</field>
<field name="action">write({'state': 'draft'})</field>
</record>
<record id="act_marketing_campaign_segment_running" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="name">running</field>
<field name="kind">function</field>
<field name="action">state_running_set()</field>
</record>
<record id="act_marketing_campaign_segment_done" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="name">done</field>
<field name="kind">function</field>
<field name="action">state_done_set()</field>
</record>
<record id="act_marketing_campaign_segment_cancel" model="workflow.activity">
<field name="wkf_id" ref="wkf_marketing_campaign_segment"/>
<field name="name">cancel</field>
<field name="kind">function</field>
<field name="action">state_cancel_set()</field>
<field name="flow_stop" eval="False"/>
</record>
<!-- Transition -->
<record id="trans_marketing_campaign_segment_draft_running" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_draft"/>
<field name="act_to" ref="act_marketing_campaign_segment_running"/>
<field name="signal">state_running_set</field>
</record>
<record id="trans_campaign_segment_running_done" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_running"/>
<field name="act_to" ref="act_marketing_campaign_segment_done"/>
<field name="signal">state_done_set</field>
</record>
<record id="trans_campaign_segment_running_cancel" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_running"/>
<field name="act_to" ref="act_marketing_campaign_segment_cancel"/>
<field name="signal">state_cancel_set</field>
</record>
<record id="trans_campaign_segment_set_to_draft" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_cancel"/>
<field name="act_to" ref="act_marketing_campaign_segment_draft"/>
<field name="signal">state_draft_set</field>
</record>
<record id="trans_campaign_segment_done_draft" model="workflow.transition">
<field name="act_from" ref="act_marketing_campaign_segment_done"/>
<field name="act_to" ref="act_marketing_campaign_segment_draft"/>
<field name="signal">state_draft_set</field>
</record>
</odoo>
@@ -74,6 +74,10 @@ class MarketingCampaign(models.Model):
for campaign in self:
campaign.segments_count = len(campaign.segment_ids)
@api.multi
def state_draft_set(self):
return self.write({'state': 'draft'})
@api.multi
def state_running_set(self):
# TODO check that all subcampaigns are running
@@ -203,6 +207,10 @@ class MarketingCampaignSegment(models.Model):
self.ir_filter_id = False
return res
@api.multi
def state_draft_set(self):
return self.write({'state': 'draft'})
@api.multi
def state_running_set(self):
self.ensure_one()
@@ -12,14 +12,14 @@ class TestMarketingCampaignFlow(common.TransactionCase):
# In order to test process of compaign, I start compaign.
partner_channel = self.env.ref('marketing_campaign.marketing_campaign_openerppartnerchannel')
partner_channel.signal_workflow('state_running_set')
partner_channel.state_running_set()
# I check the campaign on Running mode after started.
self.assertEqual(partner_channel.state, 'running', 'The campaign should be on Running mode after having started.')
# I start this segment after assinged campaign.
segment0 = self.env.ref('marketing_campaign.marketing_campaign_segment0')
segment0.signal_workflow('state_running_set')
segment0.state_running_set()
# I check the segment on Running mode after started.
self.assertEqual(segment0.state, 'running', 'The segment should be on Running mode after having started.')
@@ -90,26 +90,26 @@ class TestMarketingCampaignFlow(common.TransactionCase):
workitems.preview()
# I cancel segmentation because of some activity.
segment0.signal_workflow('state_cancel_set')
segment0.state_cancel_set()
# I check the segmentation is canceled.
self.assertEqual(segment0.state, 'cancelled', 'Segment should be in cancelled state.')
# I reopen the segmentation.
segment0.signal_workflow('state_draft_set')
segment0.signal_workflow('state_running_set')
segment0.state_draft_set()
segment0.state_running_set()
# I check the segment on Running mode after started.
self.assertEqual(segment0.state, 'running', 'Segment should be in running state.')
# I close segmentation After completion of all activity.
segment0.signal_workflow('state_done_set')
segment0.state_done_set()
# I check the segmentation is done.
self.assertEqual(segment0.state, 'done', 'Segment should be in done state.')
# I close this campaing.
partner_channel.signal_workflow('state_done_set')
partner_channel.state_done_set()
# I check the campaing is done.
self.assertEqual(partner_channel.state, 'done', 'Campaign should be in done state.')
@@ -38,10 +38,10 @@
<field name="arch" type="xml">
<form string="Marketing Campaign">
<header>
<button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
<button name="state_done_set" string="Done" states="running" class="oe_highlight"/>
<button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
<button name="state_cancel_set" string="Cancel Campaign" states="running"/>
<button name="state_running_set" type="object" string="Run" states="draft" class="oe_highlight"/>
<button name="state_done_set" type="object" string="Done" states="running" class="oe_highlight"/>
<button name="state_draft_set" type="object" string="Set to Draft" states="done,cancelled"/>
<button name="state_cancel_set" type="object" string="Cancel Campaign" states="running"/>
<field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
</header>
<sheet string="Campaign">
@@ -185,10 +185,10 @@
<field name="arch" type="xml">
<form string="Marketing Campaign Segment">
<header>
<button name="state_running_set" string="Run" states="draft" class="oe_highlight"/>
<button name="state_done_set" string="Close" states="running" class="oe_highlight"/>
<button name="state_draft_set" string="Set to Draft" states="done,cancelled"/>
<button name="state_cancel_set" string="Cancel Segment" states="running"/>
<button name="state_running_set" type="object" string="Run" states="draft" class="oe_highlight"/>
<button name="state_done_set" type="object" string="Close" states="running" class="oe_highlight"/>
<button name="state_draft_set" type="object" string="Set to Draft" states="done,cancelled"/>
<button name="state_cancel_set" type="object" string="Cancel Segment" states="running"/>
<field name="state" readonly="1" widget="statusbar" statusbar_visible="draft,running,done"/>
</header>
<sheet string="Segments" >