[IMP]: base_action_rule: Improvement for field 'name' + fix for trg_state_to
bzr revid: rpa@tinyerp.com-20100726092014-0anymi9z1g3b5cte
This commit is contained in:
parent
595fdbde61
commit
1d07f4092b
|
@ -60,7 +60,8 @@ class base_action_rule(osv.osv):
|
||||||
return [('', '')]
|
return [('', '')]
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
'name': fields.many2one('ir.model', 'Object', required=True),
|
'name': fields.char('Rule Name', size=64, required=True),
|
||||||
|
'model_id': fields.many2one('ir.model', 'Object', required=True),
|
||||||
'create_date': fields.datetime('Create Date', readonly=1),
|
'create_date': fields.datetime('Create Date', readonly=1),
|
||||||
'active': fields.boolean('Active', help="If the active field is set to False,\
|
'active': fields.boolean('Active', help="If the active field is set to False,\
|
||||||
it will allow you to hide the rule without removing it."),
|
it will allow you to hide the rule without removing it."),
|
||||||
|
@ -125,6 +126,7 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
_order = 'sequence'
|
_order = 'sequence'
|
||||||
|
|
||||||
def onchange_model_id(self, cr, uid, ids, name):
|
def onchange_model_id(self, cr, uid, ids, name):
|
||||||
|
#This is not a good solution as it will affect the domain only on onchange
|
||||||
res = {'domain':{'filter_id':[]}}
|
res = {'domain':{'filter_id':[]}}
|
||||||
if name:
|
if name:
|
||||||
model_name = self.pool.get('ir.model').read(cr, uid, [name], ['model'])
|
model_name = self.pool.get('ir.model').read(cr, uid, [name], ['model'])
|
||||||
|
@ -138,7 +140,7 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
def pre_action(self, cr, uid, ids, model, context=None):
|
def pre_action(self, cr, uid, ids, model, context=None):
|
||||||
# Searching for action rules
|
# Searching for action rules
|
||||||
cr.execute("SELECT model.model, rule.id FROM base_action_rule rule \
|
cr.execute("SELECT model.model, rule.id FROM base_action_rule rule \
|
||||||
LEFT JOIN ir_model model on (model.id = rule.name) \
|
LEFT JOIN ir_model model on (model.id = rule.model_id) \
|
||||||
where active")
|
where active")
|
||||||
res = cr.fetchall()
|
res = cr.fetchall()
|
||||||
# Check if any rule matching with current object
|
# Check if any rule matching with current object
|
||||||
|
@ -175,7 +177,7 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
if not context:
|
if not context:
|
||||||
context = {}
|
context = {}
|
||||||
for action_rule in self.browse(cr, uid, ids, context=context):
|
for action_rule in self.browse(cr, uid, ids, context=context):
|
||||||
model = action_rule.name.model
|
model = action_rule.model_id.model
|
||||||
obj_pool = self.pool.get(model)
|
obj_pool = self.pool.get(model)
|
||||||
obj_pool.__setattr__('create', self._create(obj_pool.create, model, context=context))
|
obj_pool.__setattr__('create', self._create(obj_pool.create, model, context=context))
|
||||||
obj_pool.__setattr__('write', self._write(obj_pool.write, model, context=context))
|
obj_pool.__setattr__('write', self._write(obj_pool.write, model, context=context))
|
||||||
|
@ -257,7 +259,7 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
@param context: A standard dictionary for contextual values """
|
@param context: A standard dictionary for contextual values """
|
||||||
ok = True
|
ok = True
|
||||||
if action.filter_id:
|
if action.filter_id:
|
||||||
if action.name.model == action.filter_id.model_id:
|
if action.model_id.model == action.filter_id.model_id:
|
||||||
context.update(eval(action.filter_id.context))
|
context.update(eval(action.filter_id.context))
|
||||||
obj_ids = obj._table.search(cr, uid, eval(action.filter_id.domain), context=context)
|
obj_ids = obj._table.search(cr, uid, eval(action.filter_id.domain), context=context)
|
||||||
if not obj.id in obj_ids:
|
if not obj.id in obj_ids:
|
||||||
|
@ -280,8 +282,6 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
ok = ok and (not action.trg_state_from or action.trg_state_from==obj.state)
|
ok = ok and (not action.trg_state_from or action.trg_state_from==obj.state)
|
||||||
if state_to:
|
if state_to:
|
||||||
ok = ok and (not action.trg_state_to or action.trg_state_to==state_to)
|
ok = ok and (not action.trg_state_to or action.trg_state_to==state_to)
|
||||||
elif action.trg_state_to:
|
|
||||||
ok = False
|
|
||||||
reg_name = action.regex_name
|
reg_name = action.regex_name
|
||||||
result_name = True
|
result_name = True
|
||||||
if reg_name:
|
if reg_name:
|
||||||
|
@ -355,7 +355,7 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||||
if not scrit:
|
if not scrit:
|
||||||
scrit = []
|
scrit = []
|
||||||
for action in self.browse(cr, uid, ids):
|
for action in self.browse(cr, uid, ids):
|
||||||
model_obj = self.pool.get(action.name.model)
|
model_obj = self.pool.get(action.model_id.model)
|
||||||
for obj in objects:
|
for obj in objects:
|
||||||
ok = self.do_check(cr, uid, action, obj, context=context)
|
ok = self.do_check(cr, uid, action, obj, context=context)
|
||||||
if not ok:
|
if not ok:
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
<record id="ir_cron_crm_action" model="ir.cron">
|
|
||||||
|
<record id="ir_cron_crm_action" model="ir.cron">
|
||||||
<field name="name">Check Action Rules</field>
|
<field name="name">Check Action Rules</field>
|
||||||
<field name="interval_number">4</field>
|
<field name="interval_number">4</field>
|
||||||
<field name="interval_type">hours</field>
|
<field name="interval_type">hours</field>
|
||||||
|
@ -10,10 +11,7 @@
|
||||||
<field eval="'base.action.rule'" name="model"/>
|
<field eval="'base.action.rule'" name="model"/>
|
||||||
<field eval="'_check'" name="function"/>
|
<field eval="'_check'" name="function"/>
|
||||||
<field eval="'()'" name="args"/>
|
<field eval="'()'" name="args"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -14,10 +14,11 @@
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Action Rule">
|
<form string="Action Rule">
|
||||||
<field name="name" select="1" on_change="onchange_model_id(name)"/>
|
<field name="name"/>
|
||||||
<field name="active"/>
|
<field name="model_id" select="1" on_change="onchange_model_id(model_id)"/>
|
||||||
|
<field name="filter_id" />
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
<field name="filter_id"/>
|
<field name="active"/>
|
||||||
<notebook colspan="4">
|
<notebook colspan="4">
|
||||||
<page string="Conditions">
|
<page string="Conditions">
|
||||||
<group col="2" colspan="2" name="model">
|
<group col="2" colspan="2" name="model">
|
||||||
|
|
Loading…
Reference in New Issue