在res_config中设置默认持续时间

时间:2013-02-07 13:54:41

标签: python default openerp

我有一个模块,创建日期(当然,创建日期)和截止日期。

问题是我希望能够根据创建日期将默认值设置为此截止日期。 但我希望能够从(假设)res_config动态配置它。

e.g。

如果我将res_config中的默认值配置为5天,我希望截止日期的默认值在创建日期前5天填充日期。

这可能吗?

谢谢

1 个答案:

答案 0 :(得分:2)

我设法使用模型ir.configure_parameter执行此操作。

在res_config.py中:

class my_configuration(osv.osv_memory):
    _inherit = ['res.confi.settings']
    _columns = {
       'default_deadline' : fields.integer('Days per default', help="""Help field"""),
    }
    ...
    def set_default_deadline(self, cr, uid, ids, context=None):
        config = self.browse(cr, uid, ids)
        config = config and config[0]
        val = '%s' %(config.default_deadline) or '10'
        self.pool.geet('ir.config_parameter').set_param(cr,uid, 'key_value', val)
        return True

Whit我们创建了一个系统参数。它实际上是作为从'key_value'到val的映射创建的,这是一个字符串,因此我们必须在必要时将其强制转换为所需的类型。 在我的例子中,y创建了一个函数来获取我的模块中的截止日期:

def _get_deadline_date(self, cr, uid, context=None):
    val = self.pool.get('ir.config_parameter').get_param(cr, uid, 'key_value')
    try:
        val = int(val)
    except: 
        # Just in case...
        val = 30
    return (datetime.now() + timedelta(days=val)).strftime('%Y,%m,%d')

_defaults = {
    'deadline_date': lambda s, cr, uid, c: s._get_deadline_date(self, cr, uid,     context=c),
}

谢谢,希望它有所帮助!