[IMP] base_action_rule: Scheduler will be deactivated if all rules are deactivated.
authoruco (OpenERP) <uco@tinyerp.co.in>
Tue, 9 Feb 2010 09:23:00 +0000 (14:53 +0530)
committeruco (OpenERP) <uco@tinyerp.co.in>
Tue, 9 Feb 2010 09:23:00 +0000 (14:53 +0530)
bzr revid: uco@tinyerp.co.in-20100209092300-fbg1arakxbmer0jz

addons/base_action_rule/base_action_rule.py
addons/base_action_rule/base_action_rule_view.xml

index 0d9b2f2..ac490cb 100644 (file)
@@ -61,11 +61,12 @@ class base_action_rule(osv.osv):
         return True
     
     def button_deactivate_rule(self, cr, uid, ids, context=None):
+        checkids = self.pool.get('base.action.rule').search(cr, uid, [])
         cronobj = self.pool.get('ir.cron')
         cronids = cronobj.search(cr,uid,[('model','=','base.action.rule'),('active','=',True)])
-        if cronids:
-            cronobj.write(cr, uid, cronids, {'active': False})
         self.write(cr, uid, ids, {'state': 'deactivate'})
+        if cronids and all(rule.state == 'deactivate' for rule in self.browse(cr, uid, checkids)):
+            cronobj.write(cr, uid, cronids, {'active': False})
         return True
     
     def remind_partner(self, cr, uid, ids, context={}, attach=False):
@@ -120,7 +121,7 @@ class base_action_rule(osv.osv):
         Function called by the scheduler to process models
         '''
         ruleobj = self.pool.get('base.action.rule')
-        ids = ruleobj.search(cr, uid, [])
+        ids = ruleobj.search(cr, uid, [('state','=','activate')])
         rules = ruleobj.browse(cr, uid, ids, context) 
         return ruleobj._action(cr, uid, rules, False, context=context)
     
index 20a8641..92c1e38 100644 (file)
@@ -34,6 +34,7 @@
                        <field name="name" select="1"/>
                        <field name="max_level" select="1"/>
                        <field name="rule_lines"/>
+                       <field name="state" select="1"/>
                 </tree>
             </field>
                </record>